summaryrefslogtreecommitdiff
path: root/macros/text1/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/text1/macros
Initial commit
Diffstat (limited to 'macros/text1/macros')
-rw-r--r--macros/text1/macros/cgfonts.lclist124
-rw-r--r--macros/text1/macros/cm10.textext34
-rw-r--r--macros/text1/macros/cm108m.texmath10
-rw-r--r--macros/text1/macros/cm109m.texmath10
-rw-r--r--macros/text1/macros/cm11.textext40
-rw-r--r--macros/text1/macros/cm1110m.texmath10
-rw-r--r--macros/text1/macros/cm119m.texmath13
-rw-r--r--macros/text1/macros/cm12.textext37
-rw-r--r--macros/text1/macros/cm1210m.texmath10
-rw-r--r--macros/text1/macros/cm1211m.texmath13
-rw-r--r--macros/text1/macros/cm14.textext37
-rw-r--r--macros/text1/macros/cm1412m.texmath13
-rw-r--r--macros/text1/macros/cm18.textext37
-rw-r--r--macros/text1/macros/cm1814m.texmath13
-rw-r--r--macros/text1/macros/cm24.textext37
-rw-r--r--macros/text1/macros/cm2418m.texmath13
-rw-r--r--macros/text1/macros/cm36.textext37
-rw-r--r--macros/text1/macros/cm5.textext51
-rw-r--r--macros/text1/macros/cm6.textext49
-rw-r--r--macros/text1/macros/cm65m.texmath10
-rw-r--r--macros/text1/macros/cm7.textext45
-rw-r--r--macros/text1/macros/cm75m.texmath7
-rw-r--r--macros/text1/macros/cm76m.texmath10
-rw-r--r--macros/text1/macros/cm8.textext40
-rw-r--r--macros/text1/macros/cm86m.texmath13
-rw-r--r--macros/text1/macros/cm87m.texmath10
-rw-r--r--macros/text1/macros/cm9.textext40
-rw-r--r--macros/text1/macros/cm97m.texmath10
-rw-r--r--macros/text1/macros/cm98m.texmath13
-rw-r--r--macros/text1/macros/cmsan10.textext46
-rw-r--r--macros/text1/macros/cmsan11.textext46
-rw-r--r--macros/text1/macros/cmsan12.textext46
-rw-r--r--macros/text1/macros/cmsan14.textext46
-rw-r--r--macros/text1/macros/cmsan18.textext46
-rw-r--r--macros/text1/macros/cmsan24.textext46
-rw-r--r--macros/text1/macros/cmsan36.textext46
-rw-r--r--macros/text1/macros/cmsan8.textext49
-rw-r--r--macros/text1/macros/cmsan9.textext46
-rw-r--r--macros/text1/macros/fixcol.tex155
-rw-r--r--macros/text1/macros/flexcol.tex329
-rw-r--r--macros/text1/macros/text1.tex3
-rw-r--r--macros/text1/macros/txt1v409.tex3536
42 files changed, 5226 insertions, 0 deletions
diff --git a/macros/text1/macros/cgfonts.lclist b/macros/text1/macros/cgfonts.lclist
new file mode 100644
index 0000000000..6558013c77
--- /dev/null
+++ b/macros/text1/macros/cgfonts.lclist
@@ -0,0 +1,124 @@
+agb
+agbk
+agd
+agxl
+belb
+bell
+belli
+belr
+bemb
+bemi
+bemr
+bemsc
+bkd
+bkdi
+bkl
+bkli
+bodb
+bodbi
+bodbk
+bodbki
+bodi
+bodr
+bodsc
+bodxb
+bordera
+borderb
+brush
+cenb
+ceni
+cenr
+censc
+courier
+ctb
+cti
+ctr
+ding
+elite
+etb
+etbi
+eti
+etr
+etsc
+etsi
+ext
+garab
+garabi
+garai
+garar
+garasc
+garb
+garbi
+garbk
+garbki
+garl
+garli
+garu
+garui
+gkh
+gkhi
+gkt
+gktb
+gkti
+heb
+hebi
+hei
+her
+hesc
+ipa
+korb
+korbi
+kori
+korout
+korr
+korxb
+korxbi
+modern
+mthit
+mthitss
+mthrm
+mthrmss
+ocrb
+olde
+omb
+ombi
+omi
+omr
+omsc
+park
+plb
+plbi
+pli
+plr
+plsc
+quil
+spchar
+specials
+svd
+svdi
+svl
+svli
+svsc
+symbola
+symbolb
+symlogo
+tifd
+tifh
+tifl
+tifr
+trib
+tribc
+tribi
+tribl
+triblb
+tric
+trii
+tril
+trili
+trir
+trisc
+unib
+unibi
+unii
+unil
+unir
diff --git a/macros/text1/macros/cm10.textext b/macros/text1/macros/cm10.textext
new file mode 100644
index 0000000000..aa431de13e
--- /dev/null
+++ b/macros/text1/macros/cm10.textext
@@ -0,0 +1,34 @@
+\font\cmXbi=cmbxti10
+\font\cmXcc=cmcsc10
+\expandafter\newdimen\csname\the\naMEtok ilsx\endcsname
+\global\csname\the\naMEtok ilsx\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsx\endcsname=0pt
+\csname\the\naMEtok ilsx\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\tenrm}%
+\def\noexpand\mi{\fam1\teni}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\tenrm \textfont1=\teni
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\tenit
+ \textfont\ttfam=\tentt \textfont\bffam=\tenbf
+ \textfont\ccfam=\cmXcc
+\def\noexpand\bd{\fam\bffam\tenbf}%
+\def\noexpand\it{\fam\itfam\tenit}%
+\def\noexpand\tt{\fam\ttfam\tentt}%
+\def\noexpand\cc{\fam\ccfam\cmXcc}%
+\def\noexpand\bi{\fam\bifam\cmXbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsx\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm108m.texmath b/macros/text1/macros/cm108m.texmath
new file mode 100644
index 0000000000..2410c5b3d7
--- /dev/null
+++ b/macros/text1/macros/cm108m.texmath
@@ -0,0 +1,10 @@
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\tenrm \scriptfont1=\teni
+ \scriptfont2=\tensy \scriptfont3=\tenex
+ \scriptfont\bffam=\tenbf
+ \scriptscriptfont0=\cmVIIIrm \scriptscriptfont1=\cmVIIImi
+ \scriptscriptfont2=\cmVIIIsy \scriptscriptfont3=\cmVIIIex
+ \scriptscriptfont\bffam=\cmVIIIbd}%
diff --git a/macros/text1/macros/cm109m.texmath b/macros/text1/macros/cm109m.texmath
new file mode 100644
index 0000000000..7b5104aaf7
--- /dev/null
+++ b/macros/text1/macros/cm109m.texmath
@@ -0,0 +1,10 @@
+\font\cmIXrm=cmr9 \font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\tenrm \scriptfont1=\teni
+ \scriptfont2=\tensy \scriptfont3=\tenex
+ \scriptfont\bffam=\tenbf
+ \scriptscriptfont0=\cmIXrm \scriptscriptfont1=\cmIXmi
+ \scriptscriptfont2=\cmIXsy \scriptscriptfont3=\cmIXex
+ \scriptscriptfont\bffam=\cmIXbd}%
diff --git a/macros/text1/macros/cm11.textext b/macros/text1/macros/cm11.textext
new file mode 100644
index 0000000000..aa9300ae37
--- /dev/null
+++ b/macros/text1/macros/cm11.textext
@@ -0,0 +1,40 @@
+\global\newif\ifcmXIbierr
+\font\cmXIcc=cmcsc11
+\font\cmXIrm=cmr11 \font\cmXIit=cmti11
+\font\cmXIbd=cmbx11 \font\cmXImi=cmmi11
+\font\cmXItt=cmtt11\font\cmXIsy=cmsy11
+\expandafter\newdimen\csname\the\naMEtok ilsxi\endcsname
+\global\csname\the\naMEtok ilsxi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxi\endcsname=0pt
+\csname\the\naMEtok ilsxi\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIrm}%
+\def\noexpand\mi{\fam1\cmXImi}%
+\def\noexpand\sy{\fam2\cmXIsy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmXIrm \textfont1=\cmXImi
+ \textfont2=\cmXIsy\textfont3=\tenex
+ \textfont\itfam=\cmXIit
+ \textfont\ttfam=\cmXItt \textfont\bffam=\cmXIbd
+ \textfont\ccfam=\cmXIcc
+\def\noexpand\bd{\fam\bffam\cmXIbd}%
+\def\noexpand\it{\fam\itfam\cmXIit}%
+\def\noexpand\tt{\fam\ttfam\cmXItt}%
+\def\noexpand\cc{\fam\ccfam\cmXIcc}%
+\def\noexpand\bi{\noexpand\ifcmXIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM11. Will print italic font .}%
+\noexpand\global\noexpand\cmXIbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxi\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1110m.texmath b/macros/text1/macros/cm1110m.texmath
new file mode 100644
index 0000000000..09cc8fb54e
--- /dev/null
+++ b/macros/text1/macros/cm1110m.texmath
@@ -0,0 +1,10 @@
+\font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11\font\cmXIrm=cmr11
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIrm \scriptfont1=\cmXImi
+ \scriptfont2=\cmXIsy \scriptfont3=\cmXIex
+ \scriptfont\bffam=\cmXIbd
+ \scriptscriptfont0=\tenrm \scriptscriptfont1=\teni
+ \scriptscriptfont2=\tensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\tenbf}%
diff --git a/macros/text1/macros/cm119m.texmath b/macros/text1/macros/cm119m.texmath
new file mode 100644
index 0000000000..13eca0aebf
--- /dev/null
+++ b/macros/text1/macros/cm119m.texmath
@@ -0,0 +1,13 @@
+\font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11 \font\cmXIrm=cmr11
+\font\cmIXrm=cmr9 \font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIrm \scriptfont1=\cmXImi
+ \scriptfont2=\cmXIsy \scriptfont3=\cmXIex
+ \scriptfont\bffam=\cmXIbd
+ \scriptscriptfont0=\cmIXrm \scriptscriptfont1=\cmIXmi
+ \scriptscriptfont2=\cmIXsy \scriptscriptfont3=\cmIXex
+ \scriptscriptfont\bffam=\cmIXbd}%
diff --git a/macros/text1/macros/cm12.textext b/macros/text1/macros/cm12.textext
new file mode 100644
index 0000000000..a505abed9c
--- /dev/null
+++ b/macros/text1/macros/cm12.textext
@@ -0,0 +1,37 @@
+\font\cmXIIbi=cmbxti12
+\font\cmXIIcc=cmcsc12 \font\cmXIIex=cmex12
+\font\cmXIIrm=cmr12 \font\cmXIIit=cmti12
+\font\cmXIIbd=cmbx12 \font\cmXIImi=cmmi12
+\font\cmXIItt=cmtt12 \font\cmXIIsy=cmsy12
+\expandafter\newdimen\csname\the\naMEtok ilsxii\endcsname
+\global\csname\the\naMEtok ilsxii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxii\endcsname=0pt
+\csname\the\naMEtok ilsxii\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIIrm}%
+\def\noexpand\mi{\fam1\cmXIImi}%
+\def\noexpand\sy{\fam2\cmXIIsy}%
+\def\noexpand\ex{\fam3\cmXIIex}%
+ \textfont0=\cmXIIrm \textfont1=\cmXIImi
+ \textfont2=\cmXIIsy \textfont3=\cmXIIex
+ \textfont\itfam=\cmXIIit
+ \textfont\ttfam=\cmXIItt \textfont\bffam=\cmXIIbd
+ \textfont\ccfam=\cmXIIcc
+\def\noexpand\bd{\fam\bffam\cmXIIbd}%
+\def\noexpand\it{\fam\itfam\cmXIIit}%
+\def\noexpand\tt{\fam\ttfam\cmXIItt}%
+\def\noexpand\cc{\fam\ccfam\cmXIIcc}%
+\def\noexpand\bi{\fam\bifam\cmXIIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1210m.texmath b/macros/text1/macros/cm1210m.texmath
new file mode 100644
index 0000000000..e1ccb4c7fc
--- /dev/null
+++ b/macros/text1/macros/cm1210m.texmath
@@ -0,0 +1,10 @@
+\font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12\font\cmXIIrm=cmr12
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIIrm \scriptfont1=\cmXIImi
+ \scriptfont2=\cmXIIsy \scriptfont3=\cmXIIex
+ \scriptfont\bffam=\cmXIIbd
+ \scriptscriptfont0=\tenrm \scriptscriptfont1=\teni
+ \scriptscriptfont2=\tensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\tenbf}%
diff --git a/macros/text1/macros/cm1211m.texmath b/macros/text1/macros/cm1211m.texmath
new file mode 100644
index 0000000000..d9c4e13c45
--- /dev/null
+++ b/macros/text1/macros/cm1211m.texmath
@@ -0,0 +1,13 @@
+\font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12\font\cmXIIrm=cmr12
+\font\cmXIrm=cmr11 \font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIIrm \scriptfont1=\cmXIImi
+ \scriptfont2=\cmXIIsy \scriptfont3=\cmXIIex
+ \scriptfont\bffam=\cmXIIbd
+ \scriptscriptfont0=\cmXIrm \scriptscriptfont1=\cmXImi
+ \scriptscriptfont2=\cmXIsy \scriptscriptfont3=\cmXIex
+ \scriptscriptfont\bffam=\cmXIbd}%
diff --git a/macros/text1/macros/cm14.textext b/macros/text1/macros/cm14.textext
new file mode 100644
index 0000000000..f302bf6a12
--- /dev/null
+++ b/macros/text1/macros/cm14.textext
@@ -0,0 +1,37 @@
+\font\cmXIVbi=cmbxti14
+\font\cmXIVcc=cmcsc14 \font\cmXIVex=cmex14
+\font\cmXIVrm=cmr14 \font\cmXIVit=cmti14
+\font\cmXIVbd=cmbx14 \font\cmXIVmi=cmmi14
+\font\cmXIVtt=cmtt14 \font\cmXIVsy=cmsy14
+\expandafter\newdimen\csname\the\naMEtok ilsxiv\endcsname
+\global\csname\the\naMEtok ilsxiv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiv\endcsname=0pt
+\csname\the\naMEtok ilsxiv\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIVrm}%
+\def\noexpand\mi{\fam1\cmXIVmi}%
+\def\noexpand\sy{\fam2\cmXIVsy}%
+\def\noexpand\ex{\fam3\cmXIVex}%
+ \textfont0=\cmXIVrm \textfont1=\cmXIVmi
+ \textfont2=\cmXIVsy \textfont3=\cmXIVex
+ \textfont\itfam=\cmXIVit
+ \textfont\ttfam=\cmXIVtt \textfont\bffam=\cmXIVbd
+ \textfont\ccfam=\cmXIVcc
+\def\noexpand\bd{\fam\bffam\cmXIVbd}%
+\def\noexpand\it{\fam\itfam\cmXIVit}%
+\def\noexpand\tt{\fam\ttfam\cmXIVtt}%
+\def\noexpand\cc{\fam\ccfam\cmXIVcc}%
+\def\noexpand\bi{\fam\bifam\cmXIVbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiv\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1412m.texmath b/macros/text1/macros/cm1412m.texmath
new file mode 100644
index 0000000000..fc933ca00f
--- /dev/null
+++ b/macros/text1/macros/cm1412m.texmath
@@ -0,0 +1,13 @@
+\font\cmXIVmi=cmmi14
+\font\cmXIVsy=cmsy14 \font\cmXIVex=cmex14
+\font\cmXIVbd=cmbx14\font\cmXIVrm=cmr14
+\font\cmXIIrm=cmr12 \font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIVrm \scriptfont1=\cmXIVmi
+ \scriptfont2=\cmXIVsy \scriptfont3=\cmXIVex
+ \scriptfont\bffam=\cmXIVbd
+ \scriptscriptfont0=\cmXIIrm \scriptscriptfont1=\cmXIImi
+ \scriptscriptfont2=\cmXIIsy \scriptscriptfont3=\cmXIIex
+ \scriptscriptfont\bffam=\cmXIIbd}%
diff --git a/macros/text1/macros/cm18.textext b/macros/text1/macros/cm18.textext
new file mode 100644
index 0000000000..c4c9f52d87
--- /dev/null
+++ b/macros/text1/macros/cm18.textext
@@ -0,0 +1,37 @@
+\font\cmXVIIIbi=cmbxti18
+\font\cmXVIIIcc=cmcsc18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIrm=cmr18 \font\cmXVIIIit=cmti18
+\font\cmXVIIIbd=cmbx18 \font\cmXVIIImi=cmmi18
+\font\cmXVIIItt=cmtt18 \font\cmXVIIIsy=cmsy18
+\expandafter\newdimen\csname\the\naMEtok ilsxviii\endcsname
+\global\csname\the\naMEtok ilsxviii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviii\endcsname=0pt
+\csname\the\naMEtok ilsxviii\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXVIIIrm}%
+\def\noexpand\mi{\fam1\cmXVIIImi}%
+\def\noexpand\sy{\fam2\cmXVIIIsy}%
+\def\noexpand\ex{\fam3\cmXVIIIex}%
+ \textfont0=\cmXVIIIrm \textfont1=\cmXVIIImi
+ \textfont2=\cmXVIIIsy \textfont3=\cmXVIIIex
+ \textfont\itfam=\cmXVIIIit
+ \textfont\ttfam=\cmXVIIItt \textfont\bffam=\cmXVIIIbd
+ \textfont\ccfam=\cmXVIIIcc
+\def\noexpand\bd{\fam\bffam\cmXVIIIbd}%
+\def\noexpand\it{\fam\itfam\cmXVIIIit}%
+\def\noexpand\tt{\fam\ttfam\cmXVIIItt}%
+\def\noexpand\cc{\fam\ccfam\cmXVIIIcc}%
+\def\noexpand\bi{\fam\bifam\cmXVIIIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1814m.texmath b/macros/text1/macros/cm1814m.texmath
new file mode 100644
index 0000000000..c3c34b0f02
--- /dev/null
+++ b/macros/text1/macros/cm1814m.texmath
@@ -0,0 +1,13 @@
+\font\cmXVIIImi=cmmi18
+\font\cmXVIIIsy=cmsy18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIbd=cmbx18\font\cmXVIIIrm=cmr18
+\font\cmXIVrm=cmr14 \font\cmXIVmi=cmmi14
+\font\cmXIVsy=cmsy14 \font\cmXIVex=cmex14
+\font\cmXIVbd=cmbx14
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXVIIIrm \scriptfont1=\cmXVIIImi
+ \scriptfont2=\cmXVIIIsy \scriptfont3=\cmXVIIIex
+ \scriptfont\bffam=\cmXVIIIbd
+ \scriptscriptfont0=\cmXIVrm \scriptscriptfont1=\cmXIVmi
+ \scriptscriptfont2=\cmXIVsy \scriptscriptfont3=\cmXIVex
+ \scriptscriptfont\bffam=\cmXIVbd}%
diff --git a/macros/text1/macros/cm24.textext b/macros/text1/macros/cm24.textext
new file mode 100644
index 0000000000..83dc4387be
--- /dev/null
+++ b/macros/text1/macros/cm24.textext
@@ -0,0 +1,37 @@
+\font\cmXXIVbi=cmbxti24
+\font\cmXXIVcc=cmcsc24 \font\cmXXIVex=cmex24
+\font\cmXXIVrm=cmr24 \font\cmXXIVit=cmti24
+\font\cmXXIVbd=cmbx24 \font\cmXXIVmi=cmmi24
+\font\cmXXIVtt=cmtt24\font\cmXXIVsy=cmsy24
+\expandafter\newdimen\csname\the\naMEtok ilsxxiv\endcsname
+\global\csname\the\naMEtok ilsxxiv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxiv\endcsname=0pt
+\csname\the\naMEtok ilsxxiv\endcsname=26pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXIVrm}%
+\def\noexpand\mi{\fam1\cmXXIVmi}%
+\def\noexpand\sy{\fam2\cmXXIVsy}%
+\def\noexpand\ex{\fam3\cmXXIVex}%
+ \textfont0=\cmXXIVrm \textfont1=\cmXXIVmi
+ \textfont2=\cmXXIVsy \textfont3=\cmXXIVex
+ \textfont\itfam=\cmXXIVit
+ \textfont\ttfam=\cmXXIVtt \textfont\bffam=\cmXXIVbd
+ \textfont\ccfam=\cmXXIVcc
+\def\noexpand\bd{\fam\bffam\cmXXIVbd}%
+\def\noexpand\it{\fam\itfam\cmXXIVit}%
+\def\noexpand\tt{\fam\ttfam\cmXXIVtt}%
+\def\noexpand\cc{\fam\ccfam\cmXXIVcc}%
+\def\noexpand\bi{\fam\bifam\cmXXIVbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxiv\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm2418m.texmath b/macros/text1/macros/cm2418m.texmath
new file mode 100644
index 0000000000..41222e47d0
--- /dev/null
+++ b/macros/text1/macros/cm2418m.texmath
@@ -0,0 +1,13 @@
+\font\cmXXIVmi=cmmi24
+\font\cmXXIVsy=cmsy24 \font\cmXXIVex=cmex24
+\font\cmXXIVbd=cmbx24\font\cmXXIVrm=cmr24
+\font\cmXVIIIrm=cmr18 \font\cmXVIIImi=cmmi18
+\font\cmXVIIIsy=cmsy18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIbd=cmbx18
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXXIVrm \scriptfont1=\cmXXIVmi
+ \scriptfont2=\cmXXIVsy \scriptfont3=\cmXXIVex
+ \scriptfont\bffam=\cmXXIVbd
+ \scriptscriptfont0=\cmXVIIIrm \scriptscriptfont1=\cmXVIIImi
+ \scriptscriptfont2=\cmXVIIIsy \scriptscriptfont3=\cmXVIIIex
+ \scriptscriptfont\bffam=\cmXVIIIbd}%
diff --git a/macros/text1/macros/cm36.textext b/macros/text1/macros/cm36.textext
new file mode 100644
index 0000000000..9a6f9ce578
--- /dev/null
+++ b/macros/text1/macros/cm36.textext
@@ -0,0 +1,37 @@
+\font\cmXXXVIbi=cmbxti36
+\font\cmXXXVIcc=cmcsc36\font\cmXXXVIex=cmex36
+\font\cmXXXVIrm=cmr36 \font\cmXXXVIit=cmti36
+\font\cmXXXVIbd=cmbx36 \font\cmXXXVImi=cmmi36
+\font\cmXXXVItt=cmtt36 \font\cmXXXVIsy=cmsy36
+\expandafter\newdimen\csname\the\naMEtok ilsxxxvi\endcsname
+\global\csname\the\naMEtok ilsxxxvi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxxvi\endcsname=0pt
+\csname\the\naMEtok ilsxxxvi\endcsname=38pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXXVIrm}%
+\def\noexpand\mi{\fam1\cmXXXVImi}%
+\def\noexpand\sy{\fam2\cmXXXVIsy}%
+\def\noexpand\ex{\fam3\cmXXXVIex}%
+ \textfont0=\cmXXXVIrm \textfont1=\cmXXXVImi
+ \textfont2=\cmXXXVIsy \textfont3=\cmXXXVIex
+ \textfont\itfam=\cmXXXVIit
+ \textfont\ttfam=\cmXXXVItt \textfont\bffam=\cmXXXVIbd
+ \textfont\ccfam=\cmXXXVIcc
+\def\noexpand\bd{\fam\bffam\cmXXXVIbd}%
+\def\noexpand\it{\fam\itfam\cmXXXVIit}%
+\def\noexpand\tt{\fam\ttfam\cmXXXVItt}%
+\def\noexpand\cc{\fam\ccfam\cmXXXVIcc}%
+\def\noexpand\bi{\fam\bifam\cmXXXVIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxxvi\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm5.textext b/macros/text1/macros/cm5.textext
new file mode 100644
index 0000000000..3cdb0205e3
--- /dev/null
+++ b/macros/text1/macros/cm5.textext
@@ -0,0 +1,51 @@
+\global\newif\ifVbierr
+\global\newif\ifVccerr
+\global\newif\ifVtterr
+\global\newif\ifViterr
+\global\newif\ifVbderr
+\expandafter\newdimen\csname\the\naMEtok ilsv\endcsname
+\global\csname\the\naMEtok ilsv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsv\endcsname=0pt
+\csname\the\naMEtok ilsv\endcsname=8pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\fiverm}%
+\def\noexpand\mi{\fam1\fivei}%
+\def\noexpand\sy{\fam2\fivesy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\fiverm\textfont1=\fivei
+ \textfont2=\fivesy\textfont3=\tenex
+ \textfont\bffam=\fivebf
+\def\noexpand\bd{\noexpand\ifVbderr\noexpand\fam\bffam\fivebf%
+\noexpand\else\noexpand\fam\bffam\fivebf%
+\noexpand\message{<TEXT1> Warning. %
+No bold font in CM5. Will print bold extended font .}%
+\noexpand\global\noexpand\Vbderrtrue \noexpand\fi}%
+\def\noexpand\it{\noexpand\ifViterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No italic font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Viterrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifVtterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Vtterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifVbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM5. Will print italic font .}%
+\noexpand\global\noexpand\Vbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifVccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Vccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsv\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm6.textext b/macros/text1/macros/cm6.textext
new file mode 100644
index 0000000000..5a3a735d8c
--- /dev/null
+++ b/macros/text1/macros/cm6.textext
@@ -0,0 +1,49 @@
+\global\newif\ifcmVIbierr
+\global\newif\ifcmVIccerr
+\global\newif\ifcmVIiterr
+\global\newif\ifcmVItterr
+\font\cmVIrm=cmr6
+\font\cmVIbd=cmbx6 \font\cmVImi=cmmi6
+\font\sixsy=cmsy6
+\expandafter\newdimen\csname\the\naMEtok ilsvi\endcsname
+\global\csname\the\naMEtok ilsvi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsvi\endcsname=0pt
+\csname\the\naMEtok ilsvi\endcsname=8pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIrm}%
+\def\noexpand\mi{\fam1\cmVImi}%
+\def\noexpand\sy{\fam2\sixsy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmVIrm \textfont1=\cmVImi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\bffam=\cmVIbd
+\def\noexpand\bd{\fam\bffam\cmVIbd}%
+\def\noexpand\it{\noexpand\ifcmVIiterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No italic font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIiterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifcmVIbierr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifcmVIccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIccerrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifcmVItterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVItterrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsvi\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm65m.texmath b/macros/text1/macros/cm65m.texmath
new file mode 100644
index 0000000000..d1c44223de
--- /dev/null
+++ b/macros/text1/macros/cm65m.texmath
@@ -0,0 +1,10 @@
+\font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6\font\cmVIrm=cmr6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIrm \scriptfont1=\cmVImi
+ \scriptfont2=\cmVIsy \scriptfont3=\cmVIex
+ \scriptfont\bffam=\cmVIbd
+ \scriptscriptfont0=\fiverm \scriptscriptfont1=\fivei
+ \scriptscriptfont2=\fivesy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\fivebf}%
diff --git a/macros/text1/macros/cm7.textext b/macros/text1/macros/cm7.textext
new file mode 100644
index 0000000000..894bff8b2c
--- /dev/null
+++ b/macros/text1/macros/cm7.textext
@@ -0,0 +1,45 @@
+\global\newif\ifVIIbierr
+\global\newif\ifVIIbderr
+\global\newif\ifVIItterr
+\global\newif\ifVIIccerr
+\font\cmVIIit=cmti7
+\expandafter\newdimen\csname\the\naMEtok ilsvii\endcsname
+\global\csname\the\naMEtok ilsvii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsvii\endcsname=0pt
+\csname\the\naMEtok ilsvii\endcsname=9pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\sevenrm}%
+\def\noexpand\mi{\fam1\seveni}%
+\def\noexpand\sy{\fam2\sevensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\sevenrm \textfont1=\seveni
+ \textfont2=\sevensy \textfont3=\tenex
+ \textfont\itfam=\cmVIIit
+ \textfont\bffam=\sevenbf
+\def\noexpand\it{\fam\itfam\cmVIIit}%
+\def\noexpand\bd{\fam\bffam\sevenbf}%
+\def\noexpand\tt{\noexpand\ifVIItterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM7. Will print roman font .}%
+\noexpand\global\noexpand\VIItterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifVIIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM7. Will print italic font .}%
+\noexpand\global\noexpand\VIIbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifVIIccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM7. Will print roman font .}%
+\noexpand\global\noexpand\VIIccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsvii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm75m.texmath b/macros/text1/macros/cm75m.texmath
new file mode 100644
index 0000000000..2acd4dc1f4
--- /dev/null
+++ b/macros/text1/macros/cm75m.texmath
@@ -0,0 +1,7 @@
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\sevenrm \scriptfont1=\seveni
+ \scriptfont2=\sevensy \scriptfont3=\tenex
+ \scriptfont\bffam=\sevenbf
+ \scriptscriptfont0=\fiverm \scriptscriptfont1=\fivei
+ \scriptscriptfont2=\fivesy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\fivebf}%
diff --git a/macros/text1/macros/cm76m.texmath b/macros/text1/macros/cm76m.texmath
new file mode 100644
index 0000000000..796813490d
--- /dev/null
+++ b/macros/text1/macros/cm76m.texmath
@@ -0,0 +1,10 @@
+\font\cmVIrm=cmr6 \font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\sevenrm \scriptfont1=\seveni
+ \scriptfont2=\sevensy \scriptfont3=\tenex
+ \scriptfont\bffam=\sevenbf
+ \scriptscriptfont0=\cmVIrm \scriptscriptfont1=\cmVImi
+ \scriptscriptfont2=\cmVIsy \scriptscriptfont3=\cmVIex
+ \scriptscriptfont\bffam=\cmVIbd}%
diff --git a/macros/text1/macros/cm8.textext b/macros/text1/macros/cm8.textext
new file mode 100644
index 0000000000..ea69af7705
--- /dev/null
+++ b/macros/text1/macros/cm8.textext
@@ -0,0 +1,40 @@
+\global\newif\ifcmVIIIbierr
+\font\cmVIIIcc=cmcsc8
+\font\cmVIIIrm=cmr8 \font\cmVIIIit=cmti8
+\font\cmVIIIbd=cmbx8 \font\cmVIIImi=cmmi8
+\font\cmVIIItt=cmtt8
+\expandafter\newdimen\csname\the\naMEtok ilsviii\endcsname
+\global\csname\the\naMEtok ilsviii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviii\endcsname=0pt
+\csname\the\naMEtok ilsviii\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIIIrm}%
+\def\noexpand\mi{\fam1\cmVIIImi}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmVIIIrm \textfont1=\cmVIIImi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\cmVIIIit
+ \textfont\ttfam=\cmVIIItt \textfont\bffam=\cmVIIIbd
+ \textfont\ccfam=\cmVIIIcc
+\def\noexpand\bd{\fam\bffam\cmVIIIbd}%
+\def\noexpand\it{\fam\itfam\cmVIIIit}%
+\def\noexpand\tt{\fam\ttfam\cmVIIItt}%
+\def\noexpand\cc{\fam\ccfam\cmVIIIcc}%
+\def\noexpand\bi{\noexpand\ifcmVIIIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM8. Will print italic font .}%
+\noexpand\global\noexpand\cmVIIIbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm86m.texmath b/macros/text1/macros/cm86m.texmath
new file mode 100644
index 0000000000..9acea1b047
--- /dev/null
+++ b/macros/text1/macros/cm86m.texmath
@@ -0,0 +1,13 @@
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+\font\cmVIrm=cmr6 \font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIIIrm \scriptfont1=\cmVIIImi
+ \scriptfont2=\cmVIIIsy \scriptfont3=\cmVIIIex
+ \scriptfont\bffam=\cmVIIIbd
+ \scriptscriptfont0=\cmVIrm \scriptscriptfont1=\cmVImi
+ \scriptscriptfont2=\cmVIsy \scriptscriptfont3=\cmVIex
+ \scriptscriptfont\bffam=\cmVIbd}%
diff --git a/macros/text1/macros/cm87m.texmath b/macros/text1/macros/cm87m.texmath
new file mode 100644
index 0000000000..5bc523025d
--- /dev/null
+++ b/macros/text1/macros/cm87m.texmath
@@ -0,0 +1,10 @@
+\font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8\font\cmVIIIrm=cmr8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIIIrm \scriptfont1=\cmVIIImi
+ \scriptfont2=\cmVIIIsy \scriptfont3=\cmVIIIex
+ \scriptfont\bffam=\cmVIIIbd
+ \scriptscriptfont0=\sevenrm \scriptscriptfont1=\seveni
+ \scriptscriptfont2=\sevensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\sevenbf}%
diff --git a/macros/text1/macros/cm9.textext b/macros/text1/macros/cm9.textext
new file mode 100644
index 0000000000..8602cb2d64
--- /dev/null
+++ b/macros/text1/macros/cm9.textext
@@ -0,0 +1,40 @@
+\global\newif\ifcmIXbierr
+\font\cmIXcc=cmcsc9
+\font\cmIXrm=cmr9 \font\cmIXit=cmti9
+\font\cmIXbd=cmbx9 \font\cmIXmi=cmmi9
+\font\cmIXtt=cmtt9
+\expandafter\newdimen\csname\the\naMEtok ilsix\endcsname
+\global\csname\the\naMEtok ilsix\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsix\endcsname=0pt
+\csname\the\naMEtok ilsix\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmIXrm}%
+\def\noexpand\mi{\fam1\cmIXmi}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmIXrm \textfont1=\cmIXmi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\cmIXit
+ \textfont\ttfam=\cmIXtt \textfont\bffam=\cmIXbd
+ \textfont\ccfam=\cmIXcc
+\def\noexpand\bd{\fam\bffam\cmIXbd}%
+\def\noexpand\it{\fam\itfam\cmIXit}%
+\def\noexpand\tt{\fam\ttfam\cmIXtt}%
+\def\noexpand\cc{\fam\ccfam\cmIXcc}%
+\def\noexpand\bi{\noexpand\ifcmIXbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM9. Will print italic font .}%
+\noexpand\global\noexpand\cmIXbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsix\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm97m.texmath b/macros/text1/macros/cm97m.texmath
new file mode 100644
index 0000000000..612ddf3587
--- /dev/null
+++ b/macros/text1/macros/cm97m.texmath
@@ -0,0 +1,10 @@
+\font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9\font\cmIXrm=cmr9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmIXrm \scriptfont1=\cmIXmi
+ \scriptfont2=\cmIXsy \scriptfont3=\cmIXex
+ \scriptfont\bffam=\cmIXbd
+ \scriptscriptfont0=\sevenrm \scriptscriptfont1=\seveni
+ \scriptscriptfont2=\sevensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\sevenbf}%
diff --git a/macros/text1/macros/cm98m.texmath b/macros/text1/macros/cm98m.texmath
new file mode 100644
index 0000000000..78e30ed089
--- /dev/null
+++ b/macros/text1/macros/cm98m.texmath
@@ -0,0 +1,13 @@
+\font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9\font\cmIXrm=cmr9
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmIXrm \scriptfont1=\cmIXmi
+ \scriptfont2=\cmIXsy \scriptfont3=\cmIXex
+ \scriptfont\bffam=\cmIXbd
+ \scriptscriptfont0=\cmVIIIrm \scriptscriptfont1=\cmVIIImi
+ \scriptscriptfont2=\cmVIIIsy \scriptscriptfont3=\cmVIIIex
+ \scriptscriptfont\bffam=\cmVIIIbd}%
diff --git a/macros/text1/macros/cmsan10.textext b/macros/text1/macros/cmsan10.textext
new file mode 100644
index 0000000000..cedf00fe5e
--- /dev/null
+++ b/macros/text1/macros/cmsan10.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXssbierr
+\global\newif\ifXssccerr
+\global\newif\ifXsstterr
+\font\cmXssrm=cmss10 \font\cmXssit=cmssi10
+\font\cmXssbd=cmssbx10 \font\cmXssmi=cmmi10
+\font\cmXsssy=cmsy10 \font\cmXssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsxss\endcsname
+\global\csname\the\naMEtok ilsxss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxss\endcsname=0pt
+\csname\the\naMEtok ilsxss\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXssrm}%
+\def\noexpand\mi{\fam1\cmXssmi}%
+\def\noexpand\sy{\fam2\cmXsssy}%
+\def\noexpand\ex{\fam3\cmXssex}%
+ \textfont0=\cmXssrm \textfont1=\cmXssmi
+ \textfont2=\cmXsssy \textfont3=\cmXssex
+ \textfont\itfam=\cmXssit
+ \textfont\bffam=\cmXssbd
+\def\noexpand\bd{\fam\bffam\cmXssbd}%
+\def\noexpand\it{\fam\itfam\cmXssit}%
+\def\noexpand\bi{\noexpand\ifXssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN10. Will print italic font .}%
+\noexpand\global\noexpand\Xssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN10. Will print roman font .}%
+\noexpand\global\noexpand\Xsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN10. Will print roman font .}%
+\noexpand\global\noexpand\Xssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan11.textext b/macros/text1/macros/cmsan11.textext
new file mode 100644
index 0000000000..e5da60857e
--- /dev/null
+++ b/macros/text1/macros/cmsan11.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXIssbierr
+\global\newif\ifXIssccerr
+\global\newif\ifXIsstterr
+\font\cmXIssrm=cmss11 \font\cmXIssit=cmssi11
+\font\cmXIssbd=cmssbx11 \font\cmXIssmi=cmmi11
+\font\cmXIsssy=cmsy11 \font\cmXIssex=cmex11
+\expandafter\newdimen\csname\the\naMEtok ilsxiss\endcsname
+\global\csname\the\naMEtok ilsxiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiss\endcsname=0pt
+\csname\the\naMEtok ilsxiss\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIssrm}%
+\def\noexpand\mi{\fam1\cmXIssmi}%
+\def\noexpand\sy{\fam2\cmXIsssy}%
+\def\noexpand\ex{\fam3\cmXIssex}%
+ \textfont0=\cmXIssrm \textfont1=\cmXIssmi
+ \textfont2=\cmXIsssy \textfont3=\cmXIssex
+ \textfont\itfam=\cmXIssit
+ \textfont\bffam=\cmXIssbd
+\def\noexpand\bd{\fam\bffam\cmXIssbd}%
+\def\noexpand\it{\fam\itfam\cmXIssit}%
+\def\noexpand\bi{\noexpand\ifXIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN11. Will print italic font .}%
+\noexpand\global\noexpand\XIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN11. Will print roman font .}%
+\noexpand\global\noexpand\XIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN11. Will print roman font .}%
+\noexpand\global\noexpand\XIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan12.textext b/macros/text1/macros/cmsan12.textext
new file mode 100644
index 0000000000..234dd3cbba
--- /dev/null
+++ b/macros/text1/macros/cmsan12.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXIIssbierr
+\global\newif\ifXIIssccerr
+\global\newif\ifXIIsstterr
+\font\cmXIIssrm=cmss12 \font\cmXIIssit=cmssi12
+\font\cmXIIssbd=cmssbx12 \font\cmXIIssmi=cmmi12
+\font\cmXIIsssy=cmsy12 \font\cmXIIssex=cmex12
+\expandafter\newdimen\csname\the\naMEtok ilsxiiss\endcsname
+\global\csname\the\naMEtok ilsxiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiiss\endcsname=0pt
+\csname\the\naMEtok ilsxiiss\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIIssrm}%
+\def\noexpand\mi{\fam1\cmXIIssmi}%
+\def\noexpand\sy{\fam2\cmXIIsssy}%
+\def\noexpand\ex{\fam3\cmXIIssex}%
+ \textfont0=\cmXIIssrm \textfont1=\cmXIIssmi
+ \textfont2=\cmXIIsssy \textfont3=\cmXIIssex
+ \textfont\itfam=\cmXIIssit
+ \textfont\bffam=\cmXIIssbd
+\def\noexpand\bd{\fam\bffam\cmXIIssbd}%
+\def\noexpand\it{\fam\itfam\cmXIIssit}%
+\def\noexpand\bi{\noexpand\ifXIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN12. Will print italic font .}%
+\noexpand\global\noexpand\XIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN12. Will print roman font .}%
+\noexpand\global\noexpand\XIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN12. Will print roman font .}%
+\noexpand\global\noexpand\XIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan14.textext b/macros/text1/macros/cmsan14.textext
new file mode 100644
index 0000000000..23d2eb54a5
--- /dev/null
+++ b/macros/text1/macros/cmsan14.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXIVssbierr
+\global\newif\ifXIVssccerr
+\global\newif\ifXIVsstterr
+\font\cmXIVssrm=cmss14 \font\cmXIVssit=cmssi14
+\font\cmXIVssbd=cmssbx14 \font\cmXIVssmi=cmmi14
+\font\cmXIVsssy=cmsy14 \font\cmXIVssex=cmex14
+\expandafter\newdimen\csname\the\naMEtok ilsxivss\endcsname
+\global\csname\the\naMEtok ilsxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxivss\endcsname=0pt
+\csname\the\naMEtok ilsxivss\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIVssrm}%
+\def\noexpand\mi{\fam1\cmXIVssmi}%
+\def\noexpand\sy{\fam2\cmXIVsssy}%
+\def\noexpand\ex{\fam3\cmXIVssex}%
+ \textfont0=\cmXIVssrm \textfont1=\cmXIVssmi
+ \textfont2=\cmXIVsssy \textfont3=\cmXIVssex
+ \textfont\itfam=\cmXIVssit
+ \textfont\bffam=\cmXIVssbd
+\def\noexpand\bd{\fam\bffam\cmXIVssbd}%
+\def\noexpand\it{\fam\itfam\cmXIVssit}%
+\def\noexpand\bi{\noexpand\ifXIVssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN14. Will print italic font .}%
+\noexpand\global\noexpand\XIVssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIVsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN14. Will print roman font .}%
+\noexpand\global\noexpand\XIVsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIVssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN14. Will print roman font .}%
+\noexpand\global\noexpand\XIVssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxivss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan18.textext b/macros/text1/macros/cmsan18.textext
new file mode 100644
index 0000000000..a1a581291e
--- /dev/null
+++ b/macros/text1/macros/cmsan18.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXVIIIssbierr
+\global\newif\ifXVIIIssccerr
+\global\newif\ifXVIIIsstterr
+\font\cmXVIIIssrm=cmss18 \font\cmXVIIIssit=cmssi18
+\font\cmXVIIIssbd=cmssbx18 \font\cmXVIIIssmi=cmmi18
+\font\cmXVIIIsssy=cmsy18 \font\cmXVIIIssex=cmex18
+\expandafter\newdimen\csname\the\naMEtok ilsxviiiss\endcsname
+\global\csname\the\naMEtok ilsxviiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviiiss\endcsname=0pt
+\csname\the\naMEtok ilsxviiiss\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXVIIIssrm}%
+\def\noexpand\mi{\fam1\cmXVIIIssmi}%
+\def\noexpand\sy{\fam2\cmXVIIIsssy}%
+\def\noexpand\ex{\fam3\cmXVIIIssex}%
+ \textfont0=\cmXVIIIssrm \textfont1=\cmXVIIIssmi
+ \textfont2=\cmXVIIIsssy \textfont3=\cmXVIIIssex
+ \textfont\itfam=\cmXVIIIssit
+ \textfont\bffam=\cmXVIIIssbd
+\def\noexpand\bd{\fam\bffam\cmXVIIIssbd}%
+\def\noexpand\it{\fam\itfam\cmXVIIIssit}%
+\def\noexpand\bi{\noexpand\ifXVIIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN18. Will print italic font .}%
+\noexpand\global\noexpand\XVIIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXVIIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN18. Will print roman font .}%
+\noexpand\global\noexpand\XVIIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXVIIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN18. Will print roman font .}%
+\noexpand\global\noexpand\XVIIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviiiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan24.textext b/macros/text1/macros/cmsan24.textext
new file mode 100644
index 0000000000..d035cc6ecd
--- /dev/null
+++ b/macros/text1/macros/cmsan24.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXXIVssbierr
+\global\newif\ifXXIVssccerr
+\global\newif\ifXXIVsstterr
+\font\cmXXIVssrm=cmss24 \font\cmXXIVssit=cmssi24
+\font\cmXXIVssbd=cmssbx24 \font\cmXXIVssmi=cmmi24
+\font\cmXXIVsssy=cmsy24 \font\cmXXIVssex=cmex24
+\expandafter\newdimen\csname\the\naMEtok ilsxxivss\endcsname
+\global\csname\the\naMEtok ilsxxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxivss\endcsname=0pt
+\csname\the\naMEtok ilsxxivss\endcsname=26pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXIVssrm}%
+\def\noexpand\mi{\fam1\cmXXIVssmi}%
+\def\noexpand\sy{\fam2\cmXXIVsssy}%
+\def\noexpand\ex{\fam3\cmXXIVssex}%
+ \textfont0=\cmXXIVssrm \textfont1=\cmXXIVssmi
+ \textfont2=\cmXXIVsssy \textfont3=\cmXXIVssex
+ \textfont\itfam=\cmXXIVssit
+ \textfont\bffam=\cmXXIVssbd
+\def\noexpand\bd{\fam\bffam\cmXXIVssbd}%
+\def\noexpand\it{\fam\itfam\cmXXIVssit}%
+\def\noexpand\bi{\noexpand\ifXXIVssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN24. Will print italic font .}%
+\noexpand\global\noexpand\XXIVssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXXIVsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN24. Will print roman font .}%
+\noexpand\global\noexpand\XXIVsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXXIVssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN24. Will print roman font .}%
+\noexpand\global\noexpand\XXIVssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxivss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan36.textext b/macros/text1/macros/cmsan36.textext
new file mode 100644
index 0000000000..3a64c94a76
--- /dev/null
+++ b/macros/text1/macros/cmsan36.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXXXVIssbierr
+\global\newif\ifXXXVIssccerr
+\global\newif\ifXXXVIsstterr
+\font\cmXXXVIssrm=cmss36 \font\cmXXXVIssit=cmssi36
+\font\cmXXXVIssbd=cmssbx36 \font\cmXXXVIssmi=cmmi36
+\font\cmXXXVIsssy=cmsy36 \font\cmXXXVIssex=cmex24
+\expandafter\newdimen\csname\the\naMEtok ilsxxivss\endcsname
+\global\csname\the\naMEtok ilsxxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxivss\endcsname=0pt
+\csname\the\naMEtok ilsxxivss\endcsname=38pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXXVIssrm}%
+\def\noexpand\mi{\fam1\cmXXXVIssmi}%
+\def\noexpand\sy{\fam2\cmXXXVIsssy}%
+\def\noexpand\ex{\fam3\cmXXXVIssex}%
+ \textfont0=\cmXXXVIssrm \textfont1=\cmXXXVIssmi
+ \textfont2=\cmXXXVIsssy \textfont3=\cmXXXVIssex
+ \textfont\itfam=\cmXXXVIssit
+ \textfont\bffam=\cmXXXVIssbd
+\def\noexpand\bd{\fam\bffam\cmXXXVIssbd}%
+\def\noexpand\it{\fam\itfam\cmXXXVIssit}%
+\def\noexpand\bi{\noexpand\ifXXXVIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN36. Will print italic font .}%
+\noexpand\global\noexpand\XXXVIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXXXVIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN36. Will print roman font .}%
+\noexpand\global\noexpand\XXXVIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXXXVIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN36. Will print roman font .}%
+\noexpand\global\noexpand\XXXVIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxivss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan8.textext b/macros/text1/macros/cmsan8.textext
new file mode 100644
index 0000000000..710177059f
--- /dev/null
+++ b/macros/text1/macros/cmsan8.textext
@@ -0,0 +1,49 @@
+\global\newif\ifcmVIIIssbierr
+\global\newif\ifcmVIIIssccerr
+\global\newif\ifcmVIIIsstterr
+\global\newif\ifcmVIIIssbderr
+\font\cmVIIIssit=cmssi8
+\font\cmVIIIssrm=cmss8 \font\cmVIIIssmi=cmmi8
+\font\cmVIIIsssy=cmsy8 \font\cmVIIIssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsviiiss\endcsname
+\global\csname\the\naMEtok ilsviiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviiiss\endcsname=0pt
+\csname\the\naMEtok ilsviiiss\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIIIssrm}%
+\def\noexpand\mi{\fam1\cmVIIIssmi}%
+\def\noexpand\sy{\fam2\cmVIIIsssy}%
+\def\noexpand\ex{\fam3\cmVIIIssex}%
+ \textfont0=\cmVIIIssrm \textfont1=\cmVIIIssmi
+ \textfont2=\cmVIIIsssy \textfont3=\cmVIIIssex
+ \textfont\itfam=\cmVIIIssit
+\def\noexpand\it{\fam\itfam\cmVIIIssit}%
+\def\noexpand\bd{\noexpand\ifcmVIIIssbderr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No bold font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIssbderrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifcmVIIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN8. Will print italic font .}%
+\noexpand\global\noexpand\cmVIIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifcmVIIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifcmVIIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviiiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan9.textext b/macros/text1/macros/cmsan9.textext
new file mode 100644
index 0000000000..7309c82d45
--- /dev/null
+++ b/macros/text1/macros/cmsan9.textext
@@ -0,0 +1,46 @@
+\global\newif\ifIXssbierr
+\global\newif\ifIXssccerr
+\global\newif\ifIXsstterr
+\font\cmIXssrm=cmss9 \font\cmIXssit=cmssi9
+\font\cmIXssbd=cmssbx9 \font\cmIXssmi=cmmi9
+\font\cmIXsssy=cmsy9 \font\cmIXssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsixss\endcsname
+\global\csname\the\naMEtok ilsixss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsixss\endcsname=0pt
+\csname\the\naMEtok ilsixss\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmIXssrm}%
+\def\noexpand\mi{\fam1\cmIXssmi}%
+\def\noexpand\sy{\fam2\cmIXsssy}%
+\def\noexpand\ex{\fam3\cmIXssex}%
+ \textfont0=\cmIXssrm \textfont1=\cmIXssmi
+ \textfont2=\cmIXsssy \textfont3=\cmIXssex
+ \textfont\itfam=\cmIXssit
+ \textfont\bffam=\cmIXssbd
+\def\noexpand\bd{\fam\bffam\cmIXssbd}%
+\def\noexpand\it{\fam\itfam\cmIXssit}%
+\def\noexpand\bi{\noexpand\ifIXssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN9. Will print italic font .}%
+\noexpand\global\noexpand\IXssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifIXsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN9. Will print roman font .}%
+\noexpand\global\noexpand\IXsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifIXssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN9. Will print roman font .}%
+\noexpand\global\noexpand\IXssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsixss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/fixcol.tex b/macros/text1/macros/fixcol.tex
new file mode 100644
index 0000000000..02f3402583
--- /dev/null
+++ b/macros/text1/macros/fixcol.tex
@@ -0,0 +1,155 @@
+% FILE HAS BEEN CONVERTED TO 2.03
+%
+% MULTIPLE COLUMN FORMATS FIXED MODE, two and three column
+% Harvey 1/29/86
+%
+\catcode`*=11 \catcode`@=11
+%
+\global\let\newcolumn=\np % new column in fixed mode is the
+\global\let\nc=\np % same as newpage in single column
+%
+\gdef\pagebody{\vbox to\vsize{\boxmaxdepth=\maxdepth
+ \pagecontents\vfill}}% redefine from plain.tex to add vfil
+ % prevents underfull vbox in last column
+%
+\gdef\flexibleformat{\write16{<TEXT1> Warning! You can't change to%
+ flexible format while in fixed format. }}%
+
+%
+\gdef\full*pgw{\hbox to \the\*txtw}% Output box to full pagewidth
+%
+\gdef\*colbox{\leftline{\pagebody}}% TeXbook definition
+%
+\gdef\*page{% MAKEPAGE, *mkpg, ships out the complete page body
+ \*badj % check for binding offset
+ \if*title\shipout % titlepage, no headline
+ \vbox{\*pgmat % page template
+ \makefootline}
+ \notitlepage
+ \else\shipout\vbox{ % normal page with head and footlines
+ \makeheadline %
+ \*pgmat % page template
+ \makefootline}
+ \fi
+ \ifnum\*pcount>0 \*blkpg\fi % call for empty page, BLANK PAGE MACRO
+ \advancepageno}% END, makepage routine
+%
+\gdef\*fixtwc{% BEGIN TWO COLUMNS FIXED FORMAT---set-up
+ \if*plain \par\vfill\eject \fi % new page prevents mixed formats
+ \if*dbl\e*fixtwc\fi % end any active double columns
+ \if*tpl \par\vfill\eject \fi % new page prevents mixed multicolumn format
+ % vfil eject prevents mixing formats
+ \def\*fixout{% TWO COLUMN OUTPUT, Fixed method
+ \if L\lr % if column indicator is left
+ \global\setbox\*lftcol=\*colbox % first column page
+ \global\let\lr=R % switch to second column
+ \else % print page and reset column indicator
+ \*page % format actual double column page
+ \global\let\lr=L % switch to first column
+ \fi
+ \ifnum\outputpenalty>-20000 % do nothing if no insert material
+ \else\dosupereject\fi % flush any held over material
+ }% End, normal fixed mode two column output routine
+%
+ \def\*pgmat{% PAGEMAT, formats columns and rules
+ \D=\the\*twcgut \D=.5\D % split gutter width in half
+ \full*pgw{\box\*lftcol % print left column
+ \hskip\D\vrule width\the\*clrw\hskip\D % gutter and rule
+ \*colbox\hfil} % print right column and fill
+ }% END, pagemat
+%
+ \def\newpage{\par\supereject % fills remainder of page with white
+ \if R\lr \null\vfill\eject\fi}% space and goes to next page
+ \let\np=\newpage
+%
+ \begingroup % BEGIN DOUBLE COLUMNS, fixed method
+ \tolerance=6400 % line breaking tolerance
+ \hbadness=6400 % message tolerance
+ \brokenpenalty=0 % setting these penalties to zero prevents
+ \clubpenalty=0 % strange page breaks that might otherwise
+ \widowpenalty=0
+ \hyphenpenalty=0
+ \exhyphenpenalty=0
+ \hsize=\the\*twcw % set column width
+ \let\lr=L % set switch to left (L) % begin with left
+ \output={\*multout} % fixed format output rou tine
+ \global\*plainfalse % plainoutput indicator false
+ \global\*dbltrue}% END FIXED TWO COLUMN FORMAT---set-up
+\global\let\twc=\*fixtwc
+%
+\gdef\e*fixtwc{\par\supereject % END FIXED TWO COLUMN FORMAT, called
+ \if R\lr \null\vfill\eject\fi % from onecolumn
+ \endgroup % two column fixed formatting ends
+ \global\*dblfalse % fixed double column indicator false
+ \global\*plaintrue}% plainoutput indicator true
+%
+\gdef\*fixthc{% BEGIN THREE COLUMNS FIXED FORMAT---set-up
+ \if*plain \par\vfill\eject\fi % new page prevents mixed formats
+ \if*tpl\e*fixthc\fi % end any active triple columns
+ \if*dbl \par\vfill\eject\fi % new page prevents mixed multicolumn formatting
+%
+ \def\*fixout{% THREE COLUMN OUTPUT, Fixed method
+ \if L\lr % if column indicator is left
+ \global\setbox\*lftcol=\*colbox
+ \global\let\lr=M % switch to middle column
+ \else\if M\lr % if middle column indicator is true
+ \global\setbox\*midcol=\*colbox
+ \global\let\lr=R % switch column indicator to right
+ \else
+ \*page % make the page
+ \global\let\lr=L % reset column indicator to left
+ \fi\fi %
+ \ifnum\outputpenalty>-20000 % no held over material
+ \else\dosupereject\fi}% eject held over insertions
+%
+ \def\*pgmat{% PAGEMAT, *pgmat, the page template routine
+ \D=\the\*thcgut \D=.5\D % half gutter width on each side of rule
+ \full*pgw{\box\*lftcol % print leftcolumn
+ \hskip\D\vrule width\the\*clrw\hskip\D % rule and gut.
+ \box\*midcol % print middle column
+ \if*norule \hskip2\D % supress rule on empty page call
+ \else % else set rules normally
+ \hskip\D\vrule width\the\*clrw\hskip\D\fi % rule and gut.
+ \*colbox\hfil} % print right column and fil
+ \global\*norulefalse
+ }% END, Pagemat
+%
+ \def\newpage{\par\supereject
+ \if M\lr \null\vfill\eject
+ \null\vfill\eject\global\*noruletrue\fi % supress column rules
+ \if R\lr \null\vfill\eject\global\*noruletrue\fi}
+ \let\np=\newpage
+%
+ \begingroup % BEGIN THREE COLUMNS, fixed method
+ \widowpenalty=0
+ \clubpenalty=0
+ \brokenpenalty=0
+ \hyphenpenalty=0
+ \exhyphenpenalty=0
+ \tolerance=9400
+ \hbadness=9400
+ \hsize=\the\*thcw % column width = three column width tokens
+ \let\lr=L % set column switch to left column
+ \output={\*multout} % fixed format output routine
+ \global\*plainfalse % plainoutput indicator false
+ \global\*tpltrue} % end 3 col fixed format
+\global\let\thc=\*fixthc % reset abbreviation for (thc)
+%
+\gdef\e*fixthc{\par\supereject % end 3 columns fixed mode
+ \if M\lr \null\vfill\eject \null\vfill\eject\fi % called from
+ \if R\lr \null\vfill\eject\fi % onecolumn
+ \endgroup % three column fixed formatting indicator f
+ \global\*tplfalse % end triple column indicator
+ \global\*plaintrue}% plainoutput indicator true
+%
+\gdef\*multout{\*badj
+ \*fixout
+ }% end fixed format output routine
+
+\gdef\onecolumn{\if*dbl\e*fixtwc\fi % end double column formatting
+ \if*tpl\e*fixthc\fi % end triple column formatting
+ \global\output={\*mkpg} % set single column output
+ }% end multiple column formatting
+\global\let\oc=\onecolumn
+%
+\catcode`*=12 \catcode`@=3
diff --git a/macros/text1/macros/flexcol.tex b/macros/text1/macros/flexcol.tex
new file mode 100644
index 0000000000..441066c681
--- /dev/null
+++ b/macros/text1/macros/flexcol.tex
@@ -0,0 +1,329 @@
+% 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/1/89
+%
+% MULTIPLE COLUMN FORMATS FLEXIBLE MODE, two and three column
+%
+\catcode`*=11\catcode`@=11
+\global\output{\flex*ut{\unvbox255}} % FLEXCOL normal output routine
+\gdef\flex*ut#1{% FLEXIBLE OUTPUT, flex*ut
+ \boxmaxdepth=\maxdepth
+ \shipout\vbox{
+ \offinterlineskip % butt boxes together
+ \if*title % Do nothing if this is a title page
+ \else\makeheadline\fi % makeheadline redefined in TEXT1
+ \vbox to\*txth{ % page height equals single column text height
+ \ifvoid\topins % no top insert present
+ \else\unvbox\topins\fi % place top insert before main text
+ #1 % insert the main information
+ \vfil % PREVENTS UNDERFULL BOX WHEN ONLY A FEW POINTS OFF
+ \ifvoid\footins % no foot insert present
+ \else\vskip\skip\footins % skip to footnote position
+ \footnoterule % print footnote rule
+ \unvbox\footins\fi % place foot insert after main text and rule
+ \makefootline} % end vbox to *txth
+ } % end vbox with running heads, if any
+ \if*title\notitlepage\fi % reset vsize for a normal page
+ \if\*pcount>0\*blkpg\fi % call for empty page macro, TEXT1
+ \*ncfalse
+ \advancepageno} % End flex*ut, flexible output macro
+%
+\gdef\*adjp#1{% ADJUST PAGE MACRO, height of inserts lost during output call, this macro
+ \global\advance#1 by-\topskip % restores these values to the output routines
+ \ifvoid\topins % compensate for topskip
+ \else % if no insert present do nothing else
+ \global\advance#1 by-\ht\topins % routine restores those values
+ \global\advance#1 by-\dp\topins % to the new output routines.
+ \global\advance#1 by-\skip\topins
+ \global\advance#1 by\dp\strutbox % fine tune split
+ \fi
+ \ifvoid\footins % do nothing if no footinsert present
+ \else % else compensate for skips when footins present
+ \global\advance#1 by-\ht\footins %
+ \global\advance#1 by-\dp\footins %
+ \global\advance#1 by-\skip\footins %
+ \global\advance#1 by\dp\strutbox % fine tune split
+ \fi}% END *adjp, adjust page macro
+%
+% \*balctest is called whenever leaving 2 or 3 column formatting
+%
+\gdef\*balctest{% TEST REMAINING TEXT DEPTH text for more than one page of remaining text
+ \setbox0=\vbox{\unvbox255} % height box255 always=vsize
+ \dimen9=\ht0 % find height of material in box255
+ \advance\dimen9 by\topskip % account for top of page topskip
+ \if*dbl \advance\dimen9 by\splittopskip % second column splittopskip
+ \else\advance\dimen9 by2\splittopskip % second and third columns
+ \fi % end accounting for topskips for splitting routines
+ \setbox255=\vbox{\unvbox0}
+ \ifdim\dimen9>\vsize % too much material for one page
+ \if*dbl\expandafter\global\output={\*balc}\*twcout %
+ \else\expandafter\global\output={\*balc}\*thcout %
+ \fi % use normal output before using balance columns routine
+ \else % less than one full page of text remaining
+ \*balc % use balance columns routine
+ \fi}% END, *balctest, test for output routine to balance columns
+%
+\gdef\*flextwc{\par% BEGIN FLEX METHOD OF TWO COLUMNS
+ \goodbreak
+ \if*dbl\e*flextwc\fi % end any active two column format
+ \if*tpl\e*flexthc\else % if previous material in threecolumns call
+ \vskip\the\*mskb\fi % end threecolumns, else skipbefore.
+%
+ \def\*balc{% BALANCECOLUMNS, TWO COLUMNS---beginning
+ \*badj % check for binding adjust
+ \splittopskip=\topskip % splittopskip equals topskip
+ \setbox0=\vbox{\unvbox255} % release unbalanced page material
+ \dimen0=\ht0 % prepare to find equal height dimension
+ \divide\dimen0 by2 % split dimension for two columns
+ \advance\dimen0 by-\baselineskip % back up one line
+ \ifdim\dimen0<\baselineskip % check split depth
+ \dimen0=\topskip % account for the topskip
+ \advance\dimen0 by\baselineskip % account for one line
+ \fi
+ {\vbadness=10000 % prevents underfull box message during loop
+ \loop \global\setbox3=\copy0 % routine.
+ \global\setbox1=\vsplit3 to\dimen0 %
+ \ifdim\ht3>\dimen0 % if column longer...
+ \global\advance\dimen0 by1pt %
+ \repeat} % end balancing loop
+ \setbox0=\vbox to\dimen0{\unvbox1} %
+ \setbox2=\vbox to\dimen0{\dimen2=\dp3 %
+ \unvbox3 \kern-\dimen2 \vfill} %
+ \ifvoid2 \setbox2=\vbox to\dimen0{\null\vfill}\fi %
+ \*pgsofar % format text accummulated so far
+ \global\output={\*dbl-error} % error message if balance fails
+ \dimen@=\*txth % return vsize to single page size
+ \*adjp\dimen@ % adjust vsize for any remaining inserts
+ \global\vsize=\dimen@ % adjusted vsize
+ }% END, *balc, balancecolumns macro, twocolumns
+%
+ \def\*pgsofar{% PAGESOFAR, format for two columns
+ \unvbox\*ppage % boxes two column material
+ \D=\the\*twcgut \D=.5\D % half gutter skip on either side of rule
+ \wd0=\hsize \wd2=\hsize % set text box width securely
+ \hbox to\*txtw{\box0\hskip\D\vrule width\the\*clrw
+ \hskip\D\box2\hfil} % set boxes and rules
+ }% END, *pgsofar, pagesofar output macro
+%
+ \def\*twcout{% TWO COLUMN OUTPUT, normal output routine
+ \splittopskip=\topskip
+ \splitmaxdepth=\maxdepth
+ \*badj % check for binding adjust
+ \dimen@=\vsize % total text depth for two column out routine
+ \divide\dimen@ by2 % set splitting dimension
+ \*adjp\dimen@ % adjust page size for inserts
+ \setbox0=\vsplit255 to\dimen@ % split boxes to proper height
+ \setbox2=\vsplit255 to\dimen@
+ \flex*ut\*pgsofar % output current page
+ \unvbox255 % release extra text material gathered
+ \*bigch=2\*txth % allow vsize changes from cpt*vsize
+ \global\vsize=\*bigch % reset vsize to two column format
+ \penalty\outputpenalty}% END *twcout, two columns output routine
+%
+% TWOCOLUMNS, NEW COLUMN ROUTINE
+% Harvey 12/06/85
+% This method will fail if a topinsert or footinsert is added to
+% the page after the new column call. The box and glue are set
+% at the newcolumn call accounting for inserts active then only
+%
+ \def\newcolumn{\par % NEWCOLUMN, Flexible method, two columns
+ \D=.5\vsize % depth of one column
+ \ifdim\pagetotal>\D % determine which column is current
+ \D=\pagegoal % second column, depth > .5\vsize
+ \advance\D by-\pagetotal
+ \advance\D by-\topskip % account for topskip of 1st column
+ \advance\D by-\splittopskip % splittopskip of 2d column
+ \advance\D by-\dp\strutbox % account for character depth
+ \else % first column, depth equals half the vsize
+ \advance\D by-\pagetotal % subtract current page depth
+ \advance\D by-\topskip % subtract topskip form page depth
+ \advance\D by-\dp\strutbox % account for character depth
+ \fi
+ \vbox to\D{\vfill} % blank box to fill column
+ \*nctrue
+ \goodbreak}% END, newcolumn macro for two columns
+ \let\nc=\newcolumn % set two column definition of newcolumn
+%
+ \begingroup % BEGIN TWOCOLUMNS---set-up
+ \global\*dbltrue % double columns active
+ \brokenpenalty=0 % If these penalties are set to zero the text
+ \clubpenalty=0 % will be formatted properly. If the are in force
+ \widowpenalty=0 % uneven columns may result. The penalties will be
+ \hyphenpenalty=0 % honored in either page or vsplit modes.
+ \exhyphenpenalty=0
+ \tolerance=6400 % raise tolerance for short column material
+ \hbadness=6400 % warning message given at 6400
+ \*bigch=2\*txth % initialize two column page height
+ \dimen@=\*txth % set dimen@ to current page height
+ \advance\dimen@ by-\pagetotal % subtract current page depth
+ \*adjp\dimen@ % adjust page depth for inserts
+ \vsize=2\dimen@ % set vsize equal to twice the remaining depth
+ \output={\global\setbox\*ppage=\vbox{\unvbox255}}\eject
+ \output={\*twcout} % output partial page and set output
+ \hsize=\the\*twcw % to twocolumnout, set new hsize for column
+ \topskip=12pt plus4pt % glue for vsplitting mechanism
+ }% END, *flextwc, flexible two column---set-up
+%
+\gdef\e*flextwc{% TERMINATION MACRO FOR TWO COLUMNS FLEX METHOD
+ \if*nc \vfill\eject\fi % When we've done a \nc dump the page before balancing
+ \output={\*balctest}\eject % test for too much text for balancing
+ \global\output={\flex*ut{\unvbox255}} % output page
+ \global\*dblfalse % change two column indicator to false
+ \endgroup % END DOUBLE COLUMN FORMAT
+ \global\vsize=\*txth % reset page size to single column height
+ \global\hsize=\*txtw % reset page width to single column width
+ \dimen@=\vsize % prepare to include current inserts
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \global\pagegoal=\dimen@ % adjust pagegoal for current inserts
+ \penalty-500
+ \vskip\the\*mska
+ }% END e*flextwc, TWO COLUMNS termination routine
+%
+%
+\gdef\*flexthc{\par% BEGIN FLEX METHOD OF THREE COLUMNS
+ \goodbreak
+ \if*tpl\e*flexthc\fi % end any active triple columns
+ \if*dbl\e*flextwc\else % if previous material is in twocolumns, end
+ \vskip\the\*mskb\fi % twocolumns, else skipbefore
+%
+ \def\*balc{% BALANCECOLUMNS, THREECOLUMNS---beginning
+ \*badj % check for binding adjust
+ \splittopskip=\topskip % split dimension for 3col
+ \setbox0=\vbox{\unvbox255}
+ \dimen0=\ht0 % prepare to find equal height dimension
+ \divide\dimen0 by3 % split dimension for each column
+ \advance\dimen0 by-\baselineskip % back-up one baselineskip
+ \ifdim\dimen0<\baselineskip % check split depth
+ \dimen0=\topskip % account for the topskip
+ \advance\dimen0 by\baselineskip % account for one line
+ \fi
+ {\vbadness=10000
+ \loop \global\setbox5=\copy0 % begin vsplit loop for balancing
+ \global\setbox3=\vsplit5 to\dimen0
+ \global\setbox4=\vsplit5 to\dimen0
+ \ifdim\ht5>\dimen0 \global\advance\dimen0 by1pt
+ \repeat} % end balancing loop
+ \setbox0=\vbox to\dimen0{\unvbox3} % first column
+ \setbox1=\vbox to\dimen0{\unvbox4} % second column
+ \ifvoid1 \setbox1=\vbox to\dimen0{\line{\hfil}\vfill}\fi
+ \setbox2=\vbox to\dimen0{\dimen2=\dp5\unvbox5\kern-\dimen2 \vfill}
+ \ifvoid2 \setbox2=\vbox to\dimen0{\line{\hfil}\vfill}\fi
+ \*pgsofar
+ \global\output={\*tpl-error} % error message if loop fails
+ \vsize=\*txth % reset page size to single column
+ \dimen@=\vsize % return vsize to single page vsize
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \global\vsize=\dimen@ % new vsize accounts for current inserts
+ }% END, *balc, balance columns, threecolumns
+%
+ \def\*pgsofar{\unvbox\*ppage % boxes three column material
+ \D=\the\*thcgut \D=.5\D % half gutter for each side of rule
+ \wd0=\hsize \wd1=\hsize \wd2=\hsize % set text box width securely
+ \hbox to\*txtw{\box0\hskip\D\vrule width\the\*clrw
+ \hskip\D\box1\hskip\D\vrule width\the\*clrw
+ \hskip\D\box2\hfil} % set boxes and rules
+ }% End *pgsofar, page-so-far macro
+%
+ \def\*thcout{% THREE COLUMNS OUT, normal output routine for threecolumns
+ \splittopskip=\topskip
+ \splitmaxdepth=\maxdepth
+ \*badj % check for binding adjust
+ \dimen@=\vsize % total text depth for three column out routine
+ \divide\dimen@ by3 % set splitting dimension
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \setbox0=\vsplit255 to\dimen@ % split boxes to proper height
+ \setbox1=\vsplit255 to\dimen@ %
+ \setbox2=\vsplit255 to\dimen@ %
+ \flex*ut\*pgsofar % send material to output routine
+ \unvbox255 % release any extra material gathered
+ \*bigch=3\*txth % allow vsize changes from cpt*vsize
+ \global\vsize=\*bigch % reset vsize for three column format
+ \penalty\outputpenalty}% END *thcout, normal output penalty set
+%
+% THREECOLUMNS, NEW COLUMN ROUTINE
+% Harvey 12/19/85
+% This routine has no way to compensate for inserts following the
+% new column call and will produce an overfull vbox message while
+% output active. It may also produce and underfull vbox message
+% if there is no stretchable glue in the column.
+ \def\newcolumn{\par % new column, three columns
+ \ifdim\pagetotal>.66666\vsize % you are in the third column
+ \D=\pagegoal % work from pagegoal for third column
+ \advance\D by-\topskip % account for topskip in 1st column
+ \advance\D by-2\splittopskip % splittopskip in columns 2 and 3
+ \advance\D by-\pagetotal % subtract current pagetotal
+ \advance\D by-\dp\strutbox % account for character depth
+ \else\ifdim\pagetotal>.3\vsize % you are in the second column
+ \D=.66666\vsize % column goal is 2/3 vsize
+ \advance\D by-\topskip % account topskip in 1st column
+ \advance\D by-\splittopskip % splittopskip in column 2
+ \advance\D by-\pagetotal % compensate for text
+ \advance\D by-\dp\strutbox % account for character depth
+ \else % you are in the first column
+ \D=.33333\vsize % goal is 1/3 vsize in first column
+ \advance\D by-\topskip % account for splittopskip
+ \advance\D by-\pagetotal % compensate for text
+ \advance\D by-\dp\strutbox % account for character depth
+ \fi\fi % end column determination and fil
+ \vbox to\D{\vfill}
+ \*nctrue
+ \goodbreak}% END, newcolumn for three columns
+%
+ \let\nc=\newcolumn % set new column definition to three columns
+%
+ \begingroup % BEGIN GROUP, THREE COLUMNS
+ \global\*tpltrue % set three column indicator on
+ \brokenpenalty=0 % These penalties should be zero in multicolumn
+ \clubpenalty=0 % modes that use the vsplit method of paging,
+ \widowpenalty=0 % the paging methods would honor the penalties.
+ \hyphenpenalty=0 % is erratic columns.
+ \exhyphenpenalty=0 %
+ \tolerance=9600 % raise tolerance for short columns
+ \hbadness=9600 % warnings issued at badness of 9600
+ \*bigch=3\*txth % initialize three column height
+ \dimen@=\*txth % set dimen@ to current page height
+ \advance\dimen@ by-\pagetotal % subtract current page depth
+ \*adjp\dimen@ % adjust page for topskip and inserts
+ \vsize=3\dimen@ % set vsize to 3 times remaining single column depth
+ \output={\global\setbox\*ppage=\vbox{\unvbox255}}\eject
+ \output={\*thcout} % output partial page and set output
+ \hsize=\the\*thcw % to threecolumnout, set new hsize for column
+ \topskip=12pt plus4pt % glue for the vsplitting mechanism
+ }% END *flexthc, three columns set-up
+%
+\gdef\e*flexthc{% TERMINATION THREE COLUMNS FLEX METHOD
+ \if*nc \vfill\eject\fi % When we've done a \nc dump the page before balancing
+ \output={\*balctest}\eject % balance remaining three column material
+ \global\output={\flex*ut{\unvbox255}} % shipout page
+ \global\*tplfalse % end three column indicator
+ \endgroup % END GROUP THREE COLUMNS
+ \global\vsize=\*txth % reset vsize to single column height
+ \global\hsize=\*txtw % reset hsize to single column width
+ \dimen@=\vsize % prepare to include current inserts
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \global\pagegoal=\dimen@ % reset pagegoal to include inserts
+ \penalty-500
+ \vskip\the\*mska}% END E*flexthc, three columns termination macro
+%
+%
+\gdef\onecolumn{\if*dbl\e*flextwc\fi % end double column formatting
+ \if*tpl\e*flexthc\fi
+ \global\output={\*mkpg}
+ }% end triple column formatting
+\global\let\oc=\onecolumn
+%
+\gdef\*dbl-error{\errhelp=\balerrhelp
+ \errmessage{ Double columns can't be balanced on page \the\pageno . %
+ Please type h for help. }%
+ \flex*ut{\unvbox255}}
+\gdef\*tpl-error{\errhelp=\balerrhelp
+ \errmessage{ Triple columns can't be balanced on page \the\pageno . %
+ Please type h for help. }%
+ \flex*ut{\unvbox255}}%
+%
+\catcode`*=12\catcode`@=3
+
+
diff --git a/macros/text1/macros/text1.tex b/macros/text1/macros/text1.tex
new file mode 100644
index 0000000000..dd2fc1bdbb
--- /dev/null
+++ b/macros/text1/macros/text1.tex
@@ -0,0 +1,3 @@
+\input plain.tex
+\input txt1v409.tex
+\dump
diff --git a/macros/text1/macros/txt1v409.tex b/macros/text1/macros/txt1v409.tex
new file mode 100644
index 0000000000..afc9acb6c2
--- /dev/null
+++ b/macros/text1/macros/txt1v409.tex
@@ -0,0 +1,3536 @@
+% 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