% FNTS.TEX v3.0  Copyright (c) 1994-1999 Harold W. de Wijn
%
% FONT SELECTION FOR PLAIN TeX, featuring
% - 21 sizes in the range 7 to 154 points;
% - 16 typefaces, including Italic Bold, Calligraphic Bold, Sans Serif,
%   Sans Serif Italic, and Sans Serif Bold;
% - Boldmath, inclusive of subscripts, superscripts, and symbols.
%
% File is provided `as is' with no warranty of any kind.
%
% For documentation see file FNTS.DOC
%
% Please direct comments to the author at H.W.deWijn@phys.uu.nl

\message{v3.0  Copyright (c) 1994-1999 Harold W. de Wijn}
\catcode`@=11
% Non bis in idem! (Do not read file twice!)
\ifx\@FONTS\undefined\relax\else\catcode`@=12 \endinput\fi


% FAMILIES ALREADY DEFINED IN TeX
%               %  family:
%               %  0  roman              \rm
%               %  1  math italic        \mit (math), \oldstyle
%               %  2  symbols            \cal (math)
%               %  3  math extension
% \newfam\itfam %  4  text italic        \it
% \newfam\slfam %  5  slanted roman      \sl
% \newfam\bffam %  6  boldface           \bf
% \newfam\ttfam %  7  typewriter         \tt

% ADDITIONAL FAMILIES
\newfam\mibfam  %  8  math italic bold   \mib (math), \boldoldstyle
\newfam\bsyfam  %  9  symbol bold        \boldcal (math)
\newfam\itbfam  % 10  text italic bold   \itb
\newfam\sffam   % 11  sans serif         \sf
\newfam\sfifam  % 12  sans serif italic  \sfi
\newfam\sfbfam  % 13  sans serif bold    \sfb


% MAGSTEP 0 UNTIL 15
%\def\magstephalf{1095 }   % defined in plain TeX
\def\magsteponehalf{1314 }
\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\or
   2986\or 3583\or 4300\or 5160\or 6192\or 7430\or 8916\or 10699\or
   12839\or 15407\fi\relax}


% TO SAVE TOKENS
\def\@height{height} \def\@depth{depth} \def\@width{width}
\def\@magstep#1{ scaled \magstep{#1}\relax}
\def\@magstephalf{ scaled \magstephalf\relax}
\def\@magsteponehalf{ scaled \magsteponehalf\relax}
\def\@scaled#1{ scaled #1\relax}
\def\@plus{ plus }
\def\@minus{ minus }


% MODIFICATION OF \raggedright TO INCLUDE AUTOMATIC ADJUSTMENT WITH
% CHANGE OF FONT SIZE
\newif\ifr@ggedright     % signals subsequent font-size commands
\newif\ifttr@ggedright   % to adjust \raggedright
\def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em
   \r@ggedrighttrue\relax}
\def\ttraggedright{\tt\rightskip\z@ plus2em\ttr@ggedrighttrue\relax}
   % for use with \tt only


% DEFINITIONS MODIFIED FROM PLAIN TO INCLUDE \xp@ INSTEAD OF \p@
% \xp@ replaces \p@ and pt to ensure proper scaling with the font size.
% Note: Scaling \p@ itself, which would have avoided redefinition of the
% macros below, leads to unpredictable output.
\newdimen\xp@

\def\vdots{\vbox{\baselineskip4\xp@ \lineskiplimit\z@
    \kern6\xp@\hbox{.}\hbox{.}\hbox{.}}}
\def\ddots{\mathinner{\mkern1mu\raise7\xp@\vbox{\kern7\xp@\hbox{.}}\mkern2mu
    \raise4\xp@\hbox{.}\mkern2mu\raise\xp@\hbox{.}\mkern1mu}}

\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr
      \rightarrowfill\crcr\noalign{\kern-\xp@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr
      \leftarrowfill\crcr\noalign{\kern-\xp@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\xp@}
      \downbracefill\crcr\noalign{\kern3\xp@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
      $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\xp@\nointerlineskip}
      \upbracefill\crcr\noalign{\kern3\xp@}}}}\limits}

\def\big#1{{\hbox{$\left#1\vbox to8.5\xp@{}\right.\n@space$}}}
\def\Big#1{{\hbox{$\left#1\vbox to11.5\xp@{}\right.\n@space$}}}
\def\bigg#1{{\hbox{$\left#1\vbox to14.5\xp@{}\right.\n@space$}}}
\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\xp@{}\right.\n@space$}}}

\def\@vereq#1#2{\lower.5\xp@\vbox{\lineskiplimit\maxdimen\lineskip-.5\xp@
    \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}

\def\bordermatrix#1{\begingroup \m@th
  \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\xp@\global\let\cr\endline}}%
    \ialign{$##$\hfil\kern2\xp@\kern\p@renwd&\thinspace\hfil$##$\hfil
      &&\quad\hfil$##$\hfil\crcr
      \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
      #1\crcr\omit\strut\cr}}%
  \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
  \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
  \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne
    \global\setbox\@ne\vbox{\box\@ne\kern2\xp@}%
    \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
  \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}

\def\raggedbottom{\topskip 10\xp@ plus60\xp@ \r@ggedbottomtrue}
\def\normalbottom{\topskip 10\xp@ \r@ggedbottomfalse} % undoes \raggedbottom

\def\endinsert{\egroup % finish the \vbox
  \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\xp@
    \advance\dimen@\pagetotal \advance\dimen@-\pageshrink
    \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
  \if@mid \bigskip\box\z@\bigbreak
  \else\insert\topins{\penalty100 % floating insertion
    \splittopskip\z@skip
    \splitmaxdepth\maxdimen \floatingpenalty\z@
    \ifp@ge \dimen@\dp\z@
    \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
    \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}

\def\footnoterule{\kern-3\xp@
  \hrule width 2truein \kern 2.6\xp@} % the \hrule is .4pt high


% DEFINITIONS MODIFIED FROM PLAIN TO INCLUDE \xp@ INSTEAD OF pt
\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
      \not\mathrel{\mkern14mu}\crcr
      \noalign{\nointerlineskip}
      \mkern2.5mu\leaders\hrule height.34\xp@\hfill\mkern2.5mu\crcr}}}}
\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2\xp@
      \hbox{$#1\rightharpoonup$}\crcr
      $#1\leftharpoondown$}}}}


% MODIFIED FOR THE SAKE OF BOLDMATH (\rm -> \fam\z@)
\def\log{\mathop{\fam\z@ log}\nolimits}
\def\lg{\mathop{\fam\z@ lg}\nolimits}
\def\ln{\mathop{\fam\z@ ln}\nolimits}
\def\lim{\mathop{\fam\z@ lim}}
\def\limsup{\mathop{\fam\z@ lim\,sup}}
\def\liminf{\mathop{\fam\z@ lim\,inf}}
\def\sin{\mathop{\fam\z@ sin}\nolimits}
\def\arcsin{\mathop{\fam\z@ arcsin}\nolimits}
\def\sinh{\mathop{\fam\z@ sinh}\nolimits}
\def\cos{\mathop{\fam\z@ cos}\nolimits}
\def\arccos{\mathop{\fam\z@ arccos}\nolimits}
\def\cosh{\mathop{\fam\z@ cosh}\nolimits}
\def\tan{\mathop{\fam\z@ tan}\nolimits}
\def\arctan{\mathop{\fam\z@ arctan}\nolimits}
\def\tanh{\mathop{\fam\z@ tanh}\nolimits}
\def\cot{\mathop{\fam\z@ cot}\nolimits}
\def\coth{\mathop{\fam\z@ coth}\nolimits}
\def\sec{\mathop{\fam\z@ sec}\nolimits}
\def\csc{\mathop{\fam\z@ csc}\nolimits}
\def\max{\mathop{\fam\z@ max}}
\def\min{\mathop{\fam\z@ min}}
\def\sup{\mathop{\fam\z@ sup}}
\def\inf{\mathop{\fam\z@ inf}}
\def\arg{\mathop{\fam\z@ arg}\nolimits}
\def\ker{\mathop{\fam\z@ ker}\nolimits}
\def\dim{\mathop{\fam\z@ dim}\nolimits}
\def\hom{\mathop{\fam\z@ hom}\nolimits}
\def\det{\mathop{\fam\z@ det}}
\def\exp{\mathop{\fam\z@ exp}\nolimits}
\def\Pr{\mathop{\fam\z@ Pr}}
\def\gcd{\mathop{\fam\z@ gcd}}
\def\deg{\mathop{\fam\z@ deg}\nolimits}

\def\bmod{\nonscript\mskip-\medmuskip\mkern5mu
  \mathbin{\fam\z@ mod}\penalty900\mkern5mu\nonscript\mskip-\medmuskip}
\def\pmod#1{\allowbreak\mkern18mu({\fam\z@ mod}\,\,#1)}


% BUT THE FOLLOWING SHOULD ONLY PARTIALLY SCALE WITH THE FONT SIZE!
\newdimen\headlineskip
\newdimen\headlineskipa
\newdimen\footlineskip
\def\makeheadline{\vbox to\z@{\vskip-\headlineskip\vskip\topskip
  \line{\vbox to\headlineskipa{}\the\headline}\vss}\nointerlineskip}
\def\makefootline{\baselineskip\footlineskip\line{\the\footline}}


% FOOTLINE, HEADLINE
\newif\if@firstsize\@firstsizetrue
\let\footlinefont\rm   % \fam0\tenrm is default
\footline={\hss\footlinefont\folio\hss}
% \headline={\footlinefont\hfil} % headline is normally blank


% NONZERO DIMENSIONS AND GLUES MODIFIED FROM PLAIN
\newcount\tightenp@r@meter\tightenp@r@meter=\z@  %default
\newdimen\yp@
\def\norm@ldispl@ys{%
   \abovedisplayskip=12\xp@ \@plus3\xp@ \@minus9\xp@
   \abovedisplayshortskip=0\xp@ \@plus3\xp@
   \belowdisplayskip=12\xp@ \@plus3\xp@ \@minus9\xp@
   \belowdisplayshortskip=7\xp@ \@plus3\xp@ \@minus4\xp@}
\def\normaldisplays{\tightenp@r@meter=\z@\norm@ldispl@ys}
\def\tightendisplays#1{%
   \tightenp@r@meter=#1\norm@ldispl@ys   % reset to avoid cumulation
   \yp@=-\tightenp@r@meter\xp@ \divide\yp@ by 100
   \ifdim\yp@<\z@
   \advance\abovedisplayskip 6\yp@ \@minus4.5\yp@  % reducing abilty to
   \advance\abovedisplayshortskip \yp@             % shrink for positive
   \advance\belowdisplayskip 6\yp@ \@minus4.5\yp@  % \tightenp@r@meter's
   \advance\belowdisplayshortskip 3\yp@ \@minus2\yp@
   \else
   \advance\abovedisplayskip 6\yp@       % just add white for
   \advance\abovedisplayshortskip 6\yp@  % negative \tightenp@r@meter's
   \advance\belowdisplayskip 6\yp@
   \advance\belowdisplayshortskip 6\yp@
   \fi}
\def\s@tdimen{%
   \delimitershortfall=5\xp@
   \nulldelimiterspace=1.2\xp@
   \scriptspace=0.5\xp@
%%\parindent=20pt               % We leave this one!
%%\parskip=0pt plus 1pt         % We leave this one!
   \ifnum\tightenp@r@meter=\z@\norm@ldispl@ys\else  % Default is scaling
     \tightendisplays\tightenp@r@meter\fi               % with font size
   \topskip=10\xp@
   \splittopskip=10\xp@
   \smallskipamount=3\xp@ \@plus1\xp@ \@minus1\xp@
   \medskipamount=6\xp@ \@plus2\xp@ \@minus2\xp@
   \bigskipamount=12\xp@ \@plus4\xp@ \@minus4\xp@
   \normalbaselineskip 12\xp@
   \normallineskip=1\xp@
   \jot=3\xp@
   \setbox\strutbox=\hbox{\vrule \@height8.5\xp@ \@depth3.5\xp@ \@width\z@}%
   \setbox0=\hbox{$\mathchar"0342$}\p@renwd=\wd0  %equivalent tenex B in TeX
   \normalbaselines
% and finally setting \footlinefont, etc
   \if@firstsize\global\@firstsizefalse
     \headlineskip15.5pt\advance\headlineskip17\xp@\headlineskipa8.5\xp@
     \footlineskip15.5pt\advance\footlineskip8.5\xp@
% To avoid an unpredictable \footline, \fam0\<size>rm associated with
% the font size called first is included in \footlinefont.
     \futurelet\footlinefont
   \fi}


% FONT SIZES
\def\v@{five}            \def\vi@{six}            \def\vii@{seven}
\def\viii@{eight}        \def\ix@{nine}           \def\x@{ten}
\def\xi@{eleven}         \def\xii@{twelve}        \def\xiii@{thirteen}
\def\xiv@{fourteen}      \def\xvii@{seventeen}    \def\xxi@{twentyone}
\def\xxv@{twentyfive}    \def\xxx@{thirty}        \def\xxxvi@{thirtysix}
\def\xliii@{fortythree}  \def\lii@{fiftytwo}      \def\lxii@{sixtytwo}
\def\lxxiv@{seventyfour} \def\lxxxix@{eightynine} \def\cvii@{hundredseven}
\def\cxxviii@{hundredtwentyeight}
\def\cliv@{hundredfiftyfour}


% ROLL CALL OF FONTS
%\def\@fiverm{cmr5}   % \fiverm defined in plain TeX
%\def\@fivei{cmmi5}   % \fivei  defined in plain TeX
%def\@fivesy{cmsy5}   % \fivesy defined in plain TeX
%\def\@fiveex{cmex7\@scaled{714}}  % not needed
%\def\@fiveit{cmti7\@scaled{714}}  % not needed
%\def\@fivesl{cmsl8\@scaled{625}}  % not needed
%def\@fivebf{cmbx5}   % \fivebf defined in plain TeX
%\def\@fivett{cmtt8\@scaled{625}}  % not needed
\def\@fivemib{cmmib5\skewchar\fivemib='177}
\def\@fivebsy{cmbsy5}
%\def\@fiveitb{cmbxti10\@scaled{500}}  % not needed
\def\@fivesf{cmss8\@scaled{625}}
\def\@fivesfi{cmssi8\@scaled{625}}
\def\@fivesfb{cmssdc10\@scaled{500}}  % does not Metafont well at 300 dpi
%\def\@fivesc{cmcsc8\@scaled{625}}  % not needed

\def\@sixrm{cmr6}
\def\@sixi{cmmi6\skewchar\sixi='177}
\def\@sixsy{cmsy6\skewchar\sixsy='60}
%\def\@sixex{cmex7\@scaled{857}}  % not needed
%\def\@sixit{cmti7\@scaled{857}}  % not needed
%\def\@sixsl{cmsl8\@scaled{750}}  % not needed
\def\@sixbf{cmbx6}
%\def\@sixtt{cmtt8\@scaled{750}}  % not needed
\def\@sixmib{cmmib6\skewchar\sixmib='177}
\def\@sixbsy{cmbsy6}
%\def\@sixitb{cmbxti10\@scaled{600}}  % not needed
\def\@sixsf{cmss8\@scaled{750}}
\def\@sixsfi{cmssi8\@scaled{750}}
\def\@sixsfb{cmssdc10\@scaled{600}}
%\def\@sixsc{cmcsc8\@scaled{750}}  % not needed

%\def\@sevenrm{cmr7}   % \sevenrm defined in plain TeX
%\def\@seveni{cmmi7}   % \seveni  defined in plain TeX
%def\@sevensy{cmsy7}   % \sevensy defined in plain TeX
\def\@sevenex{cmex7}
\def\@sevenit{cmti7}
\def\@sevensl{cmsl8\@scaled{875}}
%\def\@sevenbf{cmbx7}  % \sevenbf defined in plain TeX
\def\@seventt{cmtt8\@scaled{875}}
\def\@sevenmib{cmmib7\skewchar\sevenmib='177}
\def\@sevenbsy{cmbsy7}
\def\@sevenitb{cmbxti10\@scaled{700}}
\def\@sevensf{cmss8\@scaled{875}}
\def\@sevensfi{cmssi8\@scaled{875}}
\def\@sevensfb{cmssdc10\@scaled{700}}
\def\@sevensc{cmcsc8\@scaled{875}}

\def\@eightrm{cmr8}
\def\@eighti{cmmi8\skewchar\eighti='177}
\def\@eightsy{cmsy8\skewchar\eightsy='60}
\def\@eightex{cmex8}
\def\@eightit{cmti8}
\def\@eightsl{cmsl8}
\def\@eightbf{cmbx8}
\def\@eighttt{cmtt8}
\def\@eightmib{cmmib8\skewchar\eightmib='177}
\def\@eightbsy{cmbsy8}
\def\@eightitb{cmbxti10\@scaled{800}}
\def\@eightsf{cmss8}
\def\@eightsfi{cmssi8}
\def\@eightsfb{cmssdc10\@scaled{800}}
\def\@eightsc{cmcsc8}

\def\@ninerm{cmr9}
\def\@ninei{cmmi9\skewchar\ninei='177}
\def\@ninesy{cmsy9\skewchar\ninesy='60}
\def\@nineex{cmex9}
\def\@nineit{cmti9}
\def\@ninesl{cmsl9}
\def\@ninebf{cmbx9}
\def\@ninett{cmtt9}
\def\@ninemib{cmmib9\skewchar\ninemib='177}
\def\@ninebsy{cmbsy9}
\def\@nineitb{cmbxti10\@scaled{900}}
\def\@ninesf{cmss9}
\def\@ninesfi{cmssi9}
\def\@ninesfb{cmssdc10\@scaled{900}}
\def\@ninesc{cmcsc9}

%\def\@tenrm{cmr10}    % \tenrm defined in plain TeX
%\def\@teni{cmmi10}    % \teni  defined in plain TeX
%\def\@tensy{cmsy10}   % \tensy defined in plain TeX
%\def\@tenex{cmex10}   % \tenex defined in plain TeX
%\def\@tenit{cmti10}   % \tenit defined in plain TeX
%\def\@tensl{cmsl10}   % \tensl defined in plain TeX
%\def\@tenbf{cmbx10}   % \tenbf defined in plain TeX
%\def\@tentt{cmtt10}   % \tentt defined in plain TeX
\def\@tenmib{cmmib10\skewchar\tenmib='177}
\def\@tenbsy{cmbsy10}
\def\@tenitb{cmbxti10}
\def\@tensf{cmss10}
\def\@tensfi{cmssi10}
\def\@tensfb{cmssdc10}
\def\@tensc{cmcsc10}

\def\@elevenrm{cmr10\@magstephalf}
\def\@eleveni{cmmi10\@magstephalf\skewchar\eleveni='177}
\def\@elevensy{cmsy10\@magstephalf\skewchar\elevensy='60}
\def\@elevenex{cmex10\@magstephalf}
\def\@elevenit{cmti10\@magstephalf}
\def\@elevensl{cmsl10\@magstephalf}
\def\@elevenbf{cmbx10\@magstephalf}
\def\@eleventt{cmtt10\@magstephalf}
\def\@elevenmib{cmmib10\@magstephalf\skewchar\elevenmib='177}
\def\@elevenbsy{cmbsy10\@magstephalf}
\def\@elevenitb{cmbxti10\@magstephalf}
\def\@elevensf{cmss10\@magstephalf}
\def\@elevensfi{cmssi10\@magstephalf}
\def\@elevensfb{cmssdc10\@magstephalf}
\def\@elevensc{cmcsc10\@magstephalf}

\def\@twelverm{cmr12}
\def\@twelvei{cmmi12\skewchar\twelvei='177}
\def\@twelvesy{cmsy10\@magstep\@ne\skewchar\twelvesy='60}
\def\@twelveex{cmex10\@magstep\@ne}
\def\@twelveit{cmti12}
\def\@twelvesl{cmsl12}
\def\@twelvebf{cmbx12}
\def\@twelvett{cmtt12}
\def\@twelvemib{cmmib10\@magstep\@ne\skewchar\twelvemib='177}
\def\@twelvebsy{cmbsy10\@magstep\@ne}
\def\@twelveitb{cmbxti10\@magstep\@ne}
\def\@twelvesf{cmss12}
\def\@twelvesfi{cmssi12}
\def\@twelvesfb{cmssdc10\@magstep\@ne}
\def\@twelvesc{cmcsc10\@magstep\@ne}

\def\@thirteenrm{cmr12\@magstephalf}
\def\@thirteeni{cmmi12\@magstephalf\skewchar\thirteeni='177}
\def\@thirteensy{cmsy10\@magsteponehalf\skewchar\thirteensy='60}
\def\@thirteenex{cmex10\@magsteponehalf}
\def\@thirteenit{cmti12\@magstephalf}
\def\@thirteensl{cmsl12\@magstephalf}
\def\@thirteenbf{cmbx12\@magstephalf}
\def\@thirteentt{cmtt12\@magstephalf}
\def\@thirteenmib{cmmib10\@magsteponehalf\skewchar\thirteenmib='177}
\def\@thirteenbsy{cmbsy10\@magsteponehalf}
\def\@thirteenitb{cmbxti10\@magsteponehalf}
\def\@thirteensf{cmss12\@magstephalf}
\def\@thirteensfi{cmssi12\@magstephalf}
\def\@thirteensfb{cmssdc10\@magsteponehalf}
\def\@thirteensc{cmcsc10\@magsteponehalf}

% The font names \@fourteenrm, \@seventeenrm, \@twentyonerm,
% \@twentyfiverm, \@thirtyrm, \@thirtysixrm, \@fortythreerm, \@fiftytworm,
% \@sixtytworm, \@seventyfourrm, \@eightyninerm, \@hundredsevenrm,
% \@hundredtwentyeightrm, \@hundredfiftyfourrm, and their counterparts for
% other typefaces are, if necessary, generated by the macro \fontn@mes.

\def\fontn@mes#1#2{% skip if called earlier for this size
\expandafter\ifx\csname @#1rm\endcsname\relax
\count@=#2\advance\count@ -1
\expandafter\edef\csname @#1rm\endcsname{cmr12\@magstep\count@}%
\expandafter\edef\csname @#1i\endcsname{cmmi12\@magstep\count@%
   \expandafter\skewchar\csname #1i\endcsname='177}%
\expandafter\edef\csname @#1sy\endcsname{cmsy10\@magstep{#2}%
   \expandafter\skewchar\csname #1sy\endcsname='60}%
\expandafter\edef\csname @#1ex\endcsname{cmex10\@magstep{#2}}%
\expandafter\edef\csname @#1it\endcsname{cmti12\@magstep\count@}%
\expandafter\edef\csname @#1sl\endcsname{cmsl12\@magstep\count@}%
\expandafter\edef\csname @#1bf\endcsname{cmbx12\@magstep\count@}%
\expandafter\edef\csname @#1tt\endcsname{cmtt12\@magstep\count@}%
\expandafter\edef\csname @#1mib\endcsname{cmmib10\@magstep{#2}%
   \expandafter\skewchar\csname #1mib\endcsname='177}%
\expandafter\edef\csname @#1bsy\endcsname{cmbsy10\@magstep{#2}}%
\expandafter\edef\csname @#1itb\endcsname{cmbxti10\@magstep{#2}}%
\expandafter\edef\csname @#1sf\endcsname{cmss12\@magstep\count@}%
\expandafter\edef\csname @#1sfi\endcsname{cmssi12\@magstep\count@}%
\expandafter\edef\csname @#1sfb\endcsname{cmssdc10\@magstep{#2}}%
\expandafter\edef\csname @#1sc\endcsname{cmcsc10\@magstep{#2}}%
\fi}


% FONT-SELECTING MACROS
\def\FONTID@#1[#2]{\expandafter\ifx\csname #1#2\endcsname\relax
   \global\expandafter\font\csname #1#2\endcsname
   =\csname @#1#2\endcsname\fi}  % defining font identifier if not yet done
\def\TSSS@#1[#2]{\FONTID@\@@tf[#2]\FONTID@\@@sf[#2]\FONTID@\@@ssf[#2]%
   \textfont#1=\csname\@@tf#2\endcsname
   \scriptfont#1=\csname\@@sf#2\endcsname
   \scriptscriptfont#1=\csname\@@ssf#2\endcsname}
\def\T@#1[#2]{\FONTID@\@@tf[#2]%
   \textfont#1=\csname\@@tf#2\endcsname}
\def\MATHEX@#1[#2]{\FONTID@\@@tf[#2]%
   \textfont#1=\csname\@@tf#2\endcsname            % no distinction between
   \scriptfont#1=\csname\@@tf#2\endcsname          % T, S, and SS
   \scriptscriptfont#1=\csname\@@tf#2\endcsname}
\def\TXT@[#1]{\FONTID@\@@tf[#1]}                   % Text mode only
\def\TSSS@@#1[#2]{\textfont#1=\csname\@@tf#2\endcsname % used in boldmath;
   \scriptfont#1=\csname\@@sf#2\endcsname         % same as \TSSS@, except
   \scriptscriptfont#1=\csname\@@ssf#2\endcsname} % for absence of \FONTID

\newcount\fontscaling
\newif\ifboldmath
\def\@FONTS{\ifmmode\@error0\else
   \TSSS@\z@[rm]%
   \edef\rm{\fam\z@\csname\@@tf rm\endcsname}%
   \TSSS@\@ne[i]%
%  \def\mit{\fam\@ne}%   already defined in plain TeX
   \edef\oldstyle{\fam\@ne\csname\@@tf i\endcsname}%
   \TSSS@\tw@[sy]%
%  \def\cal{\fam\tw@}%   already defined in plain TeX
   \MATHEX@\thr@@[ex]%
   \T@\itfam[it]%
   \edef\it{\fam\itfam\csname\@@tf it\endcsname}%
   \T@\slfam[sl]%
   \edef\sl{\fam\slfam\csname\@@tf sl\endcsname}%
   \TSSS@\bffam[bf]%
   \edef\bf{\fam\bffam\csname\@@tf bf\endcsname}%
   \T@\ttfam[tt]%
   \edef\tt{\fam\ttfam\csname\@@tf tt\endcsname}%
   \TSSS@\mibfam[mib]%
   \def\mib{\fam\mibfam}%   math mode only
   \edef\boldoldstyle{\fam\mibfam\csname\@@tf mib\endcsname}%
   \TSSS@\bsyfam[bsy]%
   \def\boldcal{\fam\bsyfam}%   math mode only
   \T@\itbfam[itb]%
   \edef\itb{\fam\itbfam\csname\@@tf itb\endcsname}%
   \TSSS@\sffam[sf]%
   \edef\sf{\fam\sffam\csname\@@tf sf\endcsname}%
   \TSSS@\sfifam[sfi]%
   \edef\sfi{\fam\sfifam\csname\@@tf sfi\endcsname}%
   \TSSS@\sfbfam[sfb]%
   \edef\sfb{\fam\sfbfam\csname\@@tf sfb\endcsname}%
   \TXT@[sc]%
   \edef\sc{\csname\@@tf sc\endcsname}%   text mode only
   \ifttr@ggedright\ttraggedright\fi
                   % conditionally adjust \ttraggedright to new size
   \s@tdimen\rm    % setting dimensions, roman default
   \ifr@ggedright\raggedright\fi
                   % conditionally adjust \raggedright to new size
   \boldmathfalse  % family numbers start off normal!
   \fi}


% BOLDMATH
\def\boldmath{% interchanging families 0,1,2 <-> \bffam,\mibfam,\bsyfam
   \ifmmode\@error\@ne\else
   \ifboldmath\@error\tw@\else
      \TSSS@@\z@[bf]\TSSS@@\@ne[mib]\TSSS@@\tw@[bsy]%
      \TSSS@@\bffam[rm]\TSSS@@\mibfam[i]\TSSS@@\bsyfam[sy]%
      \edef\rm{\fam\bffam\csname\@@tf rm\endcsname}%
      \def\mit{\fam\mibfam}%
      \edef\oldstyle{\fam\mibfam\csname\@@tf i\endcsname}%
      \def\cal{\fam\bsyfam}%
      \edef\bf{\fam\z@\csname\@@tf bf\endcsname}%
      \def\mib{\fam\@ne}%
      \edef\boldoldstyle{\fam\@ne\csname\@@tf mib\endcsname}%
      \def\boldcal{\fam\tw@}%
      \boldmathtrue
   \fi\fi}
\def\unboldmath{% restoring default definitions
   \ifmmode\@error\@ne\else
   \ifboldmath
      \TSSS@@\z@[rm]\TSSS@@\@ne[i]\TSSS@@\tw@[sy]%
      \TSSS@@\bffam[bf]\TSSS@@\mibfam[mib]\TSSS@@\bsyfam[bsy]%
      \edef\rm{\fam\z@\csname\@@tf rm\endcsname}%
      \def\mit{\fam\@ne}%
      \edef\oldstyle{\fam\@ne\csname\@@tf i\endcsname}%
      \def\cal{\fam\tw@}%
      \edef\bf{\fam\bffam\csname\@@tf bf\endcsname}%
      \def\mib{\fam\mibfam}%
      \edef\boldoldstyle{\fam\mibfam\csname\@@tf mib\endcsname}%
      \def\boldcal{\fam\bsyfam}%
      \boldmathfalse\else
      \@error\thr@@
   \fi\fi}
\def\bmbox#1{\hbox{\ifboldmath\relax\else\boldmath\fi
   $\m@th\relax #1$}}


% FONT-SIZE COMMANDS
% <roman numeral>pt, roman default
\def\viipt{\let\@@tf\vii@ \let\@@sf\vi@ \let\@@ssf\v@
   \xp@=0.7pt \fontscaling=700 \@FONTS}
\def\viiipt{\let\@@tf\viii@ \let\@@sf\vi@ \let\@@ssf\v@
   \xp@=0.8pt \fontscaling=800 \@FONTS}
\def\ixpt{\let\@@tf\ix@ \let\@@sf\vii@ \let\@@ssf\v@
   \xp@=0.9pt \fontscaling=900 \@FONTS}
\def\xpt{\let\@@tf\x@ \let\@@sf\vii@ \let\@@ssf\v@
   \xp@=1pt \fontscaling=\@m \@FONTS}
\def\xipt{\let\@@tf\xi@ \let\@@sf\viii@ \let\@@ssf\vi@
   \xp@=1.0955pt \fontscaling=\magstephalf \@FONTS}
\def\xiipt{\let\@@tf\xii@ \let\@@sf\viii@ \let\@@ssf\vi@
   \xp@=1.2pt \fontscaling=\magstep\@ne\@FONTS}
\def\xiiipt{\let\@@tf\xiii@ \let\@@sf\ix@ \let\@@ssf\vii@
   \xp@=1.3145pt \fontscaling=\magsteponehalf \@FONTS}
\def\xivpt{\let\@@tf\xiv@ \let\@@sf\x@ \let\@@ssf\vii@
   \fontn@mes\xiv@\tw@
   \xp@=1.44pt \fontscaling=\magstep\tw@\@FONTS}
\def\xviipt{\let\@@tf\xvii@ \let\@@sf\xii@ \let\@@ssf\viii@
   \fontn@mes\xvii@\thr@@
   \xp@=1.728pt \fontscaling=\magstep\thr@@\@FONTS}
\def\xxipt{\let\@@tf\xxi@ \let\@@sf\xiv@ \let\@@ssf\x@
   \fontn@mes\@@tf{4}\fontn@mes\@@sf\tw@
   \xp@=2.0736pt \fontscaling=\magstep4\@FONTS}
\def\xxvpt{\let\@@tf\xxv@ \let\@@sf\xvii@ \let\@@ssf\xii@
   \fontn@mes\@@tf{5}\fontn@mes\@@sf\thr@@
   \xp@=2.4883pt \fontscaling=\magstep5\@FONTS}
\def\xxxpt{\let\@@tf\xxx@ \let\@@sf\xxi@ \let\@@ssf\xiv@
   \fontn@mes\@@tf{6}\fontn@mes\@@sf{4}\fontn@mes\@@ssf\tw@
   \xp@=2.9860pt \fontscaling=\magstep6\@FONTS}
\def\xxxvipt{\let\@@tf\xxxvi@ \let\@@sf\xxv@ \let\@@ssf\xvii@
   \fontn@mes\@@tf{7}\fontn@mes\@@sf{5}\fontn@mes\@@ssf\thr@@
   \xp@=3.5832pt \fontscaling=\magstep7\@FONTS}
\def\xliiipt{\let\@@tf\xliii@ \let\@@sf\xxx@ \let\@@ssf\xxi@
   \fontn@mes\@@tf{8}\fontn@mes\@@sf{6}\fontn@mes\@@ssf{4}%
   \xp@=4.2998pt \fontscaling=\magstep8\@FONTS}
\def\liipt{\let\@@tf\lii@ \let\@@sf\xxxvi@ \let\@@ssf\xxv@
   \fontn@mes\@@tf{9}\fontn@mes\@@sf{7}\fontn@mes\@@ssf{5}%
   \xp@=5.1598pt \fontscaling=\magstep9\@FONTS}
\def\lxiipt{\let\@@tf\lxii@ \let\@@sf\xliii@ \let\@@ssf\xxx@
   \fontn@mes\@@tf{10}\fontn@mes\@@sf{8}\fontn@mes\@@ssf{6}%
   \xp@=6.1917pt \fontscaling=\magstep{10}\@FONTS}
\def\lxxivpt{\let\@@tf\lxxiv@ \let\@@sf\lii@ \let\@@ssf\xxxvi@
   \fontn@mes\@@tf{11}\fontn@mes\@@sf{9}\fontn@mes\@@ssf{7}%
   \xp@=7.4301pt \fontscaling=\magstep{11}\@FONTS}
\def\lxxxixpt{\let\@@tf\lxxxix@ \let\@@sf\lxii@ \let\@@ssf\xliii@
   \fontn@mes\@@tf{12}\fontn@mes\@@sf{10}\fontn@mes\@@ssf{8}%
   \xp@=8.9161pt \fontscaling=\magstep{12}\@FONTS}
\def\cviipt{\let\@@tf\cvii@ \let\@@sf\lxxiv@ \let\@@ssf\lii@
   \fontn@mes\@@tf{13}\fontn@mes\@@sf{11}\fontn@mes\@@ssf{9}%
   \xp@=10.6993pt \fontscaling=\magstep{13}\@FONTS}
\def\cxxviiipt{\let\@@tf\cxxviii@ \let\@@sf\lxxxix@ \let\@@ssf\lxii@
   \fontn@mes\@@tf{14}\fontn@mes\@@sf{12}\fontn@mes\@@ssf{10}%
   \xp@=12.8392pt \fontscaling=\magstep{14}\@FONTS}
\def\clivpt{\let\@@tf\cliv@ \let\@@sf\cvii@ \let\@@ssf\lxxiv@
   \fontn@mes\@@tf{15}\fontn@mes\@@sf{13}\fontn@mes\@@ssf{11}%
   \xp@=15.4070pt \fontscaling=\magstep{15}\@FONTS}

% \fsize
\expandafter\def\csname 0.5@\endcsname{@h@}   \def\h@{@h@}
\expandafter\def\csname 1.5@\endcsname{@hhh@} \def\hhh@{@hhh@}
\expandafter\def\csname 1h@\endcsname{@hhh@}
\def\fsize#1{\expandafter\ifx\csname #1@\endcsname\h@ \xipt\else
   \expandafter\ifx\csname #1@\endcsname\hhh@ \xiiipt\else
   \ifcase#1 \xpt\or \xiipt\or \xivpt\or \xviipt\or \xxipt\or \xxvpt\or
   \xxxpt\or \xxxvipt\or \xliiipt\or \liipt\or \lxiipt\or \lxxivpt\or
   \lxxxixpt\or \cviipt\or \cxxviiipt\or \clivpt \else
   \@error4\fi\fi\fi\ignorespaces}


% ADDITIONAL DEFINITIONS FOR MATH
\def\frac#1#2{{#1\over #2}}
\def\csfrac#1#2{\mathchoice  % case fraction
   {{\textstyle{#1\over #2}}}{{#1\over #2}}{{#1\over #2}}{{#1\over #2}}}
\let\case\csfrac
\def\slfrac#1#2{\count\z@\fam \count\@ne\fam
   \ifnum\count\@ne=-1\count\@ne=\z@\fi
   \def\@g##1##2{\setbox\z@=\hbox{$##1 0$}%
      \setbox\@ne=\hbox{$\fam\count\z@ ##2/$}%
      \dimen\z@-\ht\@ne\advance\dimen\z@\dp\@ne
      \dimen\@ne\ht\@ne\advance\dimen\@ne\dp\@ne
      \advance\dimen\z@\ht\z@\divide\dimen\z@\tw@
      \advance\dimen\z@ 0.1065\dimen\@ne
      \raise0.363\dimen\@ne\hbox{\scriptspace\z@$\fam\count\z@ ##1#1$}%
      \kern-0.4\wd\@ne\raise\dimen\z@\copy\@ne\kern-0.4\wd\@ne
      \lower0.15\dimen\@ne\hbox{\scriptspace\z@$\fam\count\z@ ##1#2$}}%
   \expandafter\ifx\the\scriptscriptfont\count\@ne\nullfont
   \mathchoice{\@g\scriptstyle\textstyle}{\@g\scriptstyle\textstyle}{XX}{}%
   \else\mathchoice{\@g\scriptstyle\textstyle}{\@g\scriptstyle\textstyle}%
   {\@g\scriptscriptstyle\scriptstyle}%
   {\@g\scriptscriptstyle\scriptscriptstyle}\fi}
\def\rdcl{\raise\xp@\hbox{$\surd$}}
\def\gsim{\mathrel{\mathpalette\@vr >}}  % greater than or on the order of
\let\gtrsim\gsim
\def\lsim{\mathrel{\mathpalette\@vr <}}  % smaller than or on the order of
\let\lesssim\lsim
\def\@vr#1#2{\lower3.4\xp@\vbox{\baselineskip\z@\lineskiplimit\z@
   \lineskip 0.8\xp@\ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr\sim\crcr}}}


% VARIOUS DEFINITIONS
\outer\def\Bye{\par\vfill\ifnum\pageno=\@ne\nopagenumbers\fi\supereject\end}
\def\@{\spacefactor\@m}  % end-of-sentence space
\def\is{\spacefactor=\sfcode`\.{} }  % intersentence space
\def\\{\spacefactor=\sfcode`\.{} \ignorespaces}
\def\today{\number\day\space
   \ifcase\month\or January\or February\or March\or April\or May\or June\or
   July\or August\or September\or October\or November\or December\fi
   \space\number\year}
\def\vandaag{\number\day\space
   \ifcase\month\or januari\or februari\or maart\or april\or mei\or juni\or
   juli\or augustus\or september\or oktober\or november\or december\fi
   \space\number\year}
\def\heute{\number\day.\spacefactor\@m\space
   \ifcase\month\or Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
   Juli\or August\or September\or Oktober\or November\or Dezember\fi
   \space\number\year}
\def\aujourdhui{\number\day\space
   \ifcase\month\or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
   julliet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi
   \space\number\year}
\def\hoursminutes{%  Style hh:mm
   {\count\z@=\time\divide\count\z@ 60 \the\count\z@ \multiply\count\z@ 60
   \advance\count\z@-\time\count\z@=-\count\z@:\ifnum\count\z@<10 0\fi\the\count\z@}}
\def\dollar{{\ifdim\fontdimen\@ne\font>\z@ \sl\fi\char`\$}}
\def\pounds{{\it\char'44}}
\def\copyright{{\rm\ooalign{\hfil\raise 0.07ex\hbox{c}\kern0.03em\hfil\crcr
   \ifboldmath\mathhexbox90D\else\mathhexbox20D\fi}}}
   %   Compared to plain TeX, \rm and \ifboldmath added
\def\GOTOnextoddpage{\vfill\eject\ifodd\count\z@
   \relax\else\bgroup\nopagenumbers\leavevmode\vfill\eject\egroup\fi}
\def\GOTOnextevenpage{\vfill\eject\ifodd\count\z@
   \bgroup\nopagenumbers\leavevmode\vfill\eject\egroup\else\relax\fi}


% TYPE PAGES
% US Letter is default.  \hoffset should be (paper_width - \hsize)/2 - 1".
% If printed page is not horizontally centered, do NOT modify \hoffset.
% Instead adjust appropriate parameter of printer driver.
% Comment out next three lines for US Letter
\hsize157mm \vsize240mm \hoffset1.1mm  % A4
\dimen\footins220mm
\def\m@g{\mag\count@\hsize157truemm\vsize240truemm\dimen\footins220truemm}


% DEFAULT FONT SIZE
\xpt            % 10-points roman default
\@firstsizetrue % yet first call in document defines size of footline


% ERROR MESSAGES
\def\@error#1{\errmessage{*** \ifcase#1
\string\fsize\space or \string\viipt, etc. used in math mode\or  %0
\string\boldmath\space c.q. \string\unboldmath\space used in math  %1
   mode\or
\string\boldmath: boldmath already active\or  %2
\string\unboldmath: boldmath not active\or  %3
Argument of \string\fsize\space invalid\or  %4
\fi\space ***}}


% ADDITIONS TO HYPHENATION TABLE
\count@\language\language=0
\hyphenation{infra-red infra-struc-ture}
\language=\count@

\catcode`@=12 % at signs are no longer letters

% END OF FNTS.TEX