%                                          MACROS FOR TEXT1
%
%         This work is protected as an unpublished work under
%         U.S. copyright laws.
%         Copyright 1987, by Washington State University.
%         All rights reserved.
%
%               Last updated on 7/24/95 (drg)
%
\everyjob{\immediate\write16{TEXT1 Version 4.09}
         \titlepage\spn{1}
}
%
%       The following variables are used for allowing conditional compilation
%       of special code depending on which version of TeX you are using.
%       See these special notes in the next paragarph
\catcode`* = 11
\catcode`@ = 11
%
\newif\if*MAC  \*MACfalse     % This is not a Macintosh
\newif\if*CMS  \*CMSfalse     % This is not on CMS
\newif\if*PC   \*PCfalse      % This is not a PC
\newif\if*CG   \*CGfalse      % This is not a Compugraphics 8600 typesetter
%
%   Note that non CMS versions must be modified. Here are the changes
%   necessary for the IBM PC/DOS version of TEXT1, Macintosh version,
%   and other non-CMS versions.
%
%      1. The filetype (extension) can only be 3 characters at the most
%         for the PC/DOS version.
%         This requires the following changes:
%            toc1     => tc1
%            toc2     => tc2
%            toc3     => tc3
%            endnotes => end
%            textext  => txt
%            texmath  => mth
%            texmodel => mdl
%
%      2. The Compugraphics dependent stuff in \selectspecificfont must
%         be omitted for all but CMS versions.
%
%      3. The routines \nonIBM and \IBM should be set to null for all but CMS
%         versions
%
%      4. The Macintosh/Textures version uses a special \include
%


%   Some temporary variables to be used throughout
%
\newbox\A
\newtoks\B
\newskip\C
\newdimen\D
\newdimen\*D
\newcount\E
\newcount\F
\newcount\G
\newcount\N
\newcount\Q
\newcount\R
%             \T \U \V \W are used throughout TEXT1 as temp definitions
%             \I \J \K \M \X \Y \Z are temporary too, be careful if you use these
%
% ragged rightindent on bq troublesome.
% titleleadskip works only with titlepage command in text.
% for doublecolumns, change hsize and line--refer to ccndbl
% for multiple right and centerline--refer to aztex
%
%           IBM/NONIBM character definitions, added by Dean 7/11/86
%
% Use this macro when not printing with IBM standard distribution fonts


\newif\if*IBM \*IBMfalse

\if*CMS
\def\nonIBM{\if*IBM \*IBMfalse%
   \def\aa{\accent23a}%
   \def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
     \rlap{\raise.67\dimen@\hbox{\char'27}}A}%
   \def\c##1{\setbox\z@\hbox{##1}\ifdim\ht\z@=1ex\accent24 ##1%
     \else{\ooalign{\hidewidth\char24\hidewidth\crcr\unhbox\z@}}\fi}%
   \def\`##1{{\accent18 ##1}}%
   \def\'##1{{\accent19 ##1}}%
   \def\^##1{{\accent94 ##1}}\let\^^D=\|%
   \def\~##1{{\accent"7E ##1}}%
   \def\"##1{{\accent"7F ##1}}%
   \chardef\i="10 % dummy dotless lowercase i
   \def\dag{\mathhexbox279}%
   \def\ddag{\mathhexbox27A}%
   \def\S{\mathhexbox278}%
   \def\P{\mathhexbox27B}%
   \let\}=\rbrace%
   \let\{=\lbrace%
   \def\cents{\hbox{\rm\rlap/c}}\fi}% end non-IBM
%
% Use this macro when printing with the IBM standard distribution fonts
\def\IBM{\*IBMtrue
   \chardef\aa="8A % a overcircle
   \chardef\AA="8B % A overcircle
   \chardef\c="18 % cedilla
   \chardef\`="12 % grave
   \chardef\'="13 % acute
   \chardef\^="5E % circumflex
   \chardef\~="7E % tilde
   \chardef\"="7F % umlaut
   \chardef\i="69 % dummy dotless lowercase i
   \chardef\S="DC % section number sign
   \chardef\P="DD % paragraph sign or pilcrow
   \chardef\dag="DE % dagger or obelisk
   \chardef\ddag="DF % double dagger or diesis
   \chardef\{="AE % left brace
   \chardef\}="AF % right brace
   \chardef\cents="CD}% end IBM
\else
\def\nonIBM{}
\def\IBM{}
\fi
%
% Redefined from PLAIN.TEX to omit the at sign "@"
%    @ symbol will be read as begin and end math mode otherwise
\message{redefining some plain commands, }
\newdimen\zZ \zZ=0pt % can be used both for 0pt and 0
\mathchardef\zmz=1000
\mathchardef\zMz=10000
\mathchardef\zMMz=20000
\def~{\penalty\zMz\ } % tie
\def\break{\penalty-\zMz}
\def\nobreak{\penalty \zMz}
\def\allowbreak{\penalty \zZ}
\def\supereject{\par\penalty-\zMMz}
\def\nopagenumbers{\rhf{\bothpages{}}\rff{\bothpages{}}}
%
%  Redefined from PLAIN.TEX to \unskip last skip if in h mode
%
\message{redefining some plain commands, }
\def\removelastskip{\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi
                           \else\unskip\unskip\unskip\unskip\fi}
\let\rlsk=\removelastskip
%
%  Redefined from PLAIN.TEX to 12 point topskip
\def\raggedbottom{\topskip 12\p@ plus60\p@ \r@ggedbottomtrue}%
\def\normalbottom{\topskip 12\p@ \r@ggedbottomfalse}%
%
%  Redefined from PLAIN.TEX to omit extraneous skips and such surprises.
\def\endinsert{\egroup % finish the \vbox
 \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@
   \advance\dimen@12\p@ \advance\dimen@\pagetotal
   \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
 \if@mid \box\z@\goodbreak
 \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\fi}\fi\endgroup}
%
%         Redefined from PLAIN.TEX to take mode into account
\mathchardef\*dda="227A
\mathchardef\*dag="2279
\mathchardef\*neg="023A
\def\ddagger{\relax\ifmmode\*dda\else$\*dda$\fi}%
\def\dagger{\relax\ifmmode\*dag\else$\*dag$\fi}%
\def\neg{\relax\ifmmode\*neg\else$\*neg$\fi}
%
%         Redefined from PLAIN.TEX to take present font size into account
%
\def\strut{\relax
   \setbox\strutbox=\hbox{\vrule height 1.8ex depth .6ex width 0pt}%
   \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}%
%
%
%   Starting TEXT1 Definitions
%
%  Use this one for Textures
%
\if*MAC
       \def\include#1{\special {picture #1}}%
 \else
       \def\include#1{\special {IPS #1}}%     added by gap 1/27/87
\fi
\let\incl=\include
%
\def\text#1{{\it\TeX T1}}%             added by drg 9/26/86
\def\bf{\bd}%                          added by jkw 6/30/86
\def\cents{\hbox{\rm\rlap/c}}%         added by jkw 6/30/86
\def\fraction#1/#2 {%                  added by jkw 7/8/86
 \leavevmode\kern.1em \raise.6ex\hbox{\the\scriptfont0 #1}\kern-.1em
 /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
\let\frac=\fraction
\message{bibliography, }
%                      Bibliography
%
\newtoks\bi*f     \bi*f={\goodbreak\vs{1\bl}\hp\nin}      % init bibentry
\newtoks\bi*t     \bi*t={\dumpinsertseject\cl{\bd\bibtitle}
                           \vs{1\bl}}% init bibliography title format
\newtoks\bi*r     \bi*r={width 3em height .6ex depth -.5ex}
\newcount\bi*n    \bi*n=0            % counter for numbered bibliography
\newif\if*TC*bib  \*TC*bibtrue
%
\long\def\bibliographyformat#1{{% definition of bibliographic format
     \def\incontents##1{\global\*TC*bibtrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*bibfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in bibliographyformat is not "yes" or "no".
                                     "yes" will be assumed}
                \fi\fi}%
   \long\def\everybibentry##1{\global\bi*f={##1}}%
%      Remove this some day
   \let\bibentryformat=\everybibentry%
   \long\def\titleformat##1{\global\bi*t={##1}}%  replacement format for bibliography title
   \def\sameauthorrulesize##1{\global\bi*r={##1}}%
   #1}}%
\let\bif=\bibliographyformat
%
\def\bibtitle{}
\def\bibliography#1{% calls bibtitle format and passes title
   \global\bi*n=0                   % set bib counter to zero each call
   \global\def\bibtitle{#1}         % collect title tokens
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\bi*t
   \egroup
   \D=\lastskip
   \removelastskip
   \if*TC*bib \putincontents1{\the\*btf}\fi % call bib title format
   \ignorespaces
   \vs{\D}
}% end bibliography markup
\let\bib=\bibliography
%
\def\bibnumber{\the\bi*n}%
\def\bibentry{\par\global\advance\bi*n by1\the\bi*f}%
\let\bie=\bibentry                   % abbreviation for \bibentry
%
\def\sameauthor{\vrule\the\bi*r}%
\let\sau=\sameauthor
%
\message{misc, }
\def\underscore#1{$\underline{\smash{\hbox{#1}}}$}%
\let\us=\underscore
\def\leader{\leaders\hbox to 8pt{\hss.\hss}\hfill}%
%
\def\hyphenoff{\pretolerance=10000\hbadness=10000}%
\let\hof=\hyphenoff
\def\hyphenon{\pretolerance=100\hbadness=1000}%
\let\hon=\hyphenon
%
\def\today{\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\day,\space\number\year}%
%
%
\def\tilde{\relax\ifmmode\mathaccent"707E % relax added to trigger math
            \else{\sy\char'030}\fi}%       mode in tabs 1/27/87
%
\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}%
%
\def\}{\relax\ifmmode \rbrace % relax added to trigger math mode in tabs
         \else $\rbrace$\fi}%
%
\def\{{\relax\ifmmode \lbrace % relax added to trigger math mode in tabs
         \else $\lbrace$\fi}%
%
\def\\{\relax\ifmmode \delimiter"26E30F % relax added to trigger math
         \else $\delimiter"26E30F$\fi}%  mode in tabs
%
\let\leftsquarebracket=[
\let\rightsquarebracket=]
\let\lsb=[
\let\rsb=]
\def\~#1{{\relax\ifmmode\mathaccent"707E % relax added to trigger math
            \else \accent"7E #1\fi}}%     mode in tabs
%
% baselineskip = interlineskip
%
\newskip\*isk
\newskip\baseline
\let\bl=\baseline
\def\interlineskip#1{\baselineskip=#1%
                    \baseline=#1%
                    \*isk=#1\relax}%
\let\isk=\interlineskip
%
\message{selectfontset, }
\newfam\bifam   \newfam\ccfam
%
%   The \selectfontset macros are by JKW
%
\newtoks\naMEtok
\newtoks\maTHtok
\newskip\bAseSkip
\newtoks\*sfslbl
\if*PC
       \*sfslbl={.txt}
 \else
       \*sfslbl={.textext}
\fi

\def\selectfontset#1#2#3{\naMEtok={#2}
  \edef\T{default}%
  \edef\U{#3}%
  \ifx\U\T \bAseSkip=0pt
     \else \bAseSkip=#3\fi
  \input #1\the\*sfslbl }%
\let\sfs=\selectfontset
\sfs{cm12}{twelvept}{default}
\sfs{cm10}{tenpt}{default}
\twelvept
%
\newtoks\*smslbl
\if*PC
       \*smslbl={.mth}
 \else
       \*smslbl={.texmath}
\fi

\def\selectmathset#1#2{\maTHtok={#2}\input #1\the\*smslbl}%
\let\sms=\selectmathset
\selectmathset{cm97m}{mathdefault} %
\mathdefault
%
%  SELECT SPECIFIC FONT, jkw 8/26/86
\newread\ckfnt
\newif\ifnotcfend
\newtoks\nUMtok
\newtoks\nmtok

\if*CMS
\def\selectspecificfont#1#2#3{\naMEtok={#1}\nUMtok={#3}
   \nmtok={#1\romannumeral #2}
   \def\T{\uppercase{#1 }}%
   \expandafter\xdef\csname I\the\nmtok\endcsname{\isk{\the\nUMtok}}
   \openin\ckfnt=cgfonts.lclist
      \loop\read\ckfnt to \W
      \edef\U{\uppercase{\W}}%
          \ifx\U\T
              \expandafter\font\csname F\the\nmtok%
                 \endcsname=#1 at #2 pt \notcfendfalse
          \else\ifeof\ckfnt
              \expandafter\font\csname F\the\nmtok%
                \endcsname=#1#2  \notcfendfalse
           \else\notcfendtrue\fi\fi
    \ifnotcfend           \repeat
   \closein\ckfnt
   \expandafter\xdef\csname\the\naMEtok\endcsname ##1;{%
               \noexpand\csname F\the\naMEtok
               \noexpand\romannumeral\noexpand ##1\noexpand\endcsname
               \noexpand\csname I\the\naMEtok
               \noexpand\romannumeral\noexpand ##1\noexpand\endcsname}}%
\else
\def\selectspecificfont#1#2#3{\naMEtok={#1}\nUMtok={#3}
   \nmtok={#1\romannumeral #2}
   \def\T{\uppercase{#1 }}%
   \expandafter\xdef\csname I\the\nmtok\endcsname{\isk{\the\nUMtok}}
   \expandafter\xdef\csname\the\naMEtok\endcsname ##1;{%
               \noexpand\csname F\the\naMEtok
               \noexpand\romannumeral\noexpand ##1\noexpand\endcsname
               \noexpand\csname I\the\naMEtok
               \noexpand\romannumeral\noexpand ##1\noexpand\endcsname}}%
\fi

\let\ssf=\selectspecificfont
%
\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177
\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60
%
\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
%
%
\message{monospace, }
\newif\if*msp   \*mspfalse
\if*CMS
\def\monospace{%
 \global\*msptrue                   % changed to global 6/27/86 bth
 \sfs{monofont}{defaultmono}{default}
 \defaultmono
 \gdef\underscore##1{{\italicfont ##1}}%
 \global\let\us=\underscore
 \special{fonts=10cpi}
 \raggedbottom
 \global\paragraphskip{0pt}
 \global\paragraphindent{36pt}
 \gdef\tilde{\ifmmode\mathaccent"707E%
              \else \char'176{}\fi}%
 \gdef\_{\char'137{}}%
 \gdef\}{\ifmmode \rbrace
         \else \char'175{}\fi}%
 \gdef\{{\ifmmode \lbrace
         \else\char'173{}\fi}%
 \gdef\\{\ifmmode \delimiter"26E30F%
         \else\char'134{}\fi}%
 \gdef\neg{\char'136{}}%
 \gdef\ellipsis##1{{\def\U{\message{<TEXT1> Error! Only 3 or 4 are valid for ellipsis. Command ignored.}}
   \ifcase ##1\U\or\U\or\U%
     \or .~.~.
     \or .~.~.~.
     \else\U\fi}}%

 \tableofcontentsformat{% added 1/26/87 Guenther
    \toctitle{\centerline{\bd Table of Contents}
              \vs{1\bl}}
    \figuretoctitle{\newpage
                    \centerline{\bd List of Figures}
                    \line{Figure \rt{Page}}}
    \tabletoctitle{\newpage
                   \centerline{\bd List of Tables}
                   \line{Table \rt{Page}}}
    }% end table of contents format

 \global\let\el=\ellipsis
 \asisformat{\skipbefore{1\bl}\everyasis{\leftindent{0pt}}\skipafter{1\bl}}
 \blockquoteformat{\skipbefore{1\bl}\everyblockquote{\rm\leftindent{36pt}\rightindent{36pt}}\skipafter{1\bl}}
 \figureformat{\titleformat{\bqb\bd\hp Figure \figurenumber. \figuretitle \bqe}}
 \tableformat{\titleformat{\vs{\bl}\cl{\bd Table \tablenumber}
                 \cl{\rm\tabletitle}\vs{\bl}}}
 \endnoteformat{\skipbefore{0\bl}\notereferencefont{\rm}\everyendnote{\rm\lin{0pt}}}
 \footnoteformat{\textreferenceposition{down}\textreferencefont{\rm}\textreferencestyle{(1)}
                 \notereferencefont{\rm}\everyfootnote{\rm\pin{.5in}\psk{.5in}\lin{0pt}\rin{0pt}}}

  \partformat{\titleformat{\dumpinsertseject\titlepage
                  \hrule height0pt depth0pt \vfil
                  \cl{\bd Part \partnumber}\cl{\bd\parttitle}\np
                  \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                  \sfn{0}\stn{0}\sfnn{0}\senn{0}}}% end part format
  \indexformat1{\everyindex{\rm}}
  \indexformat2{\everyindex{\rm}}
  \indexformat3{\everyindex{\rm}}
  \chapterformat{\titleformat{\dumpinsertseject\cl{\bd Chapter \chapternumber}\cl{\bd\chaptertitle}\vs{1\bl}
     \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}}}% end chapter format
  \prefaceformat{\titleformat{\dumpinsertseject\cl{\bd\prefacetitle}
     \vs{1\bl}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}}}% end preface format
  \appendixformat{\titleformat{\dumpinsertseject
     \cl{\bd Appendix \appendixnumber}\cl{\bd\appendixtitle}\vs{1\bl}
     \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}\sfn{0}\stn{0}}}% end appendix format
  \subheadaformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
     \bd\nin\subheadatitle\par\nobreak\vs{1\bl}\nobreak
     \ssbn{0}\sscn{0}\ssdn{0}}}% end subheadaformat markup
  \subheadbformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
     \it\nin\subheadbtitle\par\nobreak\vs{1\bl}\nobreak
     \sscn{0}\ssdn{0}}}% end subheadbformat markup
  \subheadcformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
     \nin\subheadctitle\par\nobreak\vs{1\bl}\nobreak\ssdn{0}}}% end subheadc format markup
  \subheaddformat{\titleformat{\goodbreak{\it \subheaddtitle.}}}% end subheadd markup
  \runningheadformat{\bothpages{\line{\rm\lft{}\ctr{}\rt{\pagenumber}}
     \vs{1\bl}}}% end runningheadformat markup
}% END monospace markup definition
\else
       \def\monospace{\message{<TEXT1> monospace fonts are not available. Use
               typewritter fonts instead.}}
\fi
\let\msp=\monospace
%
\def\sl{\message{<TEXT1> Warning! The slanted font is not in font sets. Only tensl is used.}\tensl}%
\message{more misc, }
%
%    Ellipsis command 10/22/85
%
\def\ellipsis#1{{\def\U{\message{<TEXT1> Error! Only 3 or 4 are valid for ellipsis. Command ignored.}}
  \ifcase #1\U\or\U\or\U%
     \or \ifmmode\mathinner{\ldotp\ldotp\ldotp}
           \else$\mathinner{\ldotp\ldotp\ldotp}$\fi
     \or \ifmmode\mathinner{\ldotp\ldotp\ldotp\ldotp}
           \else\removelastskip$\ldotp\ldotp\ldotp\ldotp$\fi
     \else\U\fi}}%
\let\el=\ellipsis
%
%    dumpinsertseject is plain.tex \dosupereject with and \else added
%
\def\dumpinsertseject{\ifnum\insertpenalties>\z@ % something is being held over
                          \line{}\kern-\topskip\nobreak\vfill\supereject
                        \else \newpage
                        \fi}% END dumpinsertseject markup definition
\let\die=\dumpinsertseject
\message{page format, }
%
\newif\if*tempif
%
%    Pageformat command
%
\newdimen\pg*l       \pg*l=11in      % page length
\newdimen\pg*t       \pg*t=0in       % top margin set for 1in origin
\newdimen\pg*b       \pg*b=2in       % bottom margin set for 1in origin
\newdimen\pg*w       \pg*w=8.5in     % page width
\newdimen\pg*r       \pg*r=2in       % right margin set for 1in,
\newdimen\*lmar      \*lmar=0.2in    % left margin set for 1in
%                                      Note: TEX origin at 1in,1in
\newif\if*cropmarks  \*cropmarksfalse
\newdimen\pg*a       \pg*a=0in
\hsize=6.3in         \hoffset=0.2in
\vsize=9in           \voffset=0in
%
\def\pageformat#1{{\par
   \def\pagelength##1{\global\pg*l=##1
                      \cpt*vs}%
   \def\topmargin##1{\global\pg*t=##1
                     \global\advance\pg*t by- 1in   % set margin 1in,1in
                     \cpt*vs}%
   \def\bottommargin##1{\global\pg*b=##1
                     \global\advance\pg*b by 1in    % set margin 1in,1in
                     \cpt*vs}%
   \def\pagewidth##1{\global\pg*w=##1\cpt*hs}%
   \def\rightmargin##1{\global\pg*r=##1
                       \global\advance\pg*r by 1in  % set margin 1in,1in
                       \cpt*hs}%
   \def\leftmargin##1{\global\*lmar=##1
                      \global\advance\*lmar by -1in % set margin 1in,1in
                      \cpt*hs}%
   \def\bindingadjust##1{\global\pg*a=##1\cpt*hs}%
   \def\galleywidth##1{\global\pg*w=##1
                      \global\advance\pg*w by\*lmar
        \global\advance\pg*w by\pg*r \cpt*hs}%
   \def\cropmarks##1{\global\*cropmarksfalse
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U  \global\*cropmarkstrue
                \else \ifx \T\V \global\*cropmarksfalse
                      \else \message{<TEXT1> Warning, argument to cropmarks in
                        pageformat is not "yes" or "no". "no" will be assumed}
                        \*cropmarksfalse
                \fi\fi}%
       #1}}% End pageformat markup definition
\let\pf=\pageformat
%
% set page text size, compute hsize
%
\def\cpt*hs{% COMPUTE HORIZONTAL SIZE
   \global\hoffset=\*lmar
   \global\hsize=\pg*w              % added global 11/11/86 bth
   \global\advance\hsize by-\pg*r   % ""
   \global\advance\hsize by-\*lmar  % ""
   \global\*txtw=\hsize}%             added for multi column routines
%
% set page text size, vsize
%
\def\cpt*vs{% COMPUTE VERTICAL SIZE
   \global\voffset=\pg*t
   \global\vsize=\pg*l
   \global\advance\vsize by-\pg*t
   \global\advance\vsize by-\pg*b
   \if*title \global\advance \voffset by \tp*sk % lines from titlepage
             \global\advance \vsize by -\tp*sk % from titlepage
   \fi
   \global\*txth=\vsize}%             added for multi column routines
%
%   left center right
%
\def\lft#1{#1\hfill}
\def\ctr#1{\hfill #1\hfill}
\def\rt#1{\hfill #1}
%
\message{running heads, }
%
%  Page numbers
%
\def\setpagenumber#1{\global\pageno=#1}%
\let\spn=\setpagenumber
\def\pagenumber{\ifnum \pageno<0 \romannumeral-\pageno
                      \else \number\pageno\fi}%
\let\pn=\pagenumber
%
\def\rule{\vskip 1\baselineskip\hrule}%
%
%  Running heads
%
\newif\if*title
%
\newtoks\rh*r     \rh*r={\line{\twelvept\rt{\pagenumber}}\vs{\bl}}
\newtoks\rh*l     \rh*l={\line{\twelvept\rt{\pagenumber}}\vs{\bl}}
\newtoks\rf*r     \rf*r={}
\newtoks\rf*l     \rf*l={}
%
\def\runningheadformat#1{{%
   \def\*ttitle##1{\setbox\A=\vbox{##1}%
                   \D=\ht\A
                   \advance\D by -1in
                   \ifdim \D>\pg*t
                          \global\pg*t=\D
                          \global\advance\pg*t by 12pt
                          \advance\D by 1in
                          \message{<TEXT1> Warning, the top margin you
                                 have specified is less than the
                                 running top title. The top margin will
                                 be changed to \the\D}
                          \cpt*vs
                   \fi
                   \if*tempif \global\rh*l={\hrule width\hsize
                                            height0pt depth0pt ##1}
                   \else \global\rh*r={\hrule width\hsize
                                       height0pt depth0pt ##1}\fi
                  }% end *ttitle definition
   \def\evenpages##1{\*tempiftrue\*ttitle{##1}}%
   \def\oddpages##1{\*tempiffalse\*ttitle{##1}}%
   \def\bothpages##1{\*tempiftrue\*ttitle{##1}
                     \*tempiffalse\*ttitle{##1}}%
   \relax
#1
}}% END runningheadformat markup definition
\let \rhf = \runningheadformat
%
\def\runningfootformat#1{{%
   \def\*btitle##1{\setbox\A=\vbox{##1}%
                   \D=\ht\A
                   \advance\D by 1in
                   \ifdim \D>\pg*b
                          \global\pg*b=\D
                          \global\advance\pg*b by 12pt
                          \advance\D by -1in
                          \message{<TEXT1> Warning, the bottom  margin
                          you have specified is less than height of the
                          running bottom title.
                          The bottom margin will be
                          changed to \the\D}
                          \cpt*vs
                   \fi
                   \if*tempif \global\rf*l={##1}
                        \else \global\rf*r={##1}\fi
               }% end of bottomline
   \def\evenpages##1{\*tempiftrue\*btitle{##1}}%
   \def\oddpages##1{\*tempiffalse\*btitle{##1}}%
   \def\bothpages##1{\*tempiftrue\*btitle{##1}
                     \*tempiffalse\*btitle{##1}}%
   \relax
#1}}% END runningfootformat markup definition
\let \rff = \runningfootformat
%
\newdimen\tp*sk       \tp*sk=1in
\newtoks\tp*fl      \tp*fl={}
\def\titlepageformat#1{{%
   \def\titleleadskip##1{\global\tp*sk=##1}%
   \def\titlefootline##1{\global\tp*fl={##1}}%
   \relax
   #1
   \titlepage}} %end of titlepageformat
\let \tpf = \titlepageformat
%
\def\titlepage{\global\*titletrue
              \cpt*vs}%
\let\tp=\titlepage
\def\notitlepage{\global\*titlefalse
                \cpt*vs}%
\let\ntp=\notitlepage
%
\message{output, }
%
%   Output changed to permit binding adjust
%
\output={\*mkpg}
%
\def\*mkpg{\*badj
          \plainoutput
          \if*title \notitlepage\fi
          \ifnum\*pcount>0 \*blkpg\fi}% insert blank page
%
\def\plainoutput{\shipout\vbox{\*setcrops{\vbox{%
              \makeheadline
              \pagebody
              \makefootline}}}
         \advancepageno
         \ifnum\outputpenalty>-\@MM
              \else\dosupereject\fi}
%
\def\*setcrops#1{\setbox\A=\vbox{#1}
    \if*cropmarks
      \D=\wd\A
      \advance\D by 15pt
      \vbox{\hsize=\the\D
         \offinterlineskip\psk{0pt}\pin{0pt}
         \hbox to \D{\vrule width 5pt height .1pt depth 0pt
                        \hfill
                     \vrule width 5pt height .1pt depth 0pt}
         \hbox to \D{\vrule height 5pt width .1pt depth 0pt
                   \hfill
                   \vrule height 5pt width .1pt depth 0pt}
         \vs{\the\pg*t}
         \vs{3pt}
         \hbox to \D{\hfill\box\A\hfill}
         \vs{3pt}
         \hbox to \D{\vrule width .1pt height 5pt  depth 0pt
                   \hfill
                   \vrule width .1pt height 5pt  depth 0pt}
         \hbox to \D{\vrule width 5pt height .1pt depth 0pt
                        \hfill
                        \vrule width 5pt height .1pt depth 0pt}}
       \else \box\A\fi}
%
\def\makeheadline{% headline set for multiple and single column modes
   \if*title%  Do nothing if its a title page
   \else \setbox\A=\vbox{\hsize=\the\*txtw % hsize added to allow
   \ifodd\pageno\the\rh*r %                 headline to print the
   \else\the\rh*l\fi} %                     full width in multi
   \vbox to 0pt{\vskip-\ht\A\box\A\vss} %   column mode
   \fi} % This could replace the TEXT1@@ definition
%
\def\makefootline{\if*title
               \if*cropmarks \vbox{\hsize=\the\*txtw\the\tp*fl\vss}
                 \else\vbox to 0pt{\hsize=\the\*txtw\the\tp*fl\vss}\fi
         \else\if*cropmarks \vbox{\hsize=\the\*txtw\ifodd\pageno\the\rf*r
                                 \else\the\rf*l\fi\vss}
                 \else\vbox to 0pt{\hsize=\the\*txtw\ifodd\pageno\the\rf*r
                                 \else\the\rf*l\fi\vss}\fi % hsize added for multi column mode
          \fi} % This could replace the TEXT1@@ definition
%
\def\*badj{\ifdim\pg*a=\z@ % do nothing if binding adjust absent
          \else
             \ifodd\pageno % Binding adjust markup (revised 2/03/87
               \global\hoffset=\*lmar % offset equals left margin value
               \global\advance\hoffset by\pg*a % plus binding adjust
            \else
               \global\hoffset=\*lmar % offset equals left margin value
               \global\advance\hoffset by-\pg*a % plus binding adjust
         \fi\fi}% end binding adjust markup
\message{more misc, }
%
%     linebreak
%
\def\linebreak{\null\hfil\break}
\let\lbr=\linebreak
\let\toclinebreak=\linebreak
\let\toclbr=\linebreak
%
%  Horizontal skip
%
\def\horizontalspace#1{\null\hskip#1\relax}%
\let\hs=\horizontalspace
%
% skip down
%
\def\verticalspace#1{\vskip #1\relax}%
\let\vs=\verticalspace
%
\def\verticalspacekeep#1{\par
                       \hbox{\vbox{\vskip #1\relax}}}%
\let\vsk=\verticalspacekeep
%
%    raggedright (as TeX basic)
%
\newdimen\r*sk       \r*sk=0pt       % dimension to save right skip
\def\rightragged{\par \r*sk=\rightskip   \*rrtrue
   \if*msp \rightskip=\r*sk plus10em
           \spaceskip=1em \xspaceskip=1em
   \else  \rightskip=\r*sk plus2em\relax
          \spaceskip=.3333em \xspaceskip=.5em
          \fi}
\let\rr=\rightragged
%
%    leftragged
%
\newdimen\l*sk    \l*sk=0pt          % dimension to save left skip
\def\leftragged{\par %
   \l*sk=\leftskip
   \spaceskip=.35em
   \xspaceskip=.55em
   \parfillskip=0pt
   \leftskip=\l*sk plus2em\relax}
\let\lr=\leftragged
%
\newif\if*rr   \*rrfalse
\def\justify{\par
            \rightskip=\r*sk
            \*rrfalse
            \leftskip=\l*sk
            \spaceskip=0pt \xspaceskip=0pt
            \parfillskip=0pt plus1fil\relax}
\let\ju=\justify
%
%    spacing
%
\def\singlespace{\par\baselineskip=\*isk}
\let\ssp=\singlespace
\def\doublespace{\par\baselineskip=2\*isk}
\let\dsp=\doublespace
%
%     paragraph
%
\let\paragraph=\par
\def\paragraphindent#1{\parindent=#1}
\let\pin=\paragraphindent
\def\paragraphskip#1{\parskip=#1}
\let\psk=\paragraphskip
%
%  noindent
%
\let\nin=\noindent
%
%  hanging paragraph macro
%
\newdimen\*hin          \*hin=24pt
\def\hangingindent#1{\*hin=#1}
\let\hin=\hangingindent
%
\def\hangingparagraph{\par
                     \hangindent=\*hin
                     \hangafter=1
                     \noindent}
\let\hp=\hangingparagraph
\newif\if*mnr     \*mnrfalse        % left/right margin note indicator
\newtoks\e*mn     \e*mn={\tenpt\rr} % every margin note tokens
\newtoks\*mnw     \*mnw={54pt}      % margin note width tokens
\newtoks\*mngut   \*mngut={6pt}     % margin note gutter tokens
\message{margin note, }
%
%           Margin Note markup
%
\def\marginnoteformat#1{% MARGINAL NOTE FORMAT
   \def\position##1{% "left" or "right" margin note check
      \edef\T{##1}%
      \edef\U{left}%
      \edef\V{right}%
      \ifx \T\U \global\*mnrfalse   % left margin notes true
      \else\ifx \T\V \global\*mnrtrue % right margin notes true
           \else\global\*mnrfalse   % default, improper entry
              \write16{<TEXT1> You must specify "left" or "right" in %
                     the marginnoteformat markup. Left is the default.}%
      \fi\fi}% end margin note check
   \def\notewidth##1{\global\*mnw={##1}}% note width variable
   \def\notegutter##1{\global\*mngut={##1}}% gutter width variable
   \def\everymarginnote##1{\global\e*mn={##1}}% token variable
   #1}% insert arguments, END marginnoteformat
\let\mnf=\marginnoteformat           % set marginnoteformat abbreviation
%
\long\def\marginnote#1{% BEGIN MARGIN NOTE MACRO
   \if*CG
       \special{MARGINNOTE=true} % added 6/30/87 jkw for 8600 line numbering
       \fi
   \ifvmode\leavevmode\fi           % can't use vadjust in vertical mode
   \bgroup                          % begin margin note routine
   \def\rightragged{\r*sk=\rightskip   \*rrtrue
       \if*msp \rightskip=\r*sk plus10em %
          \spaceskip=1em \xspaceskip=1em %
       \else \advance\rightskip by 0pt plus1fil\relax %
          \spaceskip=.35em \xspaceskip=.55em %
       \fi}% par removed from TEXT1 version %
   \let\rr=\rightragged             %
%
   \tolerance=6000                  % increase line-breaking tolerance
   \hbadness=6000                   % increase warning tolerance
   \strut                           % sets line depth for vadjust
   \D=\dp\strutbox                  % capture depth of current line
   \the\e*mn                        % every margin note tokens
   \strut                           % sets strut to margin note font
   \parskip=0pt                     % cancel any paragraph skip
   \if*mnr                          % right margin notes true
      \vadjust{                     % make whats'it in text
      \rlap{\smash{                 % rightlap, make note depth zero
      \hskip\hsize                  % skip to right margin
      \hskip\the\*mngut             % make gutter
      \vtop{\hsize=\the\*mnw        % set reference point, new hsize
      \kern-\D                      % kern depth of current text line
      \kern-\ht\strutbox            % kern height of margin note text
      \nin#1}}}}%                   % input margin note text
   \else                            % left margin notes true
      \vadjust{                     % make whats'it in text
         \llap{\smash{              % leftlap, make note depth zero
         \vtop{\hsize=\the\*mnw     % gather vertical material with
         \kern-\D                   % kern depth of current text line
         \kern-\ht\strutbox         % kern height of margin note text
         \nin#1}%                     reference point at the top
         \hskip\the\*mngut}}}%        make margin note gutter
   \fi                              %
   \egroup                          % end margin notes routine
   \ignorespaces}% END margin note macro
\let\mn=\marginnote
%
\message{labels, }
%
% labeled definition macro
%
\newdimen\la*w   \la*w=1in         % Label width
\newtoks\la*g    \la*g={1em}       % Label gutter
\newtoks\la*s    \la*s={1\bl}      % Skip before label
\newtoks\la*f    \la*f={\rm}       % Label font
%
\long\def\label#1{\par\vskip\the\la*s
            \setbox\A=\vtop{\hsize=\la*w
                                 \leftskip=0pt
                                 \rightskip=0pt plus2em
                                 \tolerance=1600
                                 \noindent
                                 \the\la*f
                                 #1}%
            \hangindent=\la*w
            \advance \hangindent by \the\la*g
            \hangafter=1
            \noindent
            \setbox0=\hbox{\rlap{\box\A}}\ht0=0pt\dp0=0pt\box0%
            \hskip\la*w
            \hskip\the\la*g
            \ignorespaces}
\let\la=\label
%
\def\labelformat#1{{\def\skipbefore##1{\global\la*s={##1}}%
     \def\labelwidth##1{\global\la*w=##1}%
     \def\gutter##1{\global\la*g={##1}}%
     \def\everylabel##1{\global\la*f={##1}}%
     #1}}% End labelformat
\let\laf=\labelformat
%
\message{indents, }
%
%     leftindent
%
\newif\if*ok
\newif\if*zero
\def\leftindent#1{\par
                 \*zerofalse
                 \*okfalse
                 \e*p#1\end%
                 \if*zero \leftskip 0pt \fi
                 \advance \leftskip by #1
                 \l*sk=\leftskip   % l*sk used in justify reset
                 }%
\let\lin=\leftindent
%
\def\rightindent#1{\par
                  \*zerofalse  \*okfalse
                  \e*p#1\end%
                  \if*zero \rightskip 0pt \fi
                  \advance \rightskip by #1
                  \if*rr\rr\fi
                  \r*sk=\rightskip}% r*sk used in justify reset
\let\rin=\rightindent
%
%  \e*p will determine if the parm value passed to \leftindent
%  or \rightindent is to be relative to the previous indent, which means a
%  "+" or "-" will appear in front of the indent value. If no "+" or "-",
%  then the indent is to be absolute from the original left margin.
%
\def\e*p#1{\ifx #1\end \let \next = \relax%     e*p => Evaluate Parameter
   \else \if*ok \let \next = \e*p
       \else \global\*oktrue
             \ifx #1+ \let \next = \e*p
                  \else \ifx #1- \let \next = \e*p
                        \else \*zerotrue
                              \let \next = \e*p
   \fi\fi\fi\fi \next}
%
\message{block quotes, }
%
%              Blockquote
%
\newskip\bq*sb   \bq*sb = 6pt     % Default skip before
\newskip\bq*sa   \bq*sa = 6pt     % Default skip after
\newtoks\bq*f    \bq*f={\tenpt\leftindent{24pt}\rightindent{24pt}}
%
\def\blockquoteformat#1{{%
       \def\everyblockquote##1{\global\bq*f={##1}}%
       \def\skipbefore##1{\global\bq*sb=##1\relax}%
       \def\skipafter##1{\global\bq*sa=##1\relax}%
       #1}} %end of blockquoteformat
\let\bqf=\blockquoteformat
%
\def\blockquotebegin{\par\vskip\bq*sb\relax\begingroup
                    \the\bq*f }
\let\bqb=\blockquotebegin
\def\blockquoteend{\par\endgroup\vskip\bq*sa\relax}
\let\bqe=\blockquoteend
%
\message{footnotes, }
%
%
%
%                            Footnote
%
%    The "tfn" prefixed values are for the reference in the text of
%    the document.
%
\newif\if*tfn*dnum        \*tfn*dnumfalse    %"1." style
\newif\if*tfn*unum        \*tfn*unumtrue     %"1" style
\newif\if*tfn*pnum        \*tfn*pnumfalse    %"(1)" style
\newif\if*tfn*dlet        \*tfn*dletfalse    % "a." style
\newif\if*tfn*ulet        \*tfn*uletfalse    % "a"  style
\newif\if*tfn*plet        \*tfn*pletfalse    % "(a)" style
\newif\if*tfn*rbe         \*tfn*rbefalse     % reference after word
\newif\if*tfnupchar       \*tfnupchartrue    %
\newtoks\*tfn*rfont       \*tfn*rfont={\tenpt\rm}
%
%    The "nfn" prefixed values are for the reference as it is formatted
%    at the bottom of the page.
%
\newif\if*nfn*dnum        \*nfn*dnumtrue      %"1." style
\newif\if*nfn*unum        \*nfn*unumfalse     %"1" style
\newif\if*nfn*pnum        \*nfn*pnumfalse     %"(1)" style
\newif\if*nfn*dlet        \*nfn*dletfalse     % "a." style
\newif\if*nfn*ulet        \*nfn*uletfalse     % "a" style
\newif\if*nfn*plet        \*nfn*pletfalse     % "(1)" style
\newif\if*nfnupchar       \*nfnupcharfalse    % reference is not superscript
\newtoks\*nfn*rfont       \*nfn*rfont={\tenpt\rm}
\newtoks\*nfng            \*nfng={1em}
%
\newif\if*fn*llap         \*fn*llaptrue
\newtoks\fn*f
\newcount\fn*num
\newdimen\fn*div    \fn*div=2in
\newskip\fn*sadiv       \fn*sadiv=2.6pt  %default skip after divider
\newskip\fn*sbdiv       \fn*sbdiv=6pt  %default skip before divider
%
\def\footnotenumber{{\if*tfn*dnum \the\fn*num      % "1." style
               \else\if*tfn*unum \the\fn*num      % "1" style
               \else\if*tfn*pnum \the\fn*num      % "(1)" style
               \else\l*alphatrue \a*c{\fn*num}    % "a.", "a", and "(a)"
                 \fi\fi\fi
                 \removelastskip}}
%
\def\setfootnotenumber#1{\fn*num=#1}
\let\sfnn=\setfootnotenumber
%
\skip\footins=15pt plus 3pt minus 2pt
\fn*f={\tenpt\pin{20pt}\lin{0in}}
%
\def\footnoteformat#1{{%
 \def\everyfootnote##1{\global\fn*f{##1}}%
 \def\textreferencestyle##1{%
            \global\*tfn*dnumfalse
            \global\*tfn*unumfalse
            \global\*tfn*pnumfalse
            \global\*tfn*dletfalse
            \global\*tfn*uletfalse
            \global\*tfn*pletfalse
            \edef\T{##1}%
            \edef\U{(1)}%
            \edef\V{1}%
            \edef\Y{1.}%
            \edef\W{(a)}%
            \edef\X{a}%
            \edef\Z{a.}%
            \ifx\T\U \global\*tfn*pnumtrue
                \else\ifx\T\V \global\*tfn*unumtrue
                \else\ifx\T\Y \global\*tfn*dnumtrue
                \else\ifx\T\W \global\*tfn*plettrue
                \else\ifx\T\X \global\*tfn*ulettrue
                \else\ifx\T\Z \global\*tfn*dlettrue
                \else \message{<TEXT1> Error! textreferencestyle ##1
                            is not a valid style. Statement ignored.}
      \fi\fi\fi\fi\fi\fi}%   end reference style
  \def\textreferencefont##1{\global\*tfn*rfont{##1}}%
  \def\textreferenceplacement##1{\global\*tfn*rbefalse
                      \edef\T{##1}%
                      \edef\U{before}%
                      \edef\V{after}%
      \ifx\T\U \global\*tfn*rbetrue
          \else\ifx\T\V \global\*tfn*rbefalse
          \else \message{<TEXT1> Error! textreferenceplacement ##1
                         is invalid. Statement ignored.}
      \fi\fi}
  \def\textreferenceposition##1{\global\*tfnupcharfalse
                      \edef\T{##1}%
                      \edef\U{up}%
                      \edef\V{down}%
      \ifx\T\U \global\*tfnupchartrue
          \else\ifx\T\V \global\*tfnupcharfalse
          \else \message{<TEXT1> Error! textreferenceposition ##1
                         has an invalid parameter. Statement ignored.}
      \fi\fi}
 \def\notereferencestyle##1{
            \global\*nfn*dnumfalse
            \global\*nfn*unumfalse
            \global\*nfn*pnumfalse
            \global\*nfn*dletfalse
            \global\*nfn*uletfalse
            \global\*nfn*pletfalse
            \edef\T{##1}%
            \edef\U{(1)}%
            \edef\V{1}%
            \edef\Y{1.}%
            \edef\W{(a)}%
            \edef\X{a}%
            \edef\Z{a.}%
            \ifx\T\Y \global\*nfn*dnumtrue
                \else\ifx\T\U \global\*nfn*pnumtrue
                \else\ifx\T\V \global\*nfn*unumtrue
                \else\ifx\T\W \global\*nfn*plettrue
                \else\ifx\T\X \global\*nfn*ulettrue
                \else\ifx\T\Z \global\*nfn*dlettrue
                \else \message{<TEXT1> Error! notereferencestyle ##1
                            is not a valid style. Statement ignored.}
       \fi\fi\fi\fi\fi\fi}%   end reference style
  \def\notereferencefont##1{\global\*nfn*rfont{##1}}%
  \def\notereferenceposition##1{\global\*nfnupcharfalse
                      \edef\T{##1}%
                      \edef\U{up}%
                      \edef\V{down}%
      \ifx\T\U \global\*nfnupchartrue
          \else\ifx\T\V \global\*nfnupcharfalse
          \else \message{<TEXT1> Error! notereferenceposition ##1
                         has an invalid parameter. Statement ignored.}
      \fi\fi}%
  \def\skipbeforedivider##1{\global\fn*sbdiv=##1\relax}%
  \def\footnotedivider##1{\global\fn*div=##1\relax}%
  \def\notereferencegutter##1{\global\*nfng={##1}}%
  \def\skipafterdivider##1{\global\fn*sadiv=##1\relax}%
  #1
  \relax
  \skip\footins=0pt plus 3pt minus 2pt
  \global\advance\skip\footins by \fn*sbdiv\relax%
  \global\advance\skip\footins by \fn*sadiv\relax%
}} % end of footnoteformat
\let\fnf=\footnoteformat
%
\def\autofootnote{\global\advance\fn*num by 1
   \l*alphatrue
   \xdef\I{%
         \if*tfn*unum \the\fn*num%
         \else \if*tfn*ulet \a*c{\the\fn*num}%
         \else \if*tfn*plet (\a*c{\the\fn*num})%
         \else \if*tfn*pnum (\the\fn*num)%
         \else \if*tfn*dlet \a*c{\the\fn*num}.%
         \else \if*tfn*dnum \the\fn*num.%
         \fi\fi\fi\fi\fi\fi}%
   \def\K{%
         \if*nfn*unum \the\fn*num%
         \else \if*nfn*ulet \a*c{\the\fn*num}%
         \else \if*nfn*plet (\a*c{\the\fn*num})%
         \else \if*nfn*pnum (\the\fn*num)%
         \else \if*nfn*dlet \a*c{\the\fn*num}.%
         \else \if*nfn*dnum \the\fn*num.%
         \fi\fi\fi\fi\fi\fi}%
%
   \let\@sf=\empty
   \ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\fi
   \def\J{{\the\*tfn*rfont
          \if*tfnupchar \raise.7ex\hbox{\the\*tfn*rfont\I}%
                       \else {\I}\fi}}%
   \if*tfn*rbe \@sf\J\ignorespaces%
             \else\unskip\unskip\unskip\unskip\J\@sf\fi
   \def\M{{\the\*nfn*rfont
          \if*nfnupchar \raise.7ex\hbox{\K}%
                       \else {\K}\fi}}%
 \vfootnote{\M}}
\let\afn=\autofootnote
%
%        vfootnote redefined to include fn*f features
%        The addition of hsize=txtw in vfootnote for flexibleformat allows the
%
%        footnote to print across the full text width at the page bottom.
%
%        Footstrut redefined to baselineskip for consistent spacing in footnote
%
%
\def\footnoterule{\vskip-\fn*sadiv\hrule width\fn*div\vskip\fn*sadiv\relax}
%
%          redefined from PLAIN TEX to baselineskip. PLAIN TEX
%          used the height of a ten point strutbox
%
\def\vfootnote#1{% Vfootnote revised 11/6/86
   \insert\footins\bgroup
   \if*fix %                          if fixed mode do nothing to footnote
   \else\hsize=\*txtw\fi %            else print footnote across full width of page
  \interlinepenalty\interfootnotelinepenalty
  \setbox\strutbox=\hbox{\vrule height 1.8ex depth .6ex width 0pt}%
  \splittopskip\ht\strutbox %          top baseline for broken footnotes
  \splitmaxdepth\dp\strutbox
  \floatingpenalty\@MM
  \leftskip\z@skip
  \rightskip\z@skip
  \spaceskip\z@skip
  \xspaceskip\z@skip
  \the\fn*f
  \def\T{\parindent}% For some odd and unknown reason this def is needed
  \ifdim\the\parindent>0pt \global\*fn*llaptrue
     \else \ifdim\the\leftskip>0pt \global\*fn*llaptrue
     \else \global\*fn*llapfalse\fi\fi
  \leavevmode
  \if*fn*llap  \hbox to 0pt{\hss{#1\hskip\the\*nfng}}%
     \else \hbox{#1\hskip\the\*nfng}\fi%
 \ignorespaces
 \footstrut\futurelet\next\fo@t}% END vfootnote markup definition
%
\def\footstrut{\vbox to\baselineskip{}}
%
\message{endnotes, }
%
%                            Endnote
%
%    The "ten" prefixed values are for the reference in the text of
%    the document.
%
\newif\if*ten*num        \*ten*numtrue      % "[1]", "1" and "(1)" styles
\newif\if*ten*let        \*ten*letfalse     % "a" and "(a)" styles
\newif\if*ten*paren      \*ten*parenfalse   % "(1)" and "(a)" styles
\newif\if*ten*sb         \*ten*sbtrue       % "[1]" style
\newif\if*tenupchar      \*tenupcharfalse   % reference is not superscripted by
\newtoks\*tenrfont       \*tenrfont={\tenpt\rm}
%
%    The "nen" prefixed values are for the reference as it is formatted
%    at the end of a chapter or the end of the document.
%
\newif\if*nen*num        \*nen*numtrue      % "[1]", "1", "1." and "(1)" styles
\newif\if*nen*let        \*nen*letfalse     % "a" and "(a)" styles
\newif\if*nenll*per      \*nenll*pertrue    % "1." style
\newif\if*nen*paren      \*nen*parenfalse   % "(1)" and "(a)" styles
\newif\if*nen*sb         \*nen*sbfalse      % "[1]" style
\newif\if*nenupchar      \*nenupcharfalse   % reference isn't superscripted
\newtoks\*nenrfont       \*nenrfont={\tenpt\rm}
\newdimen\*neng          \*neng=1em
%
\newtoks\*enpar
\newcount\en*n
\newskip\en*s            \en*s=4pt
%
%
\def\endnotenumber{{\if*ten*num \the\en*n      % all numeric styles
               \else\l*alphatrue \a*c{\en*n}  % all alpha styles
                 \fi
                 \removelastskip}}
%
\def\setendnotenumber#1{\en*n=#1}
\let\senn=\setendnotenumber
%
\*enpar={\tenpt\pin{0in}\lin{1.2em}}
%
\def\endnoteformat#1{%
{\def\everyendnote##1{\global\*enpar{##1}}%
 \def\textreferencestyle##1{%
            \global\*ten*numfalse
            \global\*ten*letfalse
            \global\*ten*parenfalse
            \global\*ten*sbfalse
            \edef\T{##1}%
            \edef\U{[1]}%
            \edef\V{(1)}%
            \edef\W{1}%
            \edef\X{(a)}%
            \edef\Y{a}%
            \ifx\T\U \global\*ten*numtrue \global\*ten*sbtrue              % st
                \else\ifx\T\V \global\*ten*numtrue \global\*ten*parentrue  % st
                \else\ifx\T\W \global\*ten*numtrue                         % st
                \else\ifx\T\X \global\*ten*lettrue \global\*ten*parentrue  % st
                \else\ifx\T\Y \global\*ten*lettrue                         % st
                \else \message{<TEXT1> Error! textreferencestyle ##1
                            is not a valid style. Statement ignored.}
          \fi\fi\fi\fi\fi}%   end reference style
  \def\textreferencefont##1{\global\*tenrfont{##1}}%
  \def\textreferenceposition##1{\global\*tenupcharfalse
                      \edef\T{##1}%
                      \edef\U{up}%
                      \edef\V{down}%
      \ifx\T\U \global\*tenupchartrue
          \else\ifx\T\V \global\*tenupcharfalse
          \else \message{<TEXT1> Error! textreferenceposition ##1
                         has an invalid parameter. Statement ignored.}
      \fi\fi}
 \def\notereferencestyle##1{
            \global\*nen*numfalse
            \global\*nen*letfalse
            \global\*nen*parenfalse
            \global\*nenll*perfalse
            \global\*nen*sbfalse
            \edef\T{##1}%
            \edef\U{[1]}%
            \edef\V{(1)}%
            \edef\W{1}%
            \edef\X{(a)}%
            \edef\Y{a}%
            \edef\Z{1.}%
            \ifx\T\Z \global\*nen*numtrue \global\*nenll*pertrue        % style
                \else\ifx\T\U \global\*nen*numtrue \global\*nen*sbtrue     % st
                \else\ifx\T\V \global\*nen*numtrue \global\*nen*parentrue  % st
                \else\ifx\T\W \global\*nen*numtrue                         % st
                \else\ifx\T\X \global\*nen*lettrue \global\*nen*parentrue  % st
                \else\ifx\T\Y \global\*nen*lettrue                         % st
                \else \message{<TEXT1> Error! notereferencestyle ##1
                            is not a valid style. Statement ignored.}
          \fi\fi\fi\fi\fi\fi}%   end reference style
  \def\notereferencefont##1{\global\*nenrfont{##1}}%
  \def\notereferenceposition##1{\global\*nenupcharfalse
                      \edef\T{##1}%
                      \edef\U{up}%
                      \edef\V{down}%
      \ifx\T\U \global\*nenupchartrue
          \else\ifx\T\V \global\*nenupcharfalse
          \else \message{<TEXT1> Error! notereferenceposition ##1
                         has an invalid parameter. Statement ignored.}
      \fi\fi}%
  \def\notereferencegutter##1{\global\*neng=##1}%
  \def\skipbefore##1{\global\en*s=##1}%
  \relax
  #1}} % end of footnoteformat
\let\enf=\endnoteformat
%
\newlinechar=`\^^J
\newhelp\aenhelp{relax
  You may continue if you wish, but I'd be surprised
  if your job^^J
  finished without any errors when you print the endnotes. }
%
\def\err@#1{\errmessage{TEXT1 error: #1}}
\def\*aenerr{\errhelp=\aenhelp
   \catcode`@=11
   \errmessage{Results are unpredictable
                when you use autoendnote with asisbegin.
                Type h for more help}}%
\def\autoendnote{\global\advance\en*n by 1
   \if*aib \*aenerr \fi
   \l*alphatrue
   \edef\I{%
         \if*ten*paren (\unskip\fi
         \if*ten*sb [\unskip\fi
         \if*ten*num \the\en*n\fi
         \if*ten*let \a*c{\the\en*n}\fi
         \if*ten*paren \unskip)\fi
         \if*ten*sb \unskip]\fi}%
 \let\@sf=\empty
 \ifhmode \edef\@sf{\spacefactor=\the\spacefactor}%
    \else \let\@sf=\empty\fi
 \unskip\unskip
 \if*tenupchar \raise.7ex\hbox{\the\*tenrfont\I}\@sf%
         \else {\the\*tenrfont\I}\@sf\fi%
   \edef\J{%
         \if*nen*paren (\unskip\fi
         \if*nen*sb [\unskip\fi
         \if*nen*num \the\en*n\fi
         \if*nen*let \a*c{\the\en*n}\fi
         \if*nenll*per \unskip.\fi
         \if*nen*paren \unskip)\fi
         \if*nen*sb \unskip]\fi}%
 \en*o
 \immediate\write\en*f{\par%
     \the\*enpar%
     \noexpand\ENP{\the\*nenrfont\J}}%
 \en*w}
\let\aen=\autoendnote
%
%
\def\ENP#1{\indent\en*i{%
                   \if*nenupchar \raise.7ex\hbox{\the\*nenrfont#1}%
                   \else {\the\*nenrfont#1}\fi}}%
%
\def\en*i#1{\hbox to 0pt{\hss{#1}\hskip\*neng}\ignorespaces}
%
\newwrite\en*f
\newtoks\*endlbl
\if*PC
       \*endlbl={text1xx.end}
 \else
       \*endlbl={text1xx.endnotes}
\fi

\def\en*o{\immediate\openout\en*f=\the\*endlbl
            \immediate\write\en*f{\the\*enpar}%
            \edef\T{\par\vskip\the\en*s\relax}%
            \immediate\write\en*f{\T}%
            \global\def\en*o{}%
            }
%
\long\def\en*w#1{{\def\rm{\noexpand\rm}\def\it{\noexpand\it}%
  \def\underscore{\noexpand\us}\let\us=\underscore%
  \def\bd{\noexpand\bd}\def\cc{\noexpand\cc}\def\tt{\noexpand\tt}%
  \def\c{\noexpand\c}\def\L{\noexpand\L}\def\AA{\noexpand\AA}%
  \def\d{\noexpand\d}\def\O{\noexpand\O}\def\t{\noexpand\t}%
  \def\b{\noexpand\b}%
  \immediate\write\en*f{#1}}%
}% end definition of en*w
%
\def\printendnotes{\immediate\closeout\en*f%
  \begingroup%
  \input text1xx.endnotes%
  \par%
  \endgroup%
  \global\def\en*o{\immediate\openout\en*f=text1xx.endnotes%
                \immediate\write\en*f{\the\*enpar}%
                \edef\T{\par\vskip\the\en*s\relax}%
                \immediate\write\en*f{\T}%
                \global\def\en*o{}}%
  \setendnotenumber{0}}%
\let \pen=\printendnotes
%
\message{set command, }
%
%
\def\set#1#2{\l*alphafalse
\ifx#2\appendixnumber
   \edef\T{\the\*ap*num}%
   \E=\*ap*st%
\else\ifx#2\chapternumber
          \edef\T{\the\*ch*num}%
          \E=\*ch*st%
\else\ifx#2\endnotenumber
          \edef\T{\the\en*n}%
          \if*ten*num         \E=1%            % all numeric styles
            \else\l*alphatrue \E=2%            % all alpha styles
                 \fi%
\else\ifx#2\figurenumber
          \edef\T{\the\fi*n}%
          \E=1%
\else\ifx#2\footnotenumber
          \edef\T{\the\fn*num}%
          \if*tfn*dnum        \E=1%            % "1." style
            \else\if*tfn*unum \E=1%            % "1" style
            \else\if*tfn*pnum \E=1%            % "(1)" style
            \else\l*alphatrue \E=2%            % "a.", "a", and "(a)"
                 \fi\fi\fi%
\else\ifx#2\partnumber
          \edef\T{\the\*pt*num}%
          \E=\*pt*st%
\else\ifx#2\pagenumber
          \ifnum  \pageno<0 \edef\T{\romannumeral-\pageno}%
            \else \edef\T{\number\pageno}\fi%
          \E=1%
\else\ifx#2\subheadanumber
          \edef\T{\the\*sa*num}%
          \E=\sa*st%
\else\ifx#2\subheadbnumber
          \edef\T{\the\*sb*num}%
          \E=\sb*st%
\else\ifx#2\subheadcnumber
          \edef\T{\the\*sc*num}%
          \E=\sc*st%
\else\ifx#2\subheaddnumber
          \edef\T{\the\*sd*num}%
          \E=\sd*st%
\else\ifx#2\tablenumber
          \edef\T{\the\ta*n}%
          \E=1%
\else\message{<TEXT1> Error! You've entered a number I know nothing
      about. I'm going to ignore it and try to proceed.}%
          \E=0%
 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
\null                           % So, why is this needed??
\ifcase\E                       % NOP
  \or                          % set to a digit or lower case roman
     \expandafter\xdef\csname#1\endcsname{\T}%
  \or                          % set to a letter (upper or lower)
     \expandafter\xdef\csname#1\endcsname{{\a*c{\T}}}%
  \or                          % set to an uppercase roman numeral
     \expandafter\xdef\csname#1\endcsname{%
           \uppercase\expandafter{\romannumeral\T}}%
                      \fi}%
%
\message{centering, }
%
%   CENTERLINE                                          Rev.  9/6/88 drg
%
% Centerline with single and multiple line capabilities
\newif\if*afn*cl
\def\centerline#1{\par % Begin centerline markup
   \*afn*clfalse
   \B={}
   \N=0
   \bgroup
   \parindent=\z@ \relax            % zero indent
   \parfillskip=0pt plus1fil \relax % infinite stretch
   \everypar{\null\hskip0pt plus1fil\relax} % add infinite glue
   \def\linebreak{\hskip0pt plus1fil\relax\break
                  \null\hskip0pt plus1fil\relax}%
   \let\lbr=\linebreak
   \let\toclinebreak=\space
   \let\toclbr=\space
   \justify
   \let\*vfn=\vfootnote
   \let\*afn=\autofootnote
   \def\vfootnote##1##2{\edef\T{\the\B\noexpand\vfootnote{##1}{##2}}
              \global\B=\expandafter{\T}}
   \def\autofootnote{\global\*afn*cltrue
         \global\advance\N by 1   % count the notes done
         \*afn}
   \let\afn=\autofootnote
   \let\*fn=\footnote
   \def\footnote##1{\global\*afn*cltrue \*fn{##1}}
   \setbox\A=\vbox{#1\par % added to make skip with multiple lines
                     \global\C=\baselineskip
                     \setbox0=\hbox{(}
                     \global\advance\C by-\ht0}% end vbox
   \global\advance\fn*num by -\N    %subtract the number of notes done
   \let\autofootnote=\*afn \let\afn=\autofootnote
   \let\footnote=\*fn
   \let\vfootnote=\*vfn
   \ifdim\ht\A>\baselineskip \else \C=\z@ \fi
   \line{\hss\vbox{\vskip\C#1\par}\hss}% print centered lines
   \egroup
   \if*afn*cl           % then there were footnotes in the \cl
      \the\B
      \fi
   }% End centerline markup
\let\cl=\centerline
%
%   CENTER MULTIPLE LINES
%
\newif\if*ctrl                       % centerline indicator
\*ctrlfalse
\def\centerlinesbegin{\par\global\*ctrltrue
   \begingroup\pin{0pt}\psk{0pt}\leftskip=0pt plus1fil
   \parfillskip=0pt \rightskip=0pt plus1fil\obeylines\ignorespaces}%
\let\clb=\centerlinesbegin
\def\centerlinesend{\endgroup\par}
\let\cle=\centerlinesend
%
%   rightline      par added to PLAIN TEX macro
%
\long\def\rightline#1{\par\line{\hss#1}}
\let\rl=\rightline
%
%   right align multiple lines
%
\def\rightlinesbegin{\par\begingroup\parskip=0pt\parfillskip=0pt
   \leftskip=0pt plus1fil\obeylines}%
\let\rlb=\rightlinesbegin
\def\rightlinesend{\endgroup\par}%
\let\rle=\rightlinesend
%
\message{asis, }
%
%                 As is  or format off
%
\newskip\*aisb  \*aisb = 6pt     % Default skip before
\newskip\*aisa  \*aisa = 6pt     % Default skip after
\newtoks\*aif   \*aif={\leftindent{0in}}
\newif\if*aib   \*aibfalse           % centerline indicator
%
\def\asisformat#1{{%
 \def\everyasis##1{\global\*aif{##1}}%
 \def\skipbefore##1{\global\*aisb=##1\relax}%
 \def\skipafter##1{\global\*aisa=##1\relax}%
 \relax
#1}} % end of asisformat
\let\aif=\asisformat
%
%                 As is  or format off
\def\asisbegin{\par\*aibtrue\vskip\*aisb\relax\nointerlineskip
   \begingroup
   \let\*afn=\autofootnote          % save definition of autofootnote
              \def\leftindent##1{%
                    \*zerofalse \*okfalse
                    \e*p##1\end%
                    \if*zero \leftskip 0pt \fi
                    \advance \leftskip by ##1}%
              \let\lin=\leftindent
%
   \def\autofootnote{\endgroup      % end asis format
       \futurelet\next\ck*chr}%       pick next character, then check the pick
   \let\afn=\autofootnote           % reset abbreviation for autofootnote
   \def\ck*chr{\ifcat\bgroup        % if left brace
                  \noexpand\next    % do nothing
                   \let\next\gather % next equals gather
                \else               % no brace present
                    \let\next\re*group\fi % stop if no brace encountered
         \next}%
   \def\gather{\*afn                % call normal autofootnote
               \bgroup              % furnish left brace, read group
               \aftergroup\re*group % reset asis format
               \let\next}%            eat curly brace in text
                                    % group ends at text right curly brace
   \def\re*group{\*asisb}%            restore asis group
%
  \def\*asisb{\begingroup
              \def\singlespace{\baselineskip=\*isk}%
              \let\ssp=\singlespace
              \def\doublespace{\baselineskip=2\*isk}%
              \let\dsp=\doublespace
              \def\par{\leavevmode\endgraf}%
              \parskip0pt\parindent0pt
              \the\*aif
              \setupverbatim}\*asisb}
{\obeyspaces\gdef {\ }}
\def\obeyspaces{\@vobeyspaces}
{\catcode`\ =\active\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
\def\@xobeysp{\leavevmode\penalty10000\ }
\def\setupverbatim{\obeylines
                  \obeyspaces }
\let\aib=\asisbegin
\def\asisend{\endgroup\endgroup\vskip\*aisa\relax\*aibfalse}
\let\aie=\asisend
%
\message{box macros, }
%
%       Start of boxes
%
\font\dtscr=dt
%
%     Draw boxes
%
\newdimen\db*m            \db*m=3pt       % drawbox mat size
\newdimen\db*s            \db*s=.4pt      % drawbox rule size
\newdimen\db*sh           \db*sh=0pt      % drawbox shadow size
\newdimen\db*om           \db*om=0pt      % drawbox outer mat size
\newdimen\db*os           \db*os=0pt      % drawbox outer rule size
\newcount\db*ps           \db*ps=0        % drawbox percent of screen
%
\long\def\drawbox#1{\*box{\db*m}{\db*s}{\db*sh}{\db*om}{\db*os}{\db*ps}{#1}}
\let\db=\drawbox
%
\def\drawboxformat#1{{%
 \def\boxmat##1{\global\db*m=##1\relax}%
 \def\boxrule##1{\global\db*s=##1\relax}%
 \def\boxshadow##1{\global\db*sh=##1\relax}%
 \def\outerboxmat##1{\global\db*om=##1\relax}%
 \def\outerboxrule##1{\global\db*os=##1\relax}%
 \def\screen##1{\ifnum##1>64
                       \message{<TEXT1> Error. Screen can only be 0 through 64}
                       \global\db*ps=0
                \else\ifnum##1<0
                       \message{<TEXT1> Error. Screen can only be 0 through 64}
                       \global\db*ps=0
                \else \global\db*ps=##1\relax\fi\fi}%
 #1}} % end of drawboxformat
\let\dbf=\drawboxformat
%
\def\drawboxrulesize#1{\dbf{\boxrule{#1}}
 \message{<TEXT1> Warning: Use drawboxformat instead of drawboxrulesize}}
\let\dbrs=\drawboxrulesize
\def\drawboxmat#1{\dbf{\boxmat{#1}}
 \message{<TEXT1> Warning: Use drawboxformat instead of drawboxmat}}
\let\dbm=\drawboxmat
%
%     Paragraph boxes
%
\newdimen\pb*m            \pb*m=3pt       % paragraphbox mat size
\newdimen\pb*s            \pb*s=.4pt      % paragraphbox rule size
\newdimen\pb*sh           \pb*sh=0pt      % paragraphbox shadow size
\newdimen\pb*om           \pb*om=0pt      % paragraphbox outer mat size
\newdimen\pb*os           \pb*os=0pt      % paragraphbox outer rule size
\newcount\pb*ps           \pb*ps=0        % paragraphbox percent of screen
%
\long\def\paragraphbox#1{\par\hbox{%
       \*box{\pb*m}{\pb*s}{\pb*sh}{\pb*om}{\pb*os}{\pb*ps}{\vbox{%
                   \advance \hsize by -2\pb*m%
                   \advance \hsize by -2\pb*s%
                   \advance \hsize by -2\pb*om%
                   \advance \hsize by -2\pb*os%
                   \hrule width \hsize height 0pt depth 0pt%
                   #1}}}}
\let\pb=\paragraphbox
%
\def\paragraphboxformat#1{{%
 \def\boxmat##1{\global\pb*m=##1\relax}%
 \def\boxrule##1{\global\pb*s=##1\relax}%
 \def\boxshadow##1{\global\pb*sh=##1\relax}%
 \def\outerboxmat##1{\global\pb*om=##1\relax}%
 \def\outerboxrule##1{\global\pb*os=##1\relax}%
 \def\screen##1{\ifnum##1>64
                       \message{<TEXT1> Error. Screen can only be 0 through 64}
                       \global\pb*ps=0
                \else\ifnum##1<0
                       \message{<TEXT1> Error. Screen can only be 0 through 64}
                       \global\pb*ps=0
                \else \global\pb*ps=##1\relax\fi\fi}%
 #1}} % end of paragraphboxformat
\let\pbf=\paragraphboxformat

%  parameter list for *box:
%       #1 = boxmat size        #5 = outer boxrule
%       #2 = boxrule size       #6 = screen percent
%       #3 = box shadow size    #7 = value to be boxed
%       #4 = outer boxmat
%
%       Uncoment these 2 lines if using the boxes outside of TEXT1
%               \newbox\A
%               \newdimen\D
%               \newcount\E
%
\long\def\*box#1#2#3#4#5#6#7{%
\ifdim #5>0pt           % only if doing a "framed" box
         \setbox\A=\vbox{\*box{#1}{#2}{#3}{0pt}{0pt}{#6}{#7}}%
         \*box{#4}{#5}{#3}{0pt}{0pt}{#6}{\box\A}%
 \else%
   \setbox\A=\vbox{\hrule height#2                 % draw left side
       \hbox{\vrule width#2\hskip#1                % draw the top
          \vbox{\vskip#1
             \hbox{#7}
             \vskip#1}\hskip#1\vrule width#2}      % draw the bottom
       \hrule height#2}                            % draw the right side
   \ifdim #3=0pt \*scr{#6}{\box\A}                 % print if not a shadow
       \else   \D=\ht\A
               \advance \D by -#3
               \vbox{\hbox{\vrule width #3 height \D depth 0pt
                           \*scr{#6}{\copy\A}}
                     \hrule width \wd\A height #3 depth 0pt}
   \fi
 \fi}

%       #1 = Screen percent
%       #2 = box to be printed

\def\*scr#1#2{\ifnum#1=0 #2
       \else \setbox\A=\vbox{#2}
             \D=\ht\A
             \advance \D by \dp\A
             \E=#1%
             \advance \E by 48%
             \hbox{\vbox{\vbox to \D{\leaders
                       \hbox to \wd\A{\leaders\hbox{\dtscr\char\E}\hfill}
                       \vfill}
               \vskip -\D
               \box\A}}
       \fi
}
%
%       End of boxes
%
\message{more misc, }
%
%   page skip
%
\def\newpage{\vfil\break}% changed from vfill to vfil 11/4/86 bth
\let\np=\newpage
%
%   emptypage
%
\def\emptypage{\global\advance\*pcount by1}% produces empty pages
\let\ep=\emptypage
%
\def\*blkpg{ % BLANK PAGE MACRO, produces the empty page
   \loop %                            checks the number of empty pages
      \*badj %                        check for binding adjust
      \shipout\vbox{\*setcrops{\vbox{
                    \makeheadline   % shipout page with headline
                    \vbox to\*txth{\vfil} % and  fooline only
                    \makefootline}}}
      \global\advance\*pcount by\m@ne % decrement empty page counter
      \advancepageno                % advance the page number
   \ifnum\*pcount>0                 % check for empty pages
   \repeat}% END, empty page macro
%
\message{enumeration macros, }
%
%   List Level Macros
%
\newcount\ll*n             % Current list level number
\newcount\*toklimit
\newcount\*countlimit
\newcount\ll*stb           % list style start
\newcount\ll*cs            % list*enum*value*start
\newcount\ll*cmps          % list compare start
\newcount\ll*cmpe
\newcount\ll*lc            % Last level called
\*toklimit = 188           % Positions 224-253 are used for the 30 table column justification
                          % Positions 199-223 are used for the 25 different list level styles
                          % Tokens below 199 are available for \newtoks use.
                          % Token 190 is the build token
                          % 191-197 is the list level formats, level 1-7
                          % 198 is the bullet format
%
\*countlimit = 236         % Counters 244-250 are the styles for the 7 list levels
                          % Counters 237-243 are the enum counters for the 7 list levels
                          % Counters below 237 are available for \newcount use.
%
\ll*stb = 244              % Counters 244-250 correspond to the 7 list level styles,
                          %         value is index into tokens 199-223
\ll*cs = 237               % Counters 237-243 correspond to the 7 list level enum values.
\ll*cmps = 199             % Where to start in the \toks values for the 25 different list level styles
\ll*cmpe = 223             % Where to stop in the \toks values for the 25 different list level styles
%
\count244 = 1      % style "1."
\count245 = 4      % style "a."
\count246 = 7      % style "i."
\count247 = 2      % style "1)"
\count248 = 5      % style "a)"
\count249 = 8      % style "i)"
\count250 = 3      % style "(1)"
%
\newskip\ll*sb     \ll*sb = 0pt     % Default is no \vskip
\newskip\ll*sa     \ll*sa = 0pt       % Default is no \vskip
%
\toks191={\rm\leftindent{.5in}\gutter{1em}}      % level 1 indent is 5 characters initially
\toks192={\rm\leftindent{.8in}\gutter{1em}}      % level 2 indent
\toks193={\rm\leftindent{1.1in}\gutter{1em}}     % level 3 indent
\toks194={\rm\leftindent{1.4in}\gutter{1em}}     % level 4 indent
\toks195={\rm\leftindent{1.7in}\gutter{1em}}     % level 5 indent
\toks196={\rm\leftindent{2in}\gutter{1em}}       % level 6 indent
\toks197={\rm\leftindent{2.3in}\gutter{1em}}     % level 7 indent
\toks198={\rm\leftindent{+.5in}\gutter{1em}}     % bullets
%
                          % The 25 different List level styles:
\toks199 = {1.}            % Style 1
\toks200 = {1)}            %       2
\toks201 = {(1)}           %       3
\toks202 = {a.}            %       4
\toks203 = {a)}            %       5
\toks204 = {(a)}           %       6
\toks205 = {i.}            %       7
\toks206 = {i)}            %       8
\toks207 = {(i)}           %       9
\toks208 = {I.}            %      10
\toks209 = {I)}            %      11
\toks210 = {(I)}           %      12
\toks211 = {A.}            %      13
\toks212 = {A)}            %      14
\toks213 = {(A)}           %      15
\toks214 = {1]}            %      16
\toks215 = {[1]}           %      17
\toks216 = {a]}            %      18
\toks217 = {[a]}           %      19
\toks218 = {i]}            %      20
\toks219 = {[i]}           %      21
\toks220 = {I]}            %      22
\toks221 = {[I]}           %      23
\toks222 = {A]}            %      24
\toks223 = {[A]}           %      25
%
\newif\if*check    % True unless done parsing \listformat
\newif\ifll*lp
\newif\ifll*rp
\newif\if*lsqb
\newif\if*rsqb
\newif\ifll*per
\newif\ifll*dig
\newif\ifl*alpha
\newif\if*u*alpha
\newif\if*l*roman
\newif\if*u*roman
\newif\ifll*nil
%
\ll*niltrue
%
\outer\def\newtoks{\alloc@5\toks\toksdef\*toklimit}
\outer\def\newcount{\alloc@0\count\countdef\*countlimit}
%
%
%  Macros for producing enumerated list levels.
%
%
\def\listformat#1{{\begingroup%
         \def\liststyle##1{\par\N = 1
                           \toks190 = {}
                           \Z##1\end}%
         \def\Z##1{\ifx ##1\end \Y
                                \let \next = \relax
                   \else \ifnum \N > 7
                                \message{<TEXT1> Error! Too many list levels specified, 7 is max.
                                         Statement ignored.}
                                \let \next = \Z
                         \else \ifx ##1, \Y
                                         \advance \N by 1
                                         \toks190 = {}
                                         \let \next = \Z
                               \else \toks190 = \expandafter{\the\toks190 ##1}
                                     \let \next = \Z
                  \fi\fi\fi\next}%
         \def\Y{\*tempiffalse
                \*checktrue
                \E = \ll*cmps
                \loop \ifnum \E > \ll*cmpe
                             \*checkfalse
                             \*tempiftrue
                      \else  \edef\T{\the\toks190}%
                             \edef\U{\the\toks\E}%
                             \ifx\T\U
                                       \*checkfalse
                                       \F = \ll*stb
                                       \advance \F by -1
                                       \advance \F by \N
                                       \count\F = \E
                                       \advance \count\F by -\ll*cmps
                                       \global\advance \count\F by 1
                       \fi\fi
                  \if*check% Then
                             \advance \E by 1
                  \repeat
            \if*tempif \message{<TEXT1> Error! \the\toks190 is an invalid list
                                            level style. It will be ignored}
                \fi}%
         \def\skipbefore##1{\global\ll*sb = ##1\relax}%
         \def\skipafter##1{\global\ll*sa = ##1\relax}%
         \def\everylistlevel##1##2{\ifcase ##1
               \or \global\toks191 = {##2}
               \or \global\toks192 = {##2}
               \or \global\toks193 = {##2}
               \or \global\toks194 = {##2}
               \or \global\toks195 = {##2}
               \or \global\toks196 = {##2}
               \or \global\toks197 = {##2}
               \fi}%
         \def\everybullet##1{\global\toks198 = {##1}}%
         \relax
         #1
         \endgroup}}
%
\let \lif = \listformat
%
\def\listbegin{\vskip\ll*sb\relax
              \ll*nilfalse
              \begingroup
              \global\ll*lc = 0
              \ll*ini1
}
\let\lib=\listbegin
%
\def\listend{\vskip\ll*sa\relax
            \endgroup
            \ll*niltrue
}
\let\lie=\listend
%
\def\listlevel#1{\par
                \ifll*nil \message{<TEXT1> Warning, listbegin was not
                                   specified. The left margin indent will be set to zero.}
                               \else \if*dbl \else \if*tpl
      % If in multiple columns, don't end the group. Do so otherwise
                                     \else \endgroup
                                           \begingroup
                                           \fi\fi
                                     \fi
                \*tempiftrue                           % Usually not quite so pessimistic
                \ifcat 1#1 \ifnum #1 < 8 \*tempiffalse % OK if \listlevel1-\listlevel7
                    \fi\fi
                \if*tempif \message{<TEXT1> Warning, invalid list level "#1",
                                                listlevel1 will be used instead.}
                                    \listlevel1
                     \else \E = #1
                           \global\ll*n = \E
                           \advance \E by 1
                           \ll*ini\E
                           \par
                           \ll*fmt
                           \noindent
                           \txt*in{\ll*p{#1}}
                     \fi
}
\let \lil = \listlevel
%
\def\txt*in#1{\hbox to 0pt{\hss{#1}\hskip\*gut}\ignorespaces}
%
\def\ll*fmt{\*gut=1em
                 \ifcase \the\ll*n
                           \or \the\toks191
                           \or \the\toks192
                           \or \the\toks193
                           \or \the\toks194
                           \or \the\toks195
                           \or \the\toks196
                           \or \the\toks197
                           \fi}
%
\def\listresume{% rev. 7/6/87
   \if*start*bul\global\advance\ll*n by 1\global\*start*bulfalse\fi
                                    % account for bulleted list ffems
   \ifnum \ll*n < 2 \lin{0pt}
                    \global\ll*n = 1
              \else \global\advance \ll*n by -1
                    \ll*fmt
                    \fi
               \noindent\ignorespaces}
%
\let\lir=\listresume
%                              Evaluate Style
\def\e*s{%
   \global\ll*lpfalse
   \global\ll*rpfalse
   \global\*lsqbfalse
   \global\*rsqbfalse
   \global\ll*perfalse
   \global\ll*digfalse
   \global\l*alphafalse
   \global\*u*alphafalse
   \global\*l*romanfalse
   \global\*u*romanfalse
   \ifcase \count\F
           \or \global\ll*digtrue \global\ll*pertrue                        % Style  1
           \or \global\ll*digtrue \global\ll*rptrue                         %        2
           \or \global\ll*digtrue \global\ll*rptrue \global\ll*lptrue       %        3
           \or \global\l*alphatrue \global\ll*pertrue                       %        4
           \or \global\l*alphatrue \global\ll*rptrue                        %        5
           \or \global\l*alphatrue \global\ll*rptrue \global\ll*lptrue      %        6
           \or \global\*l*romantrue \global\ll*pertrue                      %        7
           \or \global\*l*romantrue \global\ll*rptrue                       %        8
           \or \global\*l*romantrue \global\ll*rptrue \global\ll*lptrue     %        9
           \or \global\*u*romantrue \global\ll*pertrue                      %       10
           \or \global\*u*romantrue \global\ll*rptrue                       %       11
           \or \global\*u*romantrue \global\ll*rptrue \global\ll*lptrue     %       12
           \or \global\*u*alphatrue \global\ll*pertrue                      %       13
           \or \global\*u*alphatrue \global\ll*rptrue                       %       14
           \or \global\*u*alphatrue \global\ll*rptrue \global\ll*lptrue     %       15
           \or \global\ll*digtrue \global\*rsqbtrue                         %       16
           \or \global\ll*digtrue \global\*rsqbtrue \global\*lsqbtrue       %       17
           \or \global\l*alphatrue \global\*rsqbtrue                        %       18
           \or \global\l*alphatrue \global\*rsqbtrue \global\*lsqbtrue      %       19
           \or \global\*l*romantrue \global\*rsqbtrue                       %       20
           \or \global\*l*romantrue \global\*rsqbtrue \global\*lsqbtrue     %       21
           \or \global\*u*romantrue \global\*rsqbtrue                       %       22
           \or \global\*u*romantrue \global\*rsqbtrue \global\*lsqbtrue     %       23
           \or \global\*u*alphatrue \global\*rsqbtrue                       %       24
           \or \global\*u*alphatrue \global\*rsqbtrue \global\*lsqbtrue     %       25
           \fi}

%
\def\ll*ini#1{\*start*bulfalse
              \ifnum #1 < 7 \N = #1
                            \advance \N by -1
                            \loop \ifnum \N < 7         % Loop max of 7 times
                                         \E = \N
                                         \advance \E by \ll*cs
                                         \global\count\E = 0
                                         \advance \N by 1
                                         \repeat
                            \fi}           % else don't initialize when \lil7
%
\def\ll*p#1{%
          \E = #1
          \advance \E by \ll*cs
          \advance \E by -1                 % \E is the listlevel value counter
          \F = \E
          \advance \F by 7
          \global\advance \count\E by 1     % Increment the list level counter
    %
    % If this level is same as previous level, no need to re-evaluate
    % the style to be used.
    %
          \ifnum \ll*lc = #1
                 \else \e*s
                       \global\ll*lc = #1
                 \fi
    %
    % Print the prefix punctuation
    %
          \ifll*lp  (\unskip                    % Styles 3, 6, 9, 12, 15
             \else \if*lsqb [\unskip            % Styles 17, 19, 21, 23, 25
                  \fi\fi
    %
    % Print the listlevel value, i.e. "1", "a", "A", "I", or "i".
    %
          \ifll*dig                            % Then its a style using digits
                         \number\count\E       % Print the number
                         \unskip               % To get rid of any following extra spaces
                 \else \ifl*alpha              % Then its a style with lower case letters
                         \a*c{\count\E}        % Print the lower case letters
                         \unskip               % To get rid of any following extra spaces
                 \else \if*u*alpha             % Then its a style with upper case letters
                         \a*c{\count\E}        % Print uppercase alpha
                         \unskip               % To get rid of any following extra spaces
                 \else \if*l*roman             % Then its a style with lower case roman numerals
                         \romannumeral\count\E % Print the lower case roman numeral
                         \unskip               % To get rid of any following extra spaces
                 \else \if*u*roman             % Print upper case roman numeral
                         \uppercase\expandafter{\romannumeral\count\E}
                         \unskip               % To get rid of any following extra spaces
                 \else \message{<TEXT1> Error! Something is awry in the listlevel style. Call a consultant.}
                 \fi\fi\fi\fi\fi
    %
    % Print the suffix punctuation
    %
          \ifll*per .\unskip             % Styles 1, 4, 7, 10, 13
             \else \ifll*rp )\unskip     % Styles 2, 3, 5, 6, 8, 9, 11, 12, 14, 15
                \else \if*rsqb ]\unskip  % Styles 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
          \fi\fi\fi
}
    %
    % This macro will convert an integer into a letter. In Appendix F of the
    % TeXbook you will see that octal character '141 is the small letter "a".
    % Octal 141=Decimal 97, Therefore, add 96 to value of listlevel counter.
    % For example, 1="a", 2="b", etc. The macro will also change 27="aa", 28="ab", etc.
    %
\def\a*c#1{%
 \ifnum #1 < 27 \G = #1%                 % Then its a single letter a-z
         \advance \G by 96%              % See the font table in App. F
         \ifl*alpha%                     % Then its a lower case style
                 \char\G%                % Print the character a-z
           \else \advance \G by -32%
                 \char\G%                % Print the character A-Z
           \fi%
   \else \G = #1%                        % else its "AA" or greater
         \divide \G by 26%               % This holds the first character
         \Q = #1%                        % Get ready to compute second letter
         \R = #1%
         \divide \R by 26%
         \multiply \R by 26%
         \ifnum #1 = \R%
                  \advance \G by -1%
                  \Q = 26%
            \else \advance \Q by -\R%
                  \fi%
         \a*c{\G}%                       % Get the first character a-z
         \unskip%
         \a*c{\Q}%                       % Get the second letter
         \fi}                            % End of \a*c
%
%  for setting the list level number other than sequential
%
\def\slln#1#2{{\E=#1
            \advance \E by -1
            \advance \E by \ll*cs
            \global\count\E = #2}}
\let\setlistlevelnumber=\slln
%
%  Bullets
%
\newif\if*start*bul
\newdimen\*bul*dim
\mathchardef\*bullet="220F
\def\bullet{% bullet defined for both math and text modes, rev. 6/25/87
   \ifmmode \*bullet                % math mode bullet
      \else                         % text or list bullet
         \ifll*nil                  % no list in progress, text bullet
            \leftskip = 0pt
            {\if*msp{*}\else\sy\char"0F\fi}
            \else                   % list in progress, list bullet
               \the\toks198
               \if*start*bul \lin{\*bul*dim}
                  \else \*bul*dim = \leftskip
                     \*start*bultrue \fi  % end starting bullet
               \par\noindent
               \txt*in{{\if*msp{*}\else\sy\char"0F\fi}}
            \fi % end list in progress check
      \fi % end math mode bullet check
}% end bullet
\let \bul=\bullet
%
%
%    The \gutter macro is actually used for several macros, \bul, \lil, etc.
%
\newdimen\*gut
\def\gutter#1{\*gut=#1}
\message{end of enumeration macros, }
\message{TOC, }
%
%    Macros for doing Table of Contents, Heads, Subheads, Tables, and Figures
%
\newtoks\*TCt   \*TCt={\cl{\twelvept\bd Table of Contents}\vs{1\bl}}
\newtoks\*ptf   \*ptf={\vs{1\bl}\cl{Part \partnumber}\cl{\parttitle}%
                       \vs{1\bl}\nin Part \partnumber \leader \pagenumber}
\newtoks\*ctf    \*ctf={\hangingchapternumber \chaptertitle \leader \pagenumber}
\newtoks\*atf    \*atf={\hangingappendixnumber \appendixtitle \leader \pagenumber}
\newtoks\*prtf   \*prtf={\nin \prefacetitle \leader \pagenumber}
\newtoks\*satf   \*satf={\leftindent{.5in}\nin \subheadatitle \leader \pagenumber}
\newtoks\*sbtf   \*sbtf={\leftindent{1in}\nin \subheadbtitle \leader \pagenumber}
\newtoks\*sctf   \*sctf={\leftindent{1.5in}\nin \subheadctitle \leader \pagenumber}
\newtoks\*sdtf   \*sdtf={\leftindent{2in}\nin \subheaddtitle \leader \pagenumber}
\newtoks\*btf    \*btf={\nin\bibtitle \leader \pagenumber}
\newtoks\*ftf    \*ftf={\hangingnumber{\figurenumber.} \figuretitle \leader \pagenumber}
\newtoks\*ftt    \*ftt={\newpage\cl{\twelvept\bd List of Figures}\line{Figure\hfill Page}}
\newtoks\*ttf    \*ttf={\hangingnumber{\tablenumber.}  \tabletitle\leader \pagenumber}
\newtoks\*ttt    \*ttt={\newpage\cl{\twelvept\bd List of Tables}\line{Table\hfill Page}}
\newtoks\*figt   \*figt={\bqb\tenpt\bd\hp Figure \figurenumber. \rm\figuretitle \bqe}
\newtoks\*tabt   \*tabt={\vs{\bl}\cl{\twelvept\bd Table \tablenumber}%
                        \cl{\twelvept\tabletitle}\vs{\bl}}
\newtoks\*partt  \*partt={\dumpinsertseject\titlepage
                         \hrule height 0pt depth 0pt\vfil
                         \cl{\twelvept\bd Part \partnumber}
                         \cl{\twelvept\bd\parttitle}
                         \vs{.5\tp*sk}
                         \np
                         \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                         \sfn{0}\stn{0}\sfnn{0}\senn{0}
                         }%
\newtoks\*chapt  \*chapt={\dumpinsertseject
                         \cl{\twelvept\bd Chapter \chapternumber}%
                         \cl{\twelvept\bd\chaptertitle}
                         \vs{1\bl}
                         \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                         }
\newtoks\*appt   \*appt={\dumpinsertseject %
                        \cl{\twelvept\bd Appendix \appendixnumber}
                        \cl{\twelvept\bd\appendixtitle}
                        \vs{1\bl}
                        \scn{0}\ssan{0}\ssbn{0}\sscn{0}
                        \ssdn{0}\sfn{0}\stn{0}
                        }
\newtoks\*pret   \*pret={\dumpinsertseject %
                        \cl{\twelvept\bd\prefacetitle}
                        \vs{1\bl}
                        \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                        }%
\newtoks\*subat  \*subat={\removelastskip\goodbreak
                         \vs{2\bl}
                         \nin\twelvept\bd\subheadatitle\par\nobreak
                         \vs{1\bl}\nobreak
                         \ssbn{0}\sscn{0}\ssdn{0}
                         }
\newtoks\*subbt  \*subbt={\removelastskip\goodbreak
                         \vs{2\bl}
                         \nin\twelvept\it\subheadbtitle\par\nobreak
                         \vs{1\bl}\nobreak
                         \sscn{0}\ssdn{0}
                         }
\newtoks\*subct  \*subct={\removelastskip\goodbreak
                         \vs{2\bl}
                         \nin\twelvept\subheadctitle\par\nobreak
                         \vs{1\bl}\nobreak
                         \ssdn{0}
                         }
\newtoks\*subdt   \*subdt={\goodbreak\twelvept\it\subheaddtitle.}
%
\newif\if*cont*chap   \*cont*chapfalse
\newif\if*TC*fig     \*TC*figtrue
\newif\if*TC*tab     \*TC*tabtrue
\newif\if*TC*prt     \*TC*prttrue
\newif\if*TC*chp     \*TC*chptrue
\newif\if*TC*app     \*TC*apptrue
\newif\if*TC*pre     \*TC*pretrue
\newif\if*TC*sha     \*TC*shatrue
\newif\if*TC*shb     \*TC*shbtrue
\newif\if*TC*shc     \*TC*shcfalse
\newif\if*TC*shd     \*TC*shdfalse
\newif\if*TCaopen    \*TCaopenfalse
\newif\if*TCbopen    \*TCbopenfalse
\newif\if*TCcopen    \*TCcopenfalse
%
\newdimen\*ch*hi     \*ch*hi=.25in
\newdimen\*ap*hi     \*ap*hi=.25in
\newdimen\fi*hi      \fi*hi=.25in
\newdimen\ta*hi      \ta*hi=.25in
%
\newcount\fi*n          \fi*n=0
\newcount\ta*n          \ta*n=0
\newcount\*pt*num       \*pt*num=0
\newcount\*pt*st        \*pt*st=1
\newcount\*ch*num       \*ch*num=0
\newcount\*ch*st        \*ch*st=1
\newcount\*ap*num       \*ap*num=0
\newcount\*ap*st        \*ap*st=2
\newcount\*sa*num       \*sa*num=0
\newcount\sa*st         \sa*st=1
\newcount\*sb*num       \*sb*num=0
\newcount\sb*st         \sb*st=1
\newcount\*sc*num       \*sc*num=0
\newcount\sc*st         \sc*st=1
\newcount\*sd*num       \*sd*num=0
\newcount\sd*st         \sd*st=1
%
\newwrite\TC*fa
\newwrite\TC*fb
\newwrite\TC*fc
%                        putincontents last modified 12/6/91
\def\notintoc#1{#1}
\newtoks\*toclbla
\newtoks\*toclblb
\newtoks\*toclblc
\if*PC
       \*toclbla={text1xx.tc1}
       \*toclblb={text1xx.tc2}
       \*toclblc={text1xx.tc3}
\else
       \*toclbla={text1xx.toc1}
       \*toclblb={text1xx.toc2}
       \*toclblc={text1xx.toc3}
\fi

\long\def\putincontents#1#2{\begingroup\ifcase #1 % Putincontents markup
         \message{<TEXT1> Warning, request for Contents entry other than
                     1, 2, or 3. Contents 1 will be assumed.}
            \putincontents1{#2}
      \or \if*TCaopen      % Do nothing if open, else open it
             \else \immediate\openout\TC*fa=\the\*toclbla
                   \immediate\write\TC*fa{\the\*TCt}%
                   \global\*TCaopentrue
             \fi
          \*defnoexpands
          \edef\T{\leftskip=0pt #2}%
          \edef\next{\write\TC*fa{\T\par}}%
          \next\relax
      \or \if*TCbopen      % Do nothing if open, else open it
             \else \immediate\openout\TC*fb=\the\*toclblb
                   \immediate\write\TC*fb{\the\*ftt}%
                   \global\*TCbopentrue\fi
          \*defnoexpands
          \edef\T{#2}%
          \edef\next{\write\TC*fb{\T\par}}%
          \next\relax
      \or \if*TCcopen      % Do nothing if open, else open it
             \else \immediate\openout\TC*fc=\the\*toclblc
                   \immediate\write\TC*fc{\the\*ttt}%
                   \global\*TCcopentrue\fi
          \*defnoexpands
          \edef\T{#2}%
          \edef\next{\write\TC*fc{\T\par}}%
          \next\relax
      \else \message{<TEXT1> Warning, request for Contents entry other than
                     1, 2, or 3. Contents 1 will be assumed.}
            \putincontents1{#2}
      \fi\endgroup}% End putincontents markup
\let\pic=\putincontents

\def\*defnoexpands{%
          \def\AA{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\AA}%
          \def\aa{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\aa}%
          \def\appendixnumber{\noexpand\noexpand\noexpand\san{\the\*ap*num}%
                              \noexpand\noexpand\noexpand\appendixnumber}%
          \def\autoendnote##1{}%
          \let\aen=\autoendnote%
          \def\autofootnote##1{}%
          \let\afn=\autofootnote%
          \def\bullet{\noexpand\noexpand\noexpand\bullet}%
          \let\bul=\bullet%
          \def\centerline##1{\noexpand\noexpand\noexpand\noexpand\noexpand%
              \noexpand\noexpand\centerline{##1}}%
          \let\cl=\centerline%
          \def\chapternumber{\noexpand\noexpand\noexpand\scn{\the\*ch*num}%
                             \noexpand\noexpand\noexpand\chapternumber}%
          \def\dag{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\dag}%
          \def\ddag{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\ddag}%
          \def\eightteenpt{\noexpand\noexpand\noexpand\eightteenpt}%
          \def\fourteenpt{\noexpand\noexpand\noexpand\fourteenpt}%
          \def\hangingappendixnumber{\noexpand\noexpand\noexpand%
                              \hangingappendixnumber{\the\*ap*num}}%
          \def\hangingchapternumber{\noexpand\noexpand\noexpand%
                              \hangingchapternumber{\the\*ch*num}}%
          \def\hangingindent##1{\noexpand\noexpand\noexpand%
                               \hangingindent{##1}}%
          \let\hin=\hangingparagraph%
          \def\hangingnumber##1{\noexpand\noexpand\noexpand\HFN{##1}}%
          \def\hangingparagraph{\noexpand\noexpand\noexpand\hangingparagraph}%
          \let\hp=\hangingparagraph%
          \def\justify{\noexpand\noexpand\noexpand\noexpand\noexpand\justify}%
          \let\ju=\justify%
          \def\leavevmode{\noexpand\noexpand\noexpand\leavevmode}%
          \def\leftindent##1{\leftskip=##1}%
          \let\lin=\leftindent%
          \let\linebreak=\space%
          \let\lbr=\space%
          \def\neg{\noexpand\noexpand\noexpand\noexpand\noexpand\neg}%
          \def\notintoc##1{}%
          \def\pagenumber{\noexpand\pagenumber}%
          \def\pn{\noexpand\pagenumber}%
          \def\par{\endgraf}%
          \def\paragraph{\endgraf}%
          \def\partnumber{\noexpand\noexpand\noexpand\sptn{\the\*pt*num}%
                          \noexpand\noexpand\noexpand\partnumber}%
          \def\subheadanumber{\noexpand\noexpand\noexpand\ssan{\the\*sa*num}%
                              \noexpand\noexpand\noexpand\subheadanumber}%
          \def\subheadbnumber{\noexpand\noexpand\noexpand\ssbn{\the\*sb*num}%
                              \noexpand\noexpand\noexpand\subheadbnumber}%
          \def\subheadcnumber{\noexpand\noexpand\noexpand\sscn{\the\*sc*num}%
                              \noexpand\noexpand\noexpand\subheadcnumber}%
          \def\subheaddnumber{\noexpand\noexpand\noexpand\ssdn{\the\*sd*num}%
                              \noexpand\noexpand\noexpand\subheaddnumber}%
          \def\tenpt{\noexpand\noexpand\noexpand\tenpt}%
          \def\tilde{\noexpand\noexpand\noexpand\noexpand\noexpand\tilde}%
          \def\toclinebreak{\noexpand\noexpand\noexpand\toclinebreak}%
          \def\toclbr{\noexpand\noexpand\noexpand\toclinebreak}%
          \def\twelvept{\noexpand\noexpand\noexpand\twelvept}%
          \def\underscore##1{\noexpand\noexpand\noexpand\noexpand\noexpand%
              \noexpand\noexpand\underscore{##1}}%
          \let\us=\underscore%
          \def\\{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\\}%
          \def\{{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\{}%
          \def\}{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\}}%
          \def\_{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\_}%
}
%
\def\tableofcontentsformat#1{{%
     \def\continuechapter##1{\global\*cont*chapfalse
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U \global\*cont*chaptrue
                \else \ifx \T\V   % Not continue chapter
                      \else \message{<TEXT1> Warning, argument to
                                     continuechapter is not "yes" or "no".
                                     "no" will be assumed}
                \fi\fi}%
     \def\toctitle##1{\global\*TCt={##1}}%
     \def\parttocformat##1{\global\*ptf={##1}}%
     \def\chaptertocformat##1{\global\*ctf={##1}}%
     \def\hangingchapterindent##1{\global\*ch*hi=##1}%
     \def\appendixtocformat##1{\global\*atf={##1}}%
     \def\hangingappendixindent##1{\global\*ap*hi=##1}%
     \def\prefacetocformat##1{\global\*prtf={##1}}%
     \def\subheadatocformat##1{\global\*satf={##1}}%
     \def\subheadbtocformat##1{\global\*sbtf={##1}}%
     \def\subheadctocformat##1{\global\*sctf={##1}}%
     \def\subheaddtocformat##1{\global\*sdtf={##1}}%
     \def\bibliographytocformat##1{\global\*btf={##1}}%
     \def\figuretoctitle##1{\global\*ftt={##1}}%
     \def\figuretocformat##1{\global\*ftf={##1}}%
     \def\hangingfigureindent##1{\global\fi*hi=##1}%
     \def\tabletoctitle##1{\global\*ttt={##1}}%
     \def\tabletocformat##1{\global\*ttf={##1}}%
     \def\hangingtableindent##1{\global\ta*hi=##1}%
  #1}}
\let\tocf=\tableofcontentsformat
%                       tableofcontents last modified on 12/6/91
\def\tableofcontents#1{%
     \edef\T{}\edef\U{#1}\ifx\T\U\E=-3\else\E=#1\fi
     \dumpinsertseject
     \setpagenumber{\E}
     \immediate\closeout\TC*fa
     \begingroup
     \def\noexpand{}
     \def\centerline##1{\par % Begin centerline markup
        \bgroup
        \parindent=0pt \relax           % zero indent
        \parfillskip=0pt plus1fil \relax
        \everypar{\null\hskip0pt plus1fil\relax} % add infinite glue
        \def\linebreak{\hskip0pt plus1fil\relax\break
                       \null\hskip0pt plus1fil\relax}%
        \let\toclinebreak=\linebreak  % linebreak is a space in text1xx.
        \let\toclbr=\linebreak        % toc1, toclbr available in toc
        \justify
        \setbox\A=\vbox{##1\par % figure skip for multiple centerline
                        \global\C=\baselineskip
                        \setbox0=\hbox{(}
                        \global\advance\C by-\ht0}% end vbox
     \line{\hss\vbox{\vskip\C##1\par}\hss} %
        \egroup
     }% End centerline markup
     \let\cl=\centerline
     \justify
     \parfillskip=0pt
     \rightskip=0pt plus 5em
     \input \the\*toclbla
     \endgraf
     \leftskip=0pt
     \if*TCbopen     % True only if figures were used.
                  \immediate\closeout\TC*fb
                  \input \the\*toclblb
                  \fi
     \if*TCcopen     % True only if tables were used.
                  \immediate\closeout\TC*fc
                  \input \the\*toclblc
                  \fi
     \endgroup}
\let\toc=\tableofcontents
%
\message{part, }
%
\long\def\partformat#1{{%
     \def\numberingstyle##1{\global\*pt*st=1
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U     % then style=1, the default
                  \else \ifx \T\V \global\*pt*st=2
                        \else \ifx \T\W \global\*pt*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the partformat command is
                                             invalid. Style 1 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*partt={##1}}%
     \def\incontents##1{\global\*TC*prttrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*prtfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in partformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\paf=\partformat
%
\def\parttitle{}
\def\part#1{\par % Part revised 11/5/86
   \global\def\parttitle{#1}%
   \global\advance \*pt*num by 1
   \bgroup
      \let\toclinebreak=\space      % prevent linebreak in title
      \let\toclbr=\space            % break in contents only
      \the\*partt                   % This prints the title in the text
   \egroup
   \par
   \D=\lastskip
   \removelastskip
   \if*TC*prt \putincontents1{\the\*ptf}\fi
   \ignorespaces
   \vs{\D}
}% END
%
\def\partnumber{{\ifcase \*pt*st
                   \or \the\*pt*num
                   \or \l*alphafalse
                       \a*c{\*pt*num}
                   \or \uppercase\expandafter{\romannumeral\the\*pt*num}
                   \fi}}
%
\def\setpartnumber#1{\global\*pt*num=#1}%
% \spn is setpagenumber
\let\sptn=\setpartnumber
%
\message{chapter, }
%
\long\def\chapterformat#1{{%
     \def\numberingstyle##1{\global\*ch*st=1
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U     % then style=1, the default
                  \else \ifx \T\V \global\*ch*st=2
                        \else \ifx \T\W \global\*ch*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the chapterformat command is
                                             invalid. Style 1 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*chapt={##1}}%
     \def\incontents##1{\global\*TC*chptrue%
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*chpfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in chapterformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\chf=\chapterformat
%
\def\chaptertitle{}
\def\chapter#1{\par
   \global\def\chaptertitle{#1}%
   \global\advance \*ch*num by 1
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*chapt                   % prints the title in the text
   \egroup
   \D=\lastskip
   \removelastskip
   \if*TC*chp \putincontents1{\the\*ctf}\fi
   \ignorespaces
   \vs{\D}
}% END chapter markup definition
%
\def\chapternumber{{\ifcase \*ch*st
                      \or \the\*ch*num
                      \or \l*alphafalse
                          \a*c{\*ch*num}
                      \or \uppercase\expandafter{\romannumeral\the\*ch*num}
                      \fi
                   \removelastskip}}
\let\chap=\chapter
%
\def\hangingchapternumber#1{\*ch*num=#1\laf{\labelwidth{\*ch*hi}}
   \label{\hskip\*ch*hi\llap{\chapternumber.}}}
%
\def\setchapternumber#1{\global\*ch*num=#1}%
\let\scn=\setchapternumber
%
\message{appendix,}
%
\long\def\appendixformat#1{{%
     \def\numberingstyle##1{\global\*ap*st=2
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U \global\*ap*st=1
                  \else \ifx \T\V \global\*ap*st=2
                        \else \ifx \T\W \global\*ap*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the appendixformat command is
                                             invalid. Style 2 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*appt={##1}}%
     \def\incontents##1{\global\*TC*apptrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*appfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in appendixformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\apf=\appendixformat
%
\def\appendixtitle{}
\def\appendix#1{% Appendix revised 11/3/86 (added toclinebreak)
   \global\def\appendixtitle{#1}%
   \global\advance \*ap*num by 1
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*appt                    % prints the appendix title
   \egroup
   \D=\lastskip
   \removelastskip
   \if*TC*app \putincontents1{\the\*atf}\fi
   \ignorespaces
   \vs{\D}
}% END appendix markup definition
%
\def\appendixnumber{{\ifcase \*ap*st
                      \or \the\*ap*num
                      \or \l*alphafalse
                          \a*c{\*ap*num}
                      \or \uppercase\expandafter{\romannumeral\the\*ap*num}
                      \fi
                    \removelastskip}}
\let\app=\appendix
%
\def\hangingappendixnumber#1{\*ap*num=#1\laf{\labelwidth{\*ap*hi}}
   \label{\hskip\*ap*hi\llap{\appendixnumber.}}}
%
\def\setappendixnumber#1{\global\*ap*num=#1}%
\let\san=\setappendixnumber
%
\message{preface,}
%
\long\def\prefaceformat#1{{%
     \long\def\titleformat##1{\global\*pret={##1}}%
     \def\incontents##1{\global\*TC*pretrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*prefalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in prefaceformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\prf=\prefaceformat
%
\def\prefacetitle{}
\def\preface#1{% Preface revised 11/3/86 (added toclinebreak)
   \global\def\prefacetitle{#1}%
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*pret                    % prints the title in the text
   \egroup
   \D=\lastskip
   \removelastskip
   \if*TC*pre \putincontents1{\the\*prtf}\fi
   \ignorespaces
   \vs{\D}
}% END preface markup definition
\let\pre=\preface
%
\message{subheads,}
%
\long\def\subheadaformat#1{{%
     \def\numberingstyle##1{\global\sa*st=1
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U     % then style=1, the default
                  \else \ifx \T\V \global\sa*st=2
                        \else \ifx \T\W \global\sa*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the subheadaformat command is
                                             invalid. Style 1 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*subat={##1}}%
     \def\incontents##1{\global\*TC*shatrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*shafalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in subheadaformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\shaf=\subheadaformat
%
\def\subheadatitle{}
\def\subheada#1{%
   \global\def\subheadatitle{#1}%
   \global\advance \*sa*num by 1
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*subat                    %  prints the title in the text
   \egroup
   \ifvmode \D=\lastskip \removelastskip
       \else \D=0pt\fi
   \if*TC*sha \putincontents1{\the\*satf}\fi
   \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi%
}% END subheada markup definition
%
\def\subheadanumber{{\ifcase \sa*st
                      \or \the\*sa*num
                      \or \l*alphafalse
                          \a*c{\*sa*num}
                      \or \uppercase\expandafter{\romannumeral\the\*sa*num}
                      \fi
                    \removelastskip}}
\let\sha=\subheada
%
\def\setsubheadanumber#1{\global\*sa*num=#1}%
\let\ssan=\setsubheadanumber
%
\long\def\subheadbformat#1{{%
     \def\numberingstyle##1{\global\sb*st=1
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U     % then style=1, the default
                  \else \ifx \T\V \global\sb*st=2
                        \else \ifx \T\W \global\sb*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the subheadbformat command is
                                             invalid. Style 1 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*subbt={##1}}%
     \def\incontents##1{\global\*TC*shbtrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U              % Already true
                \else \ifx \T\V \global\*TC*shbfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in subheadbformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\shbf=\subheadbformat
%
\def\subheadbtitle{}
\def\subheadb#1{%
   \global\def\subheadbtitle{#1}%
   \global\advance \*sb*num by 1
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*subbt                   % This  prints the title in the text
   \egroup
   \ifvmode \D=\lastskip \removelastskip
       \else \D=0pt\fi
   \if*TC*shb \putincontents1{\the\*sbtf}\fi
   \ignorespaces
   \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
}% END subheadb markup definition
%
\def\subheadbnumber{{\ifcase \sb*st
                      \or \the\*sb*num
                      \or \l*alphafalse
                          \a*c{\*sb*num}
                      \or \uppercase\expandafter{\romannumeral\the\*sb*num}
                      \fi
                    \removelastskip}}
\let\shb=\subheadb
%
\def\setsubheadbnumber#1{\global\*sb*num=#1}%
\let\ssbn=\setsubheadbnumber
%
\long\def\subheadcformat#1{{%
     \def\numberingstyle##1{\global\sc*st=1
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U     % then style=1, the default
                  \else \ifx \T\V \global\sc*st=2
                        \else \ifx \T\W \global\sc*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the subheadcformat command is
                                             invalid. Style 1 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*subct={##1}}
     \def\incontents##1{\global\*TC*shcfalse
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U \global\*TC*shctrue
                \else \ifx \T\V \global\*TC*shcfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in subheadcformat is not "yes" or "no".
                                     "no" will be assumed.}
                \fi\fi}%
   #1}}
\let\shcf=\subheadcformat
%
\def\subheadctitle{}
\def\subheadc#1{%
   \global\def\subheadctitle{#1}%
   \global\advance \*sc*num by 1
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
     \the\*subct                    % prints the title in the text
   \egroup
   \ifvmode \D=\lastskip \removelastskip
       \else \D=0pt\fi
   \if*TC*shc \putincontents1{\the\*sctf}\fi
   \ignorespaces
   \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
}% END subheadc markup
%
\def\subheadcnumber{{\ifcase \sc*st
                      \or \the\*sc*num
                      \or \l*alphafalse
                          \a*c{\*sc*num}
                      \or \uppercase\expandafter{\romannumeral\the\*sc*num}
                      \fi
                    \removelastskip}}
\let\shc=\subheadc
%
\def\setsubheadcnumber#1{\global\*sc*num=#1}%
\let\sscn=\setsubheadcnumber
%
\long\def\subheaddformat#1{{%
     \def\numberingstyle##1{\global\sd*st=1
             \edef\T{##1}%
             \edef\U{1}%
             \edef\V{A}%
             \edef\W{I}%
             \ifx \T\U     % then style=1, the default
                  \else \ifx \T\V \global\sd*st=2
                        \else \ifx \T\W \global\sd*st=3
                              \else \message{<TEXT1> Warning, numbering style
                                             in the subheaddformat command is
                                             invalid. Style 1 will be assumed.}
                  \fi\fi\fi}%
     \long\def\titleformat##1{\global\*subdt={##1}}%
     \def\incontents##1{\global\*TC*shdfalse
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U \global\*TC*shdtrue
                \else \ifx \T\V \global\*TC*shdfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in subheaddformat is not "yes" or "no".
                                     "no" will be assumed.}
                \fi\fi}%
   #1}}
\let\shdf=\subheaddformat
%
\def\subheaddtitle{}
\def\subheadd#1{%
   \global\def\subheaddtitle{#1}%
   \global\advance \*sd*num by 1
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*subdt                   % This  prints the title in the text
   \egroup
   \ifvmode \D=\lastskip \removelastskip
       \else \D=0pt\fi
   \if*TC*shd \putincontents1{\the\*sdtf}\fi
   \ignorespaces
   \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
}% END subheadd markup definition
%
\def\subheaddnumber{{\ifcase \sd*st
                      \or \the\*sd*num
                      \or \l*alphafalse
                          \a*c{\*sd*num}
                      \or \uppercase\expandafter{\romannumeral\the\*sd*num}
                      \fi
                    \removelastskip}}
\let\shd=\subheadd
%
\def\setsubheaddnumber#1{\global\*sd*num=#1}%
\let\ssdn=\setsubheaddnumber
%
\message{figures,}
%
%                       FIGURE MARKUP, bth 8/25/86
% Figure altered to allow alignments and other text markups within the
% arguments of figure and allow the immediate print feature (nofloat).
% Footnoting and multiple columns allowed in nofloat format only.
% Floating figures use top insert which uses a vbox that cancels any
% footnoting or multiple column setting. When \fullpage or \halfpage
% are used they must be the only argument in position one.
%
%
%              Figureformat revised on 4/5/88, drg
%
\catcode`* = 11
\catcode`@ = 11
\newif\if*fp \*fpfalse               % fullpage, used in figure
\newif\if*hp \*hpfalse               % halfpage, "            "
\newcount\fi*pos \fi*pos=1           % 1=\float,2=\nofloat,3=\midfloat,4=\keep
\newtoks\fi*sb     \fi*sb={1\bl}
\newtoks\fi*sa     \fi*sa={1\bl}
\def\figureformat#1{{%
   \def\skipbefore##1{\global\fi*sb={##1}}%
   \def\position{% printing position of figure, floating or nonfloating
       \def\nofloat{\global\fi*pos=2} % prints immediate
       \def\keep{\global\fi*pos=4}    % prints immediate, but on same pg
       \def\midfloat{\global\fi*pos=3}% uses midinsert
       \def\float{\global\fi*pos=1}}  % uses topinsert, the default
   \long\def\titleformat##1{\global\*figt={##1}}%
   \def\incontents##1{\global\*TC*figtrue
       \edef\T{##1}%
       \edef\U{yes}%
       \edef\V{no}%
       \ifx \T\U                % Already true
       \else \ifx \T\V \global\*TC*figfalse
             \else \message{<TEXT1> Warning, argument to
                    incontents in figureformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   \def\skipafter##1{\global\fi*sa={##1}}%
   #1}}% End figure format markup
\let\fif=\figureformat
%
\newif\if*tpreset                    % titlepage reset for figure markup
\*tpresetfalse                       % no reset necessary
%
%    Figure revised on 10/4/89, drg
%
\def\figuretitle{}
\def\figure{\futurelet\next\*fga}
\def\*fga{\ifcat\bgroup\noexpand\next \let\next\*fgb
   \else\let\next\*fgc\fi \next}
\def\*fgb{\global\setbox\A=\vbox\bgroup\aftergroup\*fgd\let\next}
\def\*fgc#1{\*fge{#1}}
\def\*fgd{\*fge{\box\A}}
\long\def\*fge#1#2{\par % Begin figure markup definition
   \gdef\figuretitle{#2}%
   \global\advance \fi*n by 1       % figure number
   \begingroup                      % trap null setting for lets
   \let\fullpage=\null              % make fullpage non-printable
   \let\halfpage=\null              % make halfpage non-printable
   \let\toclinebreak=\space         % prevent break in title
   \let\toclbr=\space               % prevent break in title
%      for value of \fi*pos: 1=\float,2=\nofloat,3=\midfloat,4=\keep
   \ifcase\fi*pos
     \or                            % BEGIN TOPINSERT FIGURES
      \if*fp                        % full page topinsert figure
         \if*title\*tpresettrue\notitlepage\fi % account for titlepage
         \topinsert                 % floating figures are topinserts
         \if*TC*fig \putincontents2{\the\*ftf}\fi
         \vbox to\vsize{\vrule width0pt\relax
            \vfil#1\the\*figt}
         \endinsert
         \if*tpreset\titlepage\*tpresetfalse\fi % reset titlepage
      \else\if*hp                   % half page topinsert figure
              \topinsert
              \if*TC*fig \putincontents2{\the\*ftf}\fi
              \vbox to.5\vsize{\vrule width0pt \relax
                  \vskip\the\fi*sb\relax
                   \vfil#1\the\*figt
                   \vskip\the\fi*sa\relax}
              \endinsert
                  \else              % variable size floating figure
                     \topinsert
                     \if*TC*fig \putincontents2{\the\*ftf}\fi
                     \vskip\the\fi*sb\relax
                     #1\the\*figt
                     \vskip\the\fi*sa\relax
                     \endinsert
      \fi\fi                        % end float full and half page check
     \or                            % BEGIN IMMEDIATE FIGURES
      \if*fp                        % FULL PAGE IMMEDIATE FIGURE
         \np                        % figure won't fit on current page
         \if*TC*fig \putincontents2{\the\*ftf}\fi % send to contents
         \vrule width0pt \relax     % prevent fil from going away
         \vfill\the\*figt           % fill to figure title
         \break                     % insures break at end of insert
      \else
         \if*hp                     % HALF PAGE IMMEDIATE FIGURE
            \dimen\D=.5\vsize       % depth check for half page figure
            \advance\dimen\D by\topskip % add topskip to .5 vsize
            \ifdim\pagetotal>\dimen\D\np\fi % won't fit on current page
            \vbox to.49\vsize{\vrule width0pt % keep skip
               \vfil\relax          % skip all but title height to
               #1\the\*figt         % print figure title
               \vskip\the\fi*sa\relax} % print half page figure title
            \if*TC*fig \putincontents2{\the\*ftf}\fi
         \else                      % VARIABLE SIZE IMMEDIATE FIGURE
            \vrule width0pt \relax  % prevent skip from going away
            \vskip\the\fi*sb\relax
            #1\the\*figt
            \vskip\the\fi*sa\relax
            \if*TC*fig \putincontents2{\the\*ftf}\fi
            \fi% End of check at half page
      \fi          % End of check at full page
     \or                            % BEGIN MIDINSERT FIGURES
      \if*fp                        % full page midinsert figure
         \if*title\*tpresettrue\notitlepage\fi % account for titlepage
         \topinsert                 % use topinsert for full page only
         \if*TC*fig \putincontents2{\the\*ftf}\fi
         \vbox to\vsize{\vrule width0pt\relax
            \vfil#1\the\*figt}
         \endinsert
         \if*tpreset\titlepage\*tpresetfalse\fi % reset titlepage
      \else\if*hp                   % half page midinsert figure
              \midinsert
              \if*TC*fig \putincontents2{\the\*ftf}\fi
              \vbox to.5\vsize{\vrule width0pt \relax
                  \vskip\the\fi*sb\relax
                   \vfil#1\the\*figt
                   \vskip\the\fi*sa\relax}
              \endinsert
                  \else              % variable size floating figure
                     \midinsert
                     \if*TC*fig \putincontents2{\the\*ftf}\fi
                     \vskip\the\fi*sb\relax
                     #1\the\*figt
                     \vskip\the\fi*sa\relax
                     \endinsert
      \fi\fi                        % end float full and half page check
     \or                            % BEGIN IMMEDIATE KEEP FIGURES
      \if*fp                        % FULL PAGE IMMEDIATE FIGURE
         \np                        % figure won't fit on current page
         \if*TC*fig \putincontents2{\the\*ftf}\fi % send to contents
         \vrule width0pt \relax     % prevent fil from going away
         \vfill\the\*figt           % fill to figure title
         \break                     % insures break at end of insert
      \else
         \if*hp                     % HALF PAGE IMMEDIATE FIGURE
            \dimen\D=.5\vsize       % depth check for half page figure
            \advance\dimen\D by\topskip % add topskip to .5 vsize
            \ifdim\pagetotal>\dimen\D\np\fi % won't fit on current page
            \vbox to.49\vsize{\vrule width0pt % keep skip
               \vfil\relax          % skip all but title height to
               #1\the\*figt         % print figure title
               \vskip\the\fi*sa\relax} % print half page figure title
            \if*TC*fig \putincontents2{\the\*ftf}\fi
         \else                      % VARIABLE SIZE IMMEDIATE FIGURE
            \vrule width0pt \relax  % prevent skip from going away
            \vskip\the\fi*sb\relax
            \vbox{#1\the\*figt
            \vskip\the\fi*sa\relax}
            \if*TC*fig \putincontents2{\the\*ftf}\fi
            \fi% End of check at half page
      \fi          % End of check at full page
      \fi          % End of case statement
   \endgroup                        % end trap for null settings
   \global\*fpfalse                        % reset full page
   \global\*hpfalse                        % reset half page
}% End figure markup
\let\fig=\figure                     % abbreviation for figure markup
%
\def\fullpage{\global\*fptrue}%               used in figure markup
\def\halfpage{\global\*hptrue}%               used in figure markup
%
\def\figurenumber{\the\fi*n}%
%
\def\HFN#1{\laf{\labelwidth{\fi*hi}}\label{#1}}%
%
\def\setfigurenumber#1{\global\fi*n=#1}%
\let\sfn=\setfigurenumber
%
%      Redefined from PLAIN TEX
%
\def\topinsert{\@midfalse\p@gefalse\t*ptrue\@ins}
%
\def\midinsert{%                       redefine from plain tex
   \@midtrue
   \if*fix %                          don't change meaning in fixed mode
   \else %                         change midinsert to topinsert in flex mode
      \if*dbl\global\@midfalse\fi % leave old meaning in single column mode
      \if*tpl\global\@midfalse\fi %
   \fi\@ins} %
%
\def\@ins{\par\begingroup
   \if*fix                          % do nothing in fixed mode
   \else\ift*p\hsize=\*txtw\fi\fi   % ift*p hsize of insert set
   \setbox0=\vbox\bgroup}           % insert set to full page width
%
%        Tables
%
\def\tableformat#1{{%
     \long\def\titleformat##1{\global\*tabt={##1}}%
     \def\incontents##1{\global\*TC*tabtrue
           \edef\T{##1}%
           \edef\U{yes}%
           \edef\V{no}%
           \ifx \T\U                % Already true
                \else \ifx \T\V \global\*TC*tabfalse
                      \else \message{<TEXT1> Warning, argument to
                                     incontents in tableformat is not "yes" or "no".
                                     "yes" will be assumed.}
                \fi\fi}%
   #1}}
\let\taf=\tableformat
%
\def\tabletitle#1{{% Tabletitle revised 11/3/86 (added toclinebreak)
   \def\tabletitle{#1}%
   \global\advance \ta*n by 1
   \par
   \bgroup
      \let\toclinebreak=\space
      \let\toclbr=\space
      \the\*tabt                    % prints the title in the text
   \egroup
   \par
   \D=\lastskip
   \removelastskip
   \if*TC*tab \putincontents3{\the\*ttf}\fi
   \ignorespaces
   \vs{\D}
}}% END tabletitle markup definition
\let\tat=\tabletitle
%
\def\tablenumber{\the\ta*n}
\def\HTN#1{\laf{\labelwidth{\ta*hi}}\label{#1}}
%
\def\settablenumber#1{\global\ta*n=#1}%
\let\stn=\settablenumber
%
\message{8600 macros,}
%
%     Macros specific for the 8600 (JKW) revision 11/25/86
%
\newskip\evenmar
\newskip\oddmar
\evenmar=0pt
\oddmar=0pt
\def\evenpagemargin#1{{\setbox0=\hbox{\global\evenmar=#1 pt}}
                     \special{even_page_margin=\the\evenmar}}%
\let\epm=\evenpagemargin
\def\oddpagemargin#1{{\setbox0=\hbox{\global\oddmar=#1 pt}}
                    \special{odd_page_margin=\the\oddmar}}%
\let\opm=\oddpagemargin
\def\linenumberfont#1{\B={#1}
                     \special{line_number_font=\the\B}}%
\let\lnf=\linenumberfont
\def\poplevel#1{\B={#1}
               \special{pop_level=\the\B}}%
\let\ppl=\poplevel
\def\lineinterval#1{\B={#1}
                   \special{line_interval=\the\B}}%
\let\lint=\lineinterval
\def\numberinglines#1{\special{numbering_lines=#1}}%
\let\numl=\numberinglines
\def\countinglines#1{\special{counting_lines=#1}}%
\let\coul=\countinglines
\def\printingnumbers#1{\special{printing_numbers=#1}}%
\let\prin=\printingnumbers
\def\linefootnotereference{\special{line_footnote_reference}}%
\let\lfnr=\linefootnotereference
%
\message{ more misc,}
%
%     To be able to use PLAIN.TEX math code
%
\def\plaintexmathon{%
  \catcode`\$=3\relax
  \catcode`@=12\relax}
\let\dollarmathon=\plaintexmathon
\def\atmathon{%
  \catcode`\$=12\relax
  \catcode`@=3\par}
%
\message{multiple columns,}
%
\outer\def\bye{\par\onecolumn\vfill\supereject\end} % redefined from PLAIN.TEX
%                                      to close multiple column routines
%
%          MULTIPLE COLUMNS
%          Brian Harvey 1/20/85
%
%     Macros to be imbedded into TEXT1 to drive the multiple column
%     routines FLEXCOL and FIXCOL.
%
\newbox\*lftcol                      % left column box, fixed column mode, TeXbook name
\newbox\*midcol                      % center column, fixed column mode, TeXbook name
\newbox\*ppage                       % page accummulated before multicolumn, partialpage, flex
\newcount\*pcount                    % counter for empty page macro, keeps track of the
\*pcount=0                           % number of empty page calls
\newdimen\*bigch                     % Twc=2vise, Thc=3vsize---bigcolumnheight
\newdimen\*txtw                      % textwidth, stores full hsize for multicolumn mode
\let\galleywidth=\*txtw              % create galleywidth = text width
\newdimen\*txth                      % textheight, stores page height for multicolumn mode
\*txtw=\hsize                        % initialize full page text width for multicolumn mode
\*txth=\vsize                        % initialize full text height for multicolumn mode
\newif\ift*p                         % ift*p required to check for midinsert in flex mode
\newif\if*dbl                        % double column indicator
\*dblfalse                           % set double column format indicator false
\newif\if*tpl                        % triple column indicator
\*tplfalse                           % set triple column format indicator false
\newif\if*fix                        % format indicator (fixed if true, otherwise flexible)
\newif\if*norule                     % used to suppress rules in output routines
\newif\if*plain                      % check for plain.tex, plainoutput
\*plaintrue                          % set plain format indicator true
\newtoks\*twcw                       % width for twocolumns
\newtoks\*thcw                       % width for threecolumns
\newtoks\*twcgut                     % gutter for twocolumns
\newtoks\*thcgut                     % gutter for threecolumns
\newtoks\*clrw                       % rule width between multiple columns
\newtoks\*mskb                       % skip before multicolumn format
\newtoks\*mska                       % skip after multicolumn format
\*twcw={.48\*txtw}                   % initialize column and gutter default widths
\*thcw={.31\*txtw}
\*twcgut={.04\*txtw}
\*thcgut={.035\*txtw}
\*clrw={0.0pt}                       % initialize between column rule width
\*mskb={6pt plus 3pt minus 2pt}      % initialize skips before and after multiple columns:
\*mska={6pt plus 3pt minus 2pt}      % used in multiple column flex mode only

\def\fixedformat{\global\*fixtrue}   % calls fixed format file
\let\fixf=\fixedformat
\global\*fixfalse                    % sets up flex format
%
\def\multicolumnformat#1{% format macro for both fixed and flexible, texblock is multicol
   \def\twocolumnwidth##1{\global\*twcw={##1}}%
   \def\threecolumnwidth##1{\global\*thcw={##1}}%
   \def\twocolumngutter##1{\global\*twcgut={##1}}%
   \def\threecolumngutter##1{\global\*thcgut={##1}}%
   \def\columnrulewidth##1{\global\*clrw={##1}}%
   \def\skipbefore##1{\global\*mskb={##1}}% flex mode only
   \def\skipafter##1{\global\*mska={##1}}% flex mode only
   #1\*txtwck}% END, multicol format
\let\mcf=\multicolumnformat
%
%          COLUMN WIDTH CHECK FOR MULTIPLE COLUMN ROUTINES
%
\def\*txtwck{% check column width and gutters against hsize
   \dimen@=\the\*twcw
   \dimen@=2\dimen@
   \dimen1=\the\*twcgut
   \advance\dimen@ by\dimen1
   \ifdim\dimen@ > \*txtw         % if greater than current pagewidth
      \dimen1=\dimen@
      \advance\dimen1 by-\*txtw
      \advance\dimen@ by -\*txtw
      \ifdim\dimen@ > 1pt % only warn if over 1pt
         \immediate\write16{%
         <TEXT1> Warning! The column and gutter widths specified%
         for two columns are wider than the current pagewidth by%
         \the\dimen1 . }
         \fi
   \else\ifdim\dimen@ < \*txtw   % if less than current pagewidth
      \dimen1=\*txtw
      \advance\dimen1 by-\dimen@
      \advance\dimen@ by -\*txtw
      \multiply\dimen@ by -1
      \ifdim\dimen@ > 1pt  % Only warn if over 1pt difference
         \immediate\write16{%
         <TEXT1> Warning! The column and gutter widths specified%
         for two columns are shorter than the current pagewidth by%
         \the\dimen1 . }
         \fi
      \fi\fi
%
   \dimen@=\the\*thcw               % width of each column, three columns
   \dimen@=3\dimen@                 % three columns
   \dimen1=\the\*thcgut             % width of the gutters
   \dimen1=2\dimen1                 % two gutters in three columns
   \advance\dimen@ by\dimen1        % add columns and gutters together
   \ifdim\dimen@ > \*txtw           % if greater than current pagewidth
      \dimen1=\dimen@
      \advance\dimen1 by-\*txtw
      \advance\dimen@ by -\*txtw
      \ifdim\dimen@ > 1pt % only warn if over 1pt
         \immediate\write16{%
         <TEXT1> Warning! The column and gutter widths specified%
         for three columns are wider than the current pagewidth by%
         \the\dimen1 . }
         \fi
   \else\ifdim\dimen@ < \*txtw   % if less than current pagewidth
      \dimen1=\*txtw
      \advance\dimen1 by-\dimen@
      \advance\dimen@ by -\*txtw
      \multiply\dimen@ by -1
      \ifdim\dimen@ > 1pt  % Only warn if over 1pt difference
         \immediate\write16{%
         <TEXT1> Warning! The column and gutter widths specified%
         for three columns are shorter than the current pagewidth by%
         \the\dimen1 . }
         \fi
      \fi\fi
   } % END, widthcheck
%
\newif\if*start*mc  \*start*mcfalse
\def\twocolumns{% TWOCOLUMNS set-up macro
   \if*fix \input fixcol            % input fixed format file
      \immediate\write-16{% write to log file only
      <TEXT1> Fixed format for multiple columns in effect. }
      \gdef\twocolumns{\*fixtwc}%     redefine twocolumns, fixed mode
      \gdef\threecolumns{\*fixthc}%   redefine threecolumns, fixed mode
   \else \input flexcol             % input flex format file
      \immediate\write-16{%           write to log file only
      <TEXT1> Flexible format for multiple columns in effect. }
      \gdef\twocolumns{\*flextwc}%    redefine twocolumns, flex mode
      \gdef\threecolumns{\*flexthc}\fi% redefine threecolumns, flex mode
  \twocolumns
  \global\let\twc=\twocolumns       % to current meaning of twocolumns
  \global\let\thc=\threecolumns     % to current meaning of threecolumns
}% END twocolumns markup
%
\let\twc=\twocolumns
%
\def\threecolumns{% THREECOLUMNS set-up macro
   \*start*mctrue
   \if*fix \input fixcol            % input fixed format file
      \immediate\write-16{%           write to log file only
      <TEXT1> Fixed format for multiple columns active. }
      \gdef\twocolumns{\*fixtwc}%     redefine twocolumns, fixed mode
      \gdef\threecolumns{\*fixthc}%   redefine threecolumns, fixed mode
   \else \input flexcol             % input flex format file
      \immediate\write-16{%           write to log file only
       <TEXT1> Flexible format for multiple columns active. }
      \gdef\twocolumns{\*flextwc}%    redefine twocolumns, flex mode
      \gdef\threecolumns{\*flexthc}\fi% redefine threecolumns, flex mode
  \threecolumns
  \global\let\twc=\twocolumns       % to current meaning of twocolumns
  \global\let\thc=\threecolumns     % to current meaning of threecolumns
}% End threecolumns markup
%
\let\thc=\threecolumns
%
\let\onecolumn=\null                 % Empty definition for single format
\let\oc=\onecolumn
%
\let\newcolumn=\newpage
\let\nc=\newpage
\newif\if*nc    \*ncfalse            % true if \nc was used in mult cols
%
\global
\newhelp\balerrhelp{onecolumn The best approach to solve this problem
   is to shorten the text by a line. You could also add or delete a
   paragraph or change the column size. }%
%
\message{index macros,}
%
%                     Here are the macros necessary for doing an index
%
\newtoks\*ixarc     \*ixarc={case=no}                % IndeX A Respect Case
\newcount\*ixpn                                      % Page number type: 0,2,4,6, or 9
\newtoks\*ixast     \*ixast={style=3}                % IndeX A STyle
\newtoks\*ixald     \*ixald={leadering=no}           % IndeX A LeaDering
\newtoks\*ixabr     \*ixabr={\vs{1\bl}}              % IndeX A BReak
\newtoks\*ixasea    \*ixasea={1em}                   % IndeX A SubEntry 1
\newtoks\*ixaseb    \*ixaseb={2em}                   % IndeX A SubEntry   2
\newtoks\*ixaev     \*ixaev={\tenpt}          % Index A every time
\newtoks\*ixahp     \*ixahp={1.5em}                  % Index A hang indent
\newtoks\*ixbrc     \*ixbrc={case=no}                % IndeX B Respect Case
\newtoks\*ixbst     \*ixbst={style=3}                % IndeX B STyle
\newtoks\*ixbld     \*ixbld={leadering=no}           % IndeX B LeaDering
\newtoks\*ixbbr     \*ixbbr={\vs{1\bl}}              % IndeX B BReak
\newtoks\*ixbsea    \*ixbsea={1em}                   % IndeX B SubEntry 1
\newtoks\*ixbseb    \*ixbseb={2em}                   % IndeX B SubEntry 2
\newtoks\*ixbev     \*ixbev={\tenpt}          % Index B every time
\newtoks\*ixbhp     \*ixbhp={1.5em}                  % Index B hang indent
\newtoks\*ixcrc     \*ixcrc={case=no}                % IndeX C Respect Case
\newtoks\*ixcst     \*ixcst={style=3}                % IndeX C STyle
\newtoks\*ixcld     \*ixcld={leadering=no}           % IndeX C LeaDering
\newtoks\*ixcbr     \*ixcbr={\rule\vs{1\bl}}         % IndeX C BReak
\newtoks\*ixcsea    \*ixcsea={1em}                   % IndeX C SubEntry 1
\newtoks\*ixcseb    \*ixcseb={2em}                   % IndeX C SubEntry 2
\newtoks\*ixcev     \*ixcev={\tenpt}          % Index C every time
\newtoks\*ixchp     \*ixchp={1.5em}                  % Index C hang indent
%
\newcount\*ixlvl    \*ixlvl=1                        % IndeX LeVeL
%
\long\def\indexformat#1#2{{\ifnum #1>3 \message{<TEXT1> Error! Only three indices
                                       allowed. Level 1 will be used.}
                               \*ixlvl=1
                         \else \*ixlvl=#1\fi
  \def\respectcase##1{\edef\T{yes}
                      \edef\U{no}
                      \edef\V{##1}
                      \ifx \T\V \B={case=yes}
                           \else \B={case=no}
                                 \ifx \U\V             % Already set
                                      \else\message{<TEXT1> Error!! Case respect not "yes"
                                                     or "no" in indexformat. "no" will be used.}
                            \fi\fi
                      \ifcase \*ixlvl \or \global\*ixarc=\B
                                      \or \global\*ixbrc=\B
                                      \or \global\*ixcrc=\B
                            \fi}
  \def\style##1{\edef\T{paragraph}
                \edef\U{dash}
                \edef\V{indent}
                \edef\W{##1}
                \ifx \T\W \B={style=1}             % paragraph style
                     \else \ifx \U\W \B={style=2}  % dash style
                           \else \B={style=3}      % indented style
                                 \ifx \V\W                % Already done
                                      \else \message{<TEXT1> Error!! Style invalid in indexformat.
                                                     "indented" will be used.}
                     \fi\fi\fi
                      \ifcase \*ixlvl \or \global\*ixast=\B
                                      \or \global\*ixbst=\B
                                      \or \global\*ixcst=\B
                            \fi}
  \def\leadering##1{\edef\T{yes}
                    \edef\U{no}
                    \edef\V{##1}
                    \ifx\T\V \B={leadering=yes}
                       \else \B={leadering=no}
                             \ifx\U\V
                                     \else \message{<TEXT1> Error!! Only "yes" and "no" can
                                                   be used in the indexformat. "no" will be assumed.}
                             \fi\fi
                    \ifcase \*ixlvl \or \global\*ixald=\B
                                    \or \global\*ixbld=\B
                                    \or \global\*ixcld=\B
                            \fi
          }
  \long\def\everyletterbreak##1{\ifcase \*ixlvl \or \global\*ixabr={##1}
                                                \or \global\*ixbbr={##1}
                                                \or \global\*ixcbr={##1}
                             \fi}
  \def\everyindex##1{\ifcase \*ixlvl \or \global\*ixaev={##1}
                                     \or \global\*ixbev={##1}
                                     \or \global\*ixcev={##1}
                             \fi}
  \def\everyhang##1{\ifcase \*ixlvl \or \global\*ixahp={##1}
                                    \or \global\*ixbhp={##1}
                                    \or \global\*ixchp={##1}
                             \fi}
  \def\indentsubentry##1##2{\R = ##1
                      \ifnum ##1<1 \message{<TEXT1> Error!! Subentry level number in indexformat
                                            may only be 1 or 2. 1 will be used.}
                                   \R = 1
                             \else \ifnum ##1>2 \message{<TEXT1> Error!! Subentry level number in indexformat
                                            may only be 1 or 2. 1 will be used.}
                                   \R = 1
                             \fi\fi
                    \ifcase \R \or \ifcase \*ixlvl \or \global\*ixasea={##2}
                                                   \or \global\*ixbsea={##2}
                                                   \or \global\*ixcsea={##2}
                                               \fi
                                   \or \ifcase \*ixlvl \or \global\*ixaseb={##2}
                                                       \or \global\*ixbseb={##2}
                                                       \or \global\*ixcseb={##2}
                                               \fi
                             \fi}
  #2}}
\let\ixf=\indexformat
\newwrite\*ixfilea                    % IndeX FILE A
\newwrite\*ixfileb                    % IndeX FILE B
\newwrite\*ixfilec                    % IndeX FILE C
\newif\if*ixaopen   \*ixaopenfalse    % IndeX file A OPEN?
\newif\if*ixbopen   \*ixbopenfalse    % IndeX file B OPEN?
\newif\if*ixcopen   \*ixcopenfalse    % IndeX file C OPEN?
\def\*openixfile#1{\ifcase #1 \or
           \immediate\openout\*ixfilea=text1xx.ix1%
           \global\*ixaopentrue
           \immediate\write\*ixfilea{\the\*ixarc}%
           \immediate\write\*ixfilea{\the\*ixast}%
           \immediate\write\*ixfilea{\the\*ixald}%
 \or       \immediate\openout\*ixfileb=text1xx.ix2%
           \global\*ixbopentrue
           \immediate\write\*ixfileb{\the\*ixbrc}%
           \immediate\write\*ixfileb{\the\*ixbst}%
           \immediate\write\*ixfileb{\the\*ixbld}%
 \or       \immediate\openout\*ixfilec=text1xx.ix3%
           \global\*ixcopentrue
           \immediate\write\*ixfilec{\the\*ixcrc}%
           \immediate\write\*ixfilec{\the\*ixcst}%
           \immediate\write\*ixfilec{\the\*ixcld}%
 \fi}
{\catcode`\$=12
\global\def\index#1#2{{\global\*ixpn = 2
               \def\subentry##1##2{${$}se##1##2{$}}%
               \def\bdpn{\global\*ixpn = 0}%
               \def\uspn{\global\*ixpn = 4}%
               \def\itpn{\global\*ixpn = 6}%
               \def\blindentry##1{\global\*ixpn = 9}%
               \def\sortas##1{${$}sa##1{$}}%
               \def\dagger{ \noexpand\dagger}%
               \def\ddagger{ \noexpand\ddagger}%
               \def\\{\noexpand\\}%
               \def\{{\noexpand\{}%
               \def\}{\noexpand\}}%
               \def\_{\noexpand\_}%
               \def\@{\noexpand\@}%
               \def\S{\noexpand\S}%
               \def\P{\noexpand\P}%
               \def\L{\noexpand\L}%
               \def\AA{\noexpand\AA}%
               \def\neg{\noexpand\neg}%
               \def\tilde{\noexpand\tilde}%
               \def\vbar{\noexpand\vbar}%
               \def\roman{\noexpand\rm}\let\rm=\roman%
               \def\bold{\noexpand\bd}\let\bd=\bold%
               \def\italic{\noexpand\it}\let\it=\italic%
               \def\typewriter{\noexpand\tt}\let\tt=\typewriter%
               \def\caps{\noexpand\cc}\let\cc=\caps%
               \def\mathitalic{\noexpand\mi}\let\mi=\mathitalic%
               \def\symbol{\noexpand\sy}\let\sy=\symbol%
               \def\extension{\noexpand\ex}\let\ex=\extension%
               \def\bolditalic{\noexpand\bi}\let\bi=\bolditalic%
               \setbox0=\vbox{\hsize=100in#2}%
               \def\bdpn{}%
               \def\uspn{}%
               \def\itpn{}%
               \def\blindentry##1{${$}be##1{$}}%
               \*ixlvl = #1
               \ifcase #1 \message{<TEXT1> Error!! You can only have index level 1, 2, or 3.
                                    Index level 1 will be used.}
                           \*ixlvl = 1
                           \or\or\or%           % These levels are ok
                     \else \message{<TEXT1> Error!! You can only have index level 1, 2, or 3.
                                    Index level 1 will be used.}
                           \*ixlvl = 1
                       \fi%
               \edef\*ixtoken{#2}%
               \edef\temp{\*ixtoken}%
               \ifcase \*ixlvl  \or\if*ixaopen\else\*openixfile1\fi% Open the file if not done yet
                                  \immediate\write\*ixfilea{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
                                \or \if*ixbopen \else \*openixfile2 \fi % Open the file if not done yet
                                  \immediate\write\*ixfileb{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
                                \or \if*ixcopen \else \*openixfile3 \fi % Open the file if not done yet
                                  \immediate\write\*ixfilec{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
                                \fi}\ignorespaces}
}% End math cat code change
\def\everyletterbreak#1#2{\def\nextletter{#2}
                         \ifcase #1 \or \the\*ixabr
                                    \or \the\*ixbbr
                                    \or \the\*ixcbr
                             \fi}
\def\everyindex#1{\ifcase \*ixlvl \or \the\*ixaev
                                 \or \the\*ixbev
                                 \or \the\*ixcev
                             \fi}
\def\indentsubentry#1#2{\par\penalty5000\hp
                    \ifcase #2 \or \ifcase #1 \or \hs{\the\*ixasea}
                                              \or \hs{\the\*ixbsea}
                                              \or \hs{\the\*ixcsea}
                                               \fi
                               \or \ifcase #1 \or \hs{\the\*ixaseb}
                                              \or \hs{\the\*ixbseb}
                                              \or \hs{\the\*ixcseb}
                                               \fi
                             \fi}
\let\ix=\index
\let\*ix=\printindex
\def\printindex#1{%\*ix#1 used only when printindex is a hardcoded command
                 \ifcase #1 \or \input text1xx.ix1
                            \or \input text1xx.ix2
                            \or \input text1xx.ix3
                            \fi}
%
\message{wrap it up...}
%
\def\@{\char'100{}}%
%
%   and set default values
%
\hfuzz=1pt
\parindent=24pt          \parskip=0pt plus 3pt minus 0pt
\normalbottom
\pageno=0
\catcode`* = 12
% The END