summaryrefslogtreecommitdiff
path: root/obsolete
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-30 03:00:44 +0000
committerNorbert Preining <norbert@preining.info>2024-01-30 03:00:44 +0000
commit084f5d8435744b7ea7ef487ec111a7bfd100ed62 (patch)
treed4e91f6ef6d075509a2b33942f57337725089951 /obsolete
parent6c43653052d016d5913aabb728c484f0e62b4754 (diff)
CTAN sync 202401300300
Diffstat (limited to 'obsolete')
-rw-r--r--obsolete/macros/hptex/dochc.tex827
-rw-r--r--obsolete/macros/hptex/hpmanual.tex1240
-rw-r--r--obsolete/macros/hptex/hptex.doc751
-rw-r--r--obsolete/macros/hptex/hptex.tex836
-rw-r--r--obsolete/macros/hptex/macroshc.tex897
-rw-r--r--obsolete/macros/mathematica/CHANGES65
-rw-r--r--obsolete/macros/mathematica/README222
-rw-r--r--obsolete/macros/mathematica/tex-mma-j.ps.gzbin0 -> 40574 bytes
-rw-r--r--obsolete/macros/mathematica/tex-mma.tar_zbin0 -> 418881 bytes
9 files changed, 4838 insertions, 0 deletions
diff --git a/obsolete/macros/hptex/dochc.tex b/obsolete/macros/hptex/dochc.tex
new file mode 100644
index 0000000000..1b287b14e5
--- /dev/null
+++ b/obsolete/macros/hptex/dochc.tex
@@ -0,0 +1,827 @@
+% FILE DOCHC
+%
+% *** Source for hardcopy of Documentation for HP TeX Macros ***
+% Copyright 1984 Hewlett-Packard Co.
+%
+\catcode`@=11
+\def\itemlist#1{\medskip\resetsubitems\itemset@\@ne\@ne{#1}}
+\def\itempar{\smallskip\itemset@\@ne\@ne\empty} \catcode`@=12
+\def\spacechar{\hskip1pt\lower3pt\vbox{ \hbox to 5pt
+ {\vrule height4pt width.009in \hfill
+ \vrule height4pt width.009in} \hrule depth.009in
+ height0pt}\hskip2pt}
+\def\langle{$\mathchar"4268$}
+\def\rangle{$\mathchar"5269$}
+\def\evenheading{\vbox{\hbox to \hsize{\eightrm Page \folio\hfil\HPTEX}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+\def\oddheading{\vbox{\hbox to \hsize{\eightrm Documentation\hfil Page \folio}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+
+\def\noheading{\hfil}
+\headline{\ifnum\pageno=1\noheading
+ \else\ifodd\pageno\oddheading\else\evenheading\fi\fi}
+\def\NOTE#1:{\itemlist{\hbox to .7in{NOTE\hfil#1}:}}
+\def\\{$\backslash$}
+\parindent.825in
+\parskip5pt
+\nopagenumbers
+\inset=.825in
+\def\section#1{\relax}
+
+\null
+\vskip.75in
+\centerline{\twelvebf DOCUMENTATION FOR \HPTEX\ MACROS}\footnote{}{\hskip-.76in
+ \eightrm\copyright 1984 Hewlett-Packard Co.}
+\smallskip
+\centerline{version A.00.00, Feb. 14, 1984.}
+\vskip1in
+\NOTE 1: PLAIN is read in as a separate file.
+
+\NOTE 2: ``@'' temporarily becomes a letter so that \HPTEX\ can use the
+ internal control sequences of PLAIN, and to avoid conflict between
+ the internal control sequences of \HPTEX\ and user names.
+
+\NOTE 3: This defines leaders used in the table of contents macros.
+
+\section{FONTS}
+
+\NOTE 4: \HPTEX\ has fonts available in sizes from 5 points to 24 points. The
+ fonts loaded in Plain are listed as comments to make it easier to
+ verify the fonts available.
+
+\NOTE 5: In case a font is used in a write or message.
+
+\NOTE 6: \\fontdef\#1\#2 defines the control sequence for the font, but the
+ font is not loaded until the first time the control sequence is
+ actually used. The first parameter is the control sequence to be
+ defined; the second is the external font name.
+
+\section{MACROS TO SET FSTYLE}
+
+\NOTE 7: These macros set the family and the background style. Then, using
+ \\setfont, they set the current font.
+
+\section{MACROS TO SET FSIZE}
+
+\NOTE 8: These macros set the background font size, and then use \\setfont to
+ set the current font. \\baselineskip and \\strutbox are set to
+ values appropriate to the font size. The fonts in families 0, 1,
+ and 2 are changed to appropriate sizes. The fonts that are not
+ already loaded, are not loaded unless they are needed by an entry
+ into either math mode or display mode.
+
+\section{MACROS TO SET CURRENT FONT USING FSTYLE AND FSIZE}
+
+\NOTE 9: \\tryfont\#1 sets \\nofont@ to true if the control sequence determine
+ by the current background font size and style (\#1) has not yet been
+ defined. If the control sequence does exist, \\nofont@ is set to
+ false, and the control sequence is invoked.
+
+\NOTE 10: \\setfont uses \\tryfont to set the current font based on the
+ background font size and style. If there is no control sequence
+ defined for that font, then \\tryfont is used again to check for a
+ font with the background size and in roman style. If there is
+ still no control sequence defined for that font, the size ten and
+ style roman is tried. This will always succeed in \HPTEX.
+
+ \itempar\\{f}fam will be a third factor in determining the current
+ font when other font families become available.
+
+
+\section{DEFAULTS}
+
+\NOTE 11: The default values in \HPTEX\ are family0 and font \\tenrm, with a
+ background style of roman, a background size of ten points, and a
+ superscript/subscript size of seven points.
+
+\section{LINE MACROS}
+
+\NOTE 12: These line setting macros take \\leftskip and \\rightskip into
+ account.
+
+\section{MORE MACROS}
+
+\NOTE 13: This replaces Knuth's definition of \\narrower. \\narrow@ is used in
+ the note and warning macros.
+
+\NOTE 14: \\need is followed by a dimension x. It uses \\need@ to determine
+ if x space remains on the page, and if not, causes an eject to
+ the next page.
+
+ \itempar\\need@ depends on \\okbreak which merely encourages a page
+ break at that point. Its effect is dependent on its nearness to
+ the bottom of the page, and whether the text following the \\need
+ fits completely on the page or not.
+
+\NOTE 15: \\for provides a for-loop. Parameter \#1 (\\fcount@) contains the
+ variable name; \#2 is the initial value of the variable; \#3
+ (\\fexit@) is the terminating value; \#4 (\\floop@) contains the
+ instructions to be done in the loop. The loop will not execute
+ unless the initial value (\#2) is less than or equal to the
+ terminating value (\#3). \\next@ is set to \\fnext@.
+
+\NOTE 16: \\fnext@ provides the looping capability for \\for. It executes
+ \\floop@ and then checks to see if \\fcount@ has reached the
+ terminating value. If it hasn't, then \\fcount@ is incremented. If
+ the terminating value has been reached, \\next@ is set to \\relax.
+ \\next@ is then entered and depending on its current meaning, either
+ the loop is repeated via \\fnext@, or \\relax ends the looping.
+
+
+\NOTE 17: \\uline\#1 makes a \\vbox containing \#1 with a horizontal rule .23em
+ under its baseline, and then creates an \\hbox containing the vbox
+ lowered by the amount necessary to place the baseline of \#1 in line
+ with the baseline of the current line of text.
+
+\section{START AND FINISH GROUP STRUCTURE}
+
+\NOTE 18: \\start\#1 and \\finish\#1 define local nestable blocks. In the
+ event of any error, the error message is delayed until corrections
+ are complete.
+
+\NOTE 19: \\start\#1 uses \\{if}invalid@ to determine if \#1 is a valid
+ blockname. If it is, a block (group) is begun and \\blockname@
+ stores \#1 as the name of the current block. The control sequence
+ \\BEGIN\#1 is invoked and \\Error is called to print out any error
+ messages.
+
+\NOTE 20: \\finish\#1 calls \\{if}invalid@ to determine if \#1 is a valid
+ blockname. If it is valid, \\matchup@ is called to close block \#1.
+ \\Error is called to print out any error messages.
+
+\NOTE 21: \\{if}invalid@\#1 tests to see if the control sequence \\BEGIN\#1
+ has been defined. If it has not been defined, it is ignored
+ and \\errset is called to store an error message.
+
+\NOTE 22: \\matchup@\#1 closes blocks as follows: if a \\finish is used when no
+ block currently exists, it is ignored. if a finish does not match
+ the current blockname, blocks are closed until either a match is
+ found or all blocks are closed. The parameter is the parameter to
+ \\finish.
+
+\NOTE 23: \\done closes the current block.
+
+\section{GENERAL ERROR HANDLING}
+
+\NOTE 24: These macros are used for general purpose error handling.
+ \\errfalse clears the error status. \\errset assumes an argument of
+ an error message; any use of \\errset sets the error status and
+ produces an error message when \\Error is encountered.
+
+\section{DATE AND TIME MACROS}
+
+\NOTE 25: \\mon sets the current month with the current font.
+
+\NOTE 26: \\date sets the current date: \langle month\rangle
+ \langle day\rangle,
+ \langle year\rangle.
+
+\NOTE 27: \\hour sets the current time of day in 12 hour format:
+ \langle hour\rangle:\langle minutes\rangle \langle AM or PM\rangle.
+
+\section{INDENTSTYLE}
+
+\NOTE 28: The switch \\{if}indent acts as a flag to indicate when \\indentstyle
+ is being used. This is used in \\indentstyle, \\noindentstyle, and
+ \\indentspace.
+
+\NOTE 29: \\indentstyle sets \\parindent to \\indentsize. If \\indentstyle is
+ already in effect, \\parskip is not changed. If \\indentstyle is
+ not already in effect, \\parskip is decreased by 5 points.
+
+\NOTE 30: \\noindentstyle sets \\parindent to zero points. If \\indentstyle is
+ in effect, \\parskip is increased by 5 points, otherwise it is not
+ changed.
+
+\NOTE 31: \\indentspace will update \\parindent only if \\indentstyle is in
+ effect.
+
+\section{RAGGED MARGIN}
+
+\NOTE 32: \\fixmargin@ preserves the original \\rightskip.
+
+\NOTE 33: \\justify undoes the effects of \\raggedright by returning to the
+ original \\rightskip, and resetting the interword and intersentence
+ space to the default values.
+
+\NOTE 34: \\raggedright saves the original \\rightskip with \\fixmargin@, adds
+ some stretch to \\rightskip, and if \\tt is not in effect, fixes the
+ interword and intersentence spaces.
+
+\NOTE 35: \\tt@ is used in \\raggedright in the \\ifx comparison. It is
+ necessary if the comparison is to succeed.
+
+\section{ITEM AND SUBITEM}
+
+\NOTE 36: \\itemset@ takes three parameters: \#1 specifies the left
+ indentation (in multiples of \\inset), \#2 should be the sum of the
+ left and right indentation (in multiples of \\inset), and \#3 is
+ the tag to be hung to the left of the item. The line size is in
+ \\dimen@. \\parshape is used to build the paragraph. The tag (\#3)
+ is hung to the left of the paragraph.
+
+\NOTE 37: \\itemlist\#1 is syntactically the same as \\item, however
+ \\itemlist preserves \\leftskip and \\right\-skip, and both the
+ left and right margins are indented by the value of \\inset. The
+ parameter contains the tag for the item. Each time \\itemlist is
+ used, the subitem tag is reset, and the item tag is incremented if
+ appropriate.
+
+\NOTE 38: \\subitem\#1 is syntactically the same as \\itemitem, however left an
+ rightskip are preserved, and both the left and right margins are
+ indented by twice the value of \\inset. The parameter contains the
+ tag for the subitem. Each time \\subitem is used, the subitem tag
+ is incremented, if appropriate.
+
+\NOTE 39: \\itempar creates a paragraph identical to that created by \\itemlist
+ except it will have an empty tag. It can be used for the second
+ paragraph of an item.
+
+\NOTE 40: \\subitempar creates a paragraph like that created by \\subitem, but
+ with an empty tag.
+
+
+\section{ITEM TAG AND SUBITEM TAG MACROS}
+
+\NOTE 41: The definition of a tag must do three things:
+
+ \inset1in\itempar (1) define a control sequence
+ \\reset[sub]items which will be used to restart tag allocation
+ between lists;
+
+ \itempar (2) restart tag allocation;
+
+ \itempar (3) define a control sequence \\[sub]itemtag to
+ produce a tag.
+ \inset.825in
+
+ \itempar\\icount@ (\\scount@) holds the value used to determine
+ the current item (subitem) tag for numbered and lettered tags.
+
+ \itempar\\idigit@ (\\sdigit@) is used with lettered tags to keep
+ track of how many times the item [subitem] tags have gone through
+ the alphabet without being reset.
+
+\NOTE 42: \\itemn@\#1 is used in the allocation of numbered tags. The
+ parameter is either \\icount@ or \\scount@.
+
+\NOTE 43: \\itemr@\#1 is used in the allocation of lower case Roman tags. The
+ parameter is either \\icount@ or \\scount@.
+
+\NOTE 44: \\itemR@\#1 is used in the allocation of upper case Roman tags.
+ The parameter is either \\icount@ or \\scount@.
+
+\NOTE 45: \\iteml@\#1\#2 is used in the allocation of lettered tags. If the
+ end of the alphabet is reached, it begins again with ``aa'' or
+ ``AA''. The first parameter is either \\icount@ or \\scount@. The
+ second parameter is either \\idigit@ or \\sdigit@.
+
+\NOTE 46: \\item@\#1,\#2,\#3 takes three parameters: \#1 is the initial value o
+ \\icount@ (item counter), \#2 is the value of \\idigit@ which is
+ used to print out the appropriate number of letters when using
+ letters as tags, and \#3 is the definition of the \\itemtag. It
+ defines \\resetitems to be the initialization of \\icount@ and
+ \\idigit@.
+
+\NOTE 47: \\itm does not take a parameter. It uses the current \\itemtag
+ as the parameter to \\itemlist. If the \\itemtag is numbers or
+ letters, a period is appended to the tag.
+
+\NOTE 48: \\subitem@ is similar to \\item@.
+
+\NOTE 49: \\sitm is the subitem macro equivalent to \\itm for item.
+
+\NOTE 50: The defaults are \\numbereditems and \\letteredsubitems. The
+ execution of these macros defines \\itemtag, \\subitemtag,
+ \\resetitems, and \\resetsubitems.
+
+\section{NOTE AND WARNING MACROS}
+
+\NOTE 51: \\BEGINnote defines the blockname ``note'' and sets the indentation
+ at twice the left and right skip amounts.
+
+\NOTE 52: \\BEGINwarning defines the blockname ``warning,'' sets the indentatio
+ to twice the left and rightskip amounts, and places a horizontal
+ rule above the text. \\ENDwarning places a horizontal rule below
+ the text.
+
+\NOTE 53: \\marginrule\#1 defines an \\hrule limited by \\leftskip and
+ \\rightskip. Its only parameter specifies the height of the rule.
+
+\section{VERBATIM MODE}
+
+\NOTE 54: In verbatim mode, all characters except (\\), ($\{$) and ($\}$)
+ are treated
+ verbatim. Characters that cannot be extracted from the current font
+ are taken from the math font and given a fixed space equal to the
+ space of the current font.
+
+
+\section{LUMPLINE AND LUMPSPACE MACROS}
+
+\NOTE 55: These macros make the verbatim mode use less memory. Multiple lines
+ and spaces are lumped together to make one large glob of glue
+ rather than many small globs.
+
+ \itempar The carriage return is made into an active character, and
+ given the meaning of \\lumpline@. \\lumpline@ accumulates
+ sequential carriage returns into one lump of vertical glue in
+ \\skip@.
+
+ \itempar ``\\{\spacechar}'' is made into an active character, and
+ given the meaning of \\lumpspace@. \\lumpspace@ accumulates
+ sequential spaces into one lump of horizontal glue in \\skip@.
+
+\goodbreak
+\section{PAGE CONTROL MACROS}
+
+\NOTE 56: \\newpage first balances multi-column format which transfers the
+ contents of \\box 255 to \\contrb@, so it always looks like the
+ page is empty immediately afterwards. The box \\contrb@ is checked
+ to see if the page is really empty.
+
+ \itempar If \\newpage occurs at the bottom of a full page, the
+ \\null\\vfill remains in recent contributions and causes an extra
+ page to be ejected. The workaround is to insert an \\eject in the
+ document just before the \\newpage (or the macro containing the
+ \\newpage).
+
+ \itempar The same problem occurs with \\evenpage and \\oddpage, and
+ the same workaround is effective.
+
+\section{HEADING AND FOOTING MACROS}
+
+\NOTE 57: Headlines and footlines are constructed as follows:
+
+ \inset1in
+ \itempar (1) under normal conditions the centered heading or
+ footing is centered, but in the event that one (or more) of the
+ headings or footings are too wide, space is distributed if possible
+ so there is no overlap. The macro triplehead@ does this.
+
+ \itempar (2) inside and outside headings and footings have priority
+ over left and right headings and footings. \\buildline takes care
+ of this.
+ \inset.825in
+
+ \itempar Notice that if the tokens in an \\hbox have width 0pt, it
+ is assumed they are empty.
+
+ \itempar The macros and token registers associated with headings
+ and footings should be used near forced page breaks or at the
+ begining of the document. TeX scans ahead when building a page, so
+ the use of these macros could affect the previous page.
+
+\NOTE 58: \\buildline decides which tokens will be on the left and right of
+ the headline or footline that is being constructed. \\lft and \\rght
+ hold the numbers of the boxes containing the tokens to be placed on
+ the left and right sides of the line. They are initialized to the
+ boxes for \\leftheading and \\rightheading. If the box containing the
+ \\insideheading (\\box3) is not empty, then for an odd page \\lft is
+ set to 3, and for an even page \\rght is set to 3.
+
+ \itempar If the box containing the \\outsideheading (\\box4) is not
+ empty, then for an odd page \\rght is set to 4, and for an even
+ page \\lft is set to 4.
+
+ \itempar \\triplehead is called to actually construct the line.
+
+\NOTE 59: \\triplehead\#1\#2\#3 requires three parameters. \#1 is the number of
+ the box that is to go to the left, \#2 is the box number for the
+ center, and \#3 is the box number for the right. \\skip@ is the glue
+ to go between the left and center boxes, and \\skip@ii is the glue
+ to go between the center and right boxes.
+
+ \itempar If the width of the left box is greater than the width of
+ the right box, \\skip@ii is increased by the difference, otherwise,
+ \\skip@ is increased by the difference.
+
+ \itempar The line is then built by stringing together the boxes and
+ glue.
+
+\NOTE 60: \\loadbox\#1\#2 takes two parameters: \#1 is the box number, \#2 is t
+ token list to be put in the box.
+
+\NOTE 61: \\headline checks to see if headings are turned on or off. If on,
+ it loads the appropriate boxes with the various heading token
+ lists and calls \\buildline. If off, it adds horizontal glue, and
+ if \\suspendheading is in effect, updates the \\headcount.
+
+\NOTE 62: \\footline is similar to \\headline.
+
+\section{BOX MACROS}
+
+\NOTE 63: \\boxit\#1 takes as its parameter the text to be placed in the box,
+ and can be used when a real box is wanted, e.g.,
+ \\setbox0\\boxit$\{${$\ldots$}$\}$.
+ \\boxit uses \\halign to center the lines of text, separated by \\cr,
+ within the box.
+
+ \itempar The value of \\boxline determines the thickness of the
+ rule around the box. The value of \\boxspace determines the amount
+ of space between the rule and the text.
+
+\NOTE 64: \\centerbox\#1 takes as its parameter the text to be boxed, and then
+ uses \\centerline to center the box resulting from \\boxit\#1. The box
+ is separated from surrounding text by \\abovedisplayskip and
+ \\belowdisplayskip.
+
+\NOTE 65: \\textbox\#1 takes as its parameter the text to be boxed. It places
+ the boxed text in the current line (or begins a new paragraph if
+ encountered in vertical mode) with the baseline of the enclosed
+ text lined up with the baseline of the line.
+
+\section{HP2680A and HP2688A COPY CONTROL MACROS}
+
+\NOTE 66: These commands control the number of copies per page. Owing to the
+ synchronization problems associated with TeX, these should only be
+ used near forced page ejects or at the begining of a document.
+
+ \itempar \\globalspecial writes the parameter to the postamble of
+ the PIF file.
+
+ \itempar \\copycnt contains the number of the register that the PIF
+ server will look in to find the number of copies desired.
+
+ \itempar \\oldcopy contains the number of copies desired. The
+ default is two, so if \\copieson is invoked before the user has
+ used \\copies\langle n\rangle, two copies will be generated.
+
+\section{HP2680A and HP2688A LOGICAL PAGE CONTROL (LPC) MACROS}
+
+\NOTE 67: \\lpcount@ holds the number of the register to be interpreted
+ by the PIF driver for explicit logical page control.
+
+ \itempar\\nextlp@ holds the page control number to be put into
+ \\count\\lpcount@.
+
+ \itempar These macros avoid the synchronization problems of TeX by
+ interjecting a page eject at an appropriate time. At the beginning
+ of the document and after each \\shipout, the ``empty@'' flag is set
+ to true.
+
+ \itempar If an LPC macro occurs when the ``empty@'' flag is true, \\ne
+ is updated, its value is put into \\count\\lpcount@, and the flag
+ is set to false.
+
+ \itempar If an LPC macro occurs when the ``empty@'' flag is false, \\n
+ is updated, but the value in the register \\count\\lpcount@ is not
+ changed. After the next shipout, \\count\\lpcount@ is updated by
+ the output routine.
+
+ \itempar The codes for \\lpreset and \\lpexit will, if left alone, onl
+ for one page.
+
+\section{TABLE MACROS}
+
+\NOTE 68: The table macros are complex. It is recommended that anyone
+ wanting to understand how they work examine the LOG file of
+ a table made with \\tracingmacros=1 and \\tracingcommands=2.
+
+ \itempar The table macros use unallocated dimension and token
+ registers to store the column specifications. New dimensions or
+ tokens should not be allocated between the \\tableformat and the
+ last \\tablerow or \\tablebar in a table. If any are allocated the
+ result will be a very strange looking table and a TeX error. If
+ too many columns, dimensions, tokens or inserts are allocated, an
+ error message is given and the registers are used anyway.
+
+ \itempar A row is processed in sections. \\parseline@ takes
+ sections of the parameter to \\tableformat or \\tablerow. Each
+ section is delimited by a ``\~{}''. \\parsecol@ takes sub-sections
+ of the section where each sub-section is delimited by a ``$|$''.
+ After a sub-section is processed, the next sub-section is fetched
+ until the end of a section is reached. The next section is then
+ fetched and processed until the end of the original parameter to
+ \\tableformat or \\tablerow is reached.
+
+ \itempar \\span is temporarily redefined during the execution of
+ either a \\tablerow or \\tablebar macro to allow spanning of
+ multiple columns.
+
+ \itempar The standard table specifications are \\leftline,
+ \\rightline, \\centerline and (for internal columns) \\paragraph.
+ You can also make your own. There are only two rules:
+
+ \inset1in
+ \itempar(1) your macro will have one parameter (the text)
+
+ \itempar(2) your macro will yield a box of width \\hsize.
+ \inset.825in
+
+\NOTE 69: \\uptoks@ increments \\cntA@, used as a pointer to a token register
+ to hold column alignment specifications, and \\cntB@, used as a
+ pointer to a dimension register used to hold column width specifi\-%
+ cations. If too many token registers are used, an error message is
+ printed, and processing continues.
+
+\NOTE 70: \\bump@ increments \\cntC@, which contains the number of columns
+ processed in the current \\tablerow or \\tablebar. If the total number
+ of columns specified in the \\tableformat has not yet been processed,
+ then \\cntC@ is incremented, and \\uptoks@ is called to increment the
+ pointers to the registers that hold the column specifications.
+
+\NOTE 71: \\tableformat\#1 has as its parameter the description of the table
+ format. The alignment for the entire table is given first,
+ followed by the formats for each column. A column format consists
+ of its alignment followed by its width. A ``$|$'' separates the
+ table format from the column formats, and each column format from
+ the next.
+
+ \itempar \\tableformat first calls \\tablelet with the three
+ parameters \\just@, \\just@, and \\relax.
+
+ \itempar Next, \\parse@ (which has been assigned the meaning of
+ \\parseline@) is called and sent one parameter, which is delimited
+ by ``\lower4pt\hbox{\~{}}''. This effectively sends the contents
+ of the parameter of \\tableformat up to the first
+ \lower4pt\hbox{\~{}} to \\parse@ (\\parseline@). The \\done@ is
+ an undefined control sequence used to mark the end of the
+ specifications in the \\tableformat.
+
+\NOTE 72: \\tablerow\#1 is similar to \\tableformat. Its parameter is a list
+ of the contents for each column of the row. Each column must start
+ and terminate with either a ``$|$'' for a visible bar, or a
+ ``\lower4pt\hbox{\~{}}'' for an invisible bar.
+
+ \itempar The parameters sent to \\tablelet are: \\bbar@, \\wbar@,
+ and \\endrow@.
+
+\NOTE 73: \\tablebar\#1 sets horizontal rules across the table. It resets
+ \\topstrut, \\botstrut, and \\table\-space, and then passes its
+ parameter to \\tablerow. Its parameter is a list of column
+ contents, with each column indicated as for \\tablerow. A
+ column can be empty, contain a \\vrule, or contain \\tbar.
+
+\NOTE 74: \\tablelet requires three parameters. The first is assigned to the
+ control sequence \\b@, the second to \\w@, and the third to \\f@.
+ \\CntA@, \\CntB@, and \\CntC@ are initialized. \\parse@ is assigned
+ the meaning of \\parseline@. If currently in horizontal mode,
+ vertical mode is entered; if in vertical mode, interline glue is
+ inhibited.
+
+\NOTE 75: \\just@\#1 is never invoked directly. The control sequences \\b@
+ and \\w@ are \\let to be \\just@ in \\tablelet when \\tablelet is
+ called from \\tableformat. \\just@ is invoked by \\parsecol@ the
+ first time \\parsecol@ is entered. The parameter to \\just@ is the
+ alignment specification for the table.
+
+ \itempar \\just@ assigns the control sequences \\b@ and \\w@ the
+ meaning of \\tform@, and initializes \\maxcol@ to 0. The control
+ sequence \\tablejust@ is assigned the table alignment
+ specification (\#1).
+
+\NOTE 76: \\tform@\#1 passes its parameter, which is the set of specifications
+ for a column, on to \\tform@@ with a \lower 4pt\hbox{\~{}}
+ deliminating the parameter.
+
+\NOTE 77: \\tform@@\#1\#2\lower 4pt\hbox{\~{}} updates the pointers to the
+ registers to be used for storing column specifications, puts the
+ column alignment (\#1) into the current token register, and the
+ column width (\#2) into the current dimension register. Then
+ \\maxcol@ is incremented to count the column just completed.
+
+\NOTE 78: \\bbar@\#1 begins a row that starts with a visible vrule. The
+ parameter is empty.
+
+\NOTE 79: \\wbar@\#1 begins a row that starts with an invisible vrule. The
+ parameter is empty.
+
+\NOTE 80: \\beginrow@\#1 reassigns \\b@ and \\w@ the meanings of \\vbar@ and
+ \\ibar@ respectively. The parameter is empty.
+
+ \itempar Box 0, an \\hbox that will contain the row, is begun with
+ a \\bgroup, and the assignments that should hold within the box are
+ made.
+
+\NOTE 81: \\endrow@ finishes Box 0 and aligns the resulting box according to
+ \\tablejust@.
+
+\NOTE 82: \\vbar@\#1 adds a column entry that terminates with a visible \\vrule
+ The parameter contains the column entry.
+
+\NOTE 83: \\ibar@\#1 adds a column entry that terminates with an invisible
+ rule. The parameter contains the column entry.
+
+\NOTE 84: \\cs@\#1 determines if a column entry (\#1) spans multiple columns,
+ and invokes \\span@ with the appropriate parameters.
+
+\NOTE 85: \\parseline@\#1\lower 4pt\hbox{\~{}} is called by \\tableformat and
+ \\tablerow (and indirectly by \\tablebar). Its parameter is the
+ part (section) of the parameter to the calling macro terminated by
+ the first occurrence of ``\lower 4pt\hbox{\~{}}'' . If the
+ parameter is \\done@, then processing is complete, and \\parse@ is
+ assigned the current meaning of \\f@, which is \\relax if
+ \\parseline@ was called from \\tableformat, or \\endrow@ if
+ \\parseline@ was called from \\tablerow.
+
+ \itempar If processing is not done, \\p@ss is assigned the meaning
+ of \\parsecol@, and then \\p@ss is invoked and its parameter is
+ that part (sub-section) of the parameter to \\parseline@ up to the
+ first occurrence of ``$|$''. \\done@ is an end of processing
+ indicator. \\parse@ is invoked and, depending on its current
+ assigned meaning, either terminates processing of this
+ \\tableformat or \\tablerow parameter, or takes the next section of
+ the parameter of the \\tableformat or \\tablerow terminated by
+ \lower 4pt\hbox{\~{}} as its parameter.
+
+\NOTE 86: \\parsecol@\#1 is called by \\parseline@ and has as its parameter tha
+ part (sub-section) of the parameter to \\parseline@ up to the next
+ occurrence of $|$. It defines the macro \\parsemode@: if we are on
+ the last column, then the currently assigned value of \\w@
+ (\\tform@ or \\ibar@, depending on whether a \\tableformat or a
+ \\tablerow is being processed) is invoked, and \\p@ss becomes
+ \\lastp@ss; if we are not on the last column, then \\b@ (which is
+ either \\tform@ or \\vbar@) is invoked; in either case, \\p@ss is
+ called again and will either terminate processing or get the next
+ section to be processed.
+
+
+\NOTE 87: \\span@\#1\#2 sets a box spanning the required number of columns and
+ containing the text in the parameter. \\hsize and \\z@ are set to
+ the width and alignment specifications respectively of the first
+ column spanned. The pointers are then incremented once for each
+ column spanned, and the width of each column plus the width of a
+ vertical bar is added to the \\hsize for each column spanned. The
+ first parameter is the integer following \\span, and the second is
+ the remainder of the column contents.
+
+\section{SECTION AND HEADING MACROS}
+
+\NOTE 88: These macros are used for head or section level control.
+
+ \itempar\\basehead is the zero pointer value for the four pointers
+ to the head counters. The head counters count the number of
+ current headings at each heading level.
+
+ \itempar\\headlevel keeps track of the level of the current
+ heading.
+
+ \itempar To add a fifth level, do the following:
+
+ \inset1in
+ \itempar(1) Change the ``\\advance\\count10 by~4'' command to
+ ``\\advance\\count10 by~5''. This allocates the counters for the
+ level number.
+
+ \itempar(2) Change ``\\ifnum\\hdlevel$<$4 '' to
+ ``\\ifnum\\hdlevel$<$5'' in the \\sethead@ macro.
+
+ \itempar(3) Allocate a new token register, \\fifthlevelhead, and
+ define a corresponding \\headE@:\hfil\break
+ \\def\\headE@$\{$\\head5\\the\\fifthlevelhead$\}$.
+
+ \itempar(4) Modify the \\level macro so that it includes
+ \\headE@.
+
+ \itempar(5) Load \\fifthlevelhead with some appropriate tokens.
+ \inset.825in
+
+\NOTE 89: \\setlevelno\#1 has one parameter: the levelnumber to be established.
+ This can be up to 4 numbers, separated by periods. The level number
+ and the pointer to the head counters are initialized.
+
+ \itempar``.-1.'' is appended to the parameter to act as an end of
+ parameter signal.
+
+\NOTE 90: \\sethead@\#1. has as its parameter one of the num\-bers in the
+ parameter to \\setlevelno. The first num\-ber it receives is put into
+ the head counter for the first level. The second number goes into
+ the head counter for the second level, etc. Processing is
+ completed when -1 is received as a parameter, or when 4 levels have
+ been done.
+
+\NOTE 91: \\head\#1 is called indirectly by \\level via \\headA@, or \\headB@,
+ etc. It oversees adjusting the \\levelno according to the level of
+ the new heading. Its parameter is the level of the new
+ heading.
+
+ \itempar If the new heading is on a level inferior to the current
+ heading, \\uplevel@ is called, otherwise \\headlevel is set to the
+ level of the new heading and that head counter for that level is
+ incremented.
+
+ \itempar\\head@ is called to update \\levelno.
+
+\NOTE 92: \\uplevel@\#1 does what is necessary to add a level that has a
+ higher
+ number than the current level. \#1 is the level of the new heading.
+
+\NOTE 93: \\head@ defines \\levelno.
+
+\NOTE 94: These allocate token registers for each level description, and
+ define a corresponding \\headA@ (or \\headB@ etc.) that calls \\head
+ with the appropriate parameter, and accesses the tokens for that
+ headlevel.
+
+\NOTE 95: \\level\#1\#2 takes two parameters: \#1 is the level of the heading,
+ and \#2 becomes the definition of \\title. A case statement is
+ used to invoke the appropriate choice of \\headA@, \\headB@, etc.
+
+\section{CONTENTS FILE MACROS}
+
+\NOTE 96: ``\\content@'' can now be written with \\write
+
+\NOTE 97: \\ctswrite\#1 writes its parameter into a file along with the current
+ page number. If the file does not already exist, one is created.
+ When the file is read at a later time, @ will not be a character.
+ \\{\_} is redefined so that it can be read from the contents file.
+ \\content@ is defined with @ no longer a character so that it can be
+ read from the contents file.
+
+
+\NOTE 98: \\contents adds the table of contents if a contents file was
+ created.
+
+\section{FOOTNOTES AND INSERTIONS}
+
+\NOTE 99: The \\vfootnote\#1 of PLAIN has been modified to accommodate
+ multi-column format by the insertion of \\realhsize to restore the
+ original \\hsize and by adding ``1\\baselineskip'' to remove any
+ glue from \\baselineskip.
+
+\NOTE 100: \\note generates footnotes with sequential numbers.
+
+\NOTE 101: \\midinsert has been changed from the definition in PLAIN by
+ the insertion of \\p@gefalse.
+
+\NOTE 102: \\@ins has been changed from the definition in PLAIN by adding a
+ return to the normal \\hsize and \\vsize.
+
+\NOTE 103: The \\endinsert of PLAIN has been modified. The ``room left on page''
+ calculation has been expanded to handle multi-column format: if
+ there is room, the columns are balanced and the insertion is
+ appended. The penalty (first item in the \\insert) is set to -100 if
+ the insertion cannot fit on the current page, this keeps the page
+ from stretching if the insertion can't fit on the page.
+
+\section{COLUMN MACROS}
+
+\NOTE 104: The column macros and output routines are interrelated. Every time
+ the number of columns changes, a false output routine is invoked.
+ This routine takes the current page (and splits it up if necessary)
+ and appends it to the contrib box. The \\hsize is then reduced (or
+ restored) and the \\vsize is multiplied (or restored). Then, to
+ every insert which was not void during the false output routine a
+ null insert is made. This restores the page goal (in case there are
+ no bona fide insertions, one insertion is always made, it is called
+ \\hacker@). A new page total is then calculated from the height of
+ the contrib box. The two macros employed to do this work are
+ \\balance@ and \\newtotal@. Under no circumstances should the one be
+ used without the other.
+
+\NOTE 105: \\balance invokes the false output routine which has the effect of
+ balancing the columns if in multi-column mode. The page goal is
+ then updated by \\newtotal@.
+
+\NOTE 106: \\balance@ invokes the false output routine by setting \\ifreal@ to
+ false, and forcing an eject.
+
+\NOTE 107: \\newtotal@ restores the page total.
+
+\NOTE 108: \\multicol@\#1 is called by the \\BEGIN command for multi-column
+ format. It takes as its only parameter the number of columns
+ requested. It provides error checking and ignores the command
+ if already in multi-column mode. If the command is legal, then
+ the current page is balanced, and the \\hsize and \\vsize are
+ adjusted. The insertion registers are modified, the page total
+ is adjusted, and stretch is added to \\baselineskip.
+
+\section{OUTPUT ROUTINES}
+
+\NOTE 109: The output routines are complex. It is recommended that anyone
+ wanting to understand how they work examine the LOG file of a
+ file with \\tracingmacros=1 and \\tracingcommands=2.
+
+ \itempar There are two types of output routines: \\realoutput@
+ produces a \\shipout and \\fakeoutput@ does not.
+
+ \itempar The \\toks registers associated with each insert are now
+ reserved (as were \\dimen, \\skip and \\count). Any tokens in these
+ registers will be destroyed when the \\output routine is active.
+
+\NOTE 110: \\realoutput puts the current page into \\out@. If currently in
+ one-column mode, it goes in directly, otherwise the current page
+ is first split into columns. Box 255 is then set to \\contrb@ with
+ \\old@ appended to it. The glue for insertions, \\hsize, \\vsize,
+ \\leftskip, and \\rightskip are returned to normal for the
+ \\shipout. After the \\shipout, the flags and counters for the
+ logical page macros are updated.
+
+
+\NOTE 111: \\fakeoutput takes the current page, balances it if necessary, and
+ puts it into \\out@. \\out@ is then appended to \\contrb@.
+
+ \itempar If any column must be shorter due to balancing, it ought
+ to be the rightmost. The \\vsplit primitive, however, will usually
+ make the rightmost column longer. To avoid this problem, columns
+ are split a little more than 1/2 or 1/3 down. Experimentation shows
+ that adding 1.16667 baselines to the total height for 2 columns,
+ and adding 2 baselines to the total height for 3 columns affords
+ the greatest probability of an aesthetic break.
+
+\NOTE 112: The ``@'' is no longer a letter.
+
+\bye
diff --git a/obsolete/macros/hptex/hpmanual.tex b/obsolete/macros/hptex/hpmanual.tex
new file mode 100644
index 0000000000..b776529494
--- /dev/null
+++ b/obsolete/macros/hptex/hpmanual.tex
@@ -0,0 +1,1240 @@
+% THIS IS FILENAME MANUAL
+%
+% ***This is the Users' Guide to the HP TeX Macro package ***
+%
+% Copyright 1984 Hewlett-Packard Co.
+%
+\let\indx=\relax
+\def\evenheading{\vbox{\hbox to \hsize{\eightrm Page \folio\hfil\HPTEX}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+\def\oddheading{\vbox{\hbox to \hsize{\eightrm Macros \hfil Page \folio}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+\def\noheading{\hfil}
+\headline{\ifnum\pageno=1\noheading
+ \else\ifodd\pageno\oddheading
+ \else\evenheading\fi\fi}
+\centerfooting{}
+
+\tolerance=1000
+\noindentstyle
+\font\hplogo=hplogo
+\font\csc=amcsc10 \def\headno{\levelno} \def\emspace{\enspace}
+\def\lb{$\langle$} \def\rb{$\rangle$}
+\def\bs{{\tt \char92}\relax}
+\font\bo=amb10
+\font\tenbo=amb10
+\def\+{{\tt \char92}\relax} \def\_{\kern.06em\vbox{\hrule width.5em}}
+\def\[{$\{$} \def\]{$\}$} \def\tbw{{\bf - TO BE WRITTEN -}}
+\def\ent{\textbox{\tt ENTER}} \def\sec{{\bf -SECTION NUMBER HERE-}}
+\def\degrees{$^\circ$}
+\def\gt{$>$}
+\def\spacechar{\hskip1pt\lower3pt\vbox{
+ \hbox to 5pt{\vrule height4pt width.009in
+ \hfill
+ \vrule height4pt width.009in}
+ \hrule depth.009in height0pt}\hskip2pt}
+
+\firstlevelhead{\need.75in\null\bigskip\leftline{\fourteenbf\levelno\enspace%
+ \title}%
+ \medskip\ctswrite{\hskip15pt\tenrm\title}}
+\secondlevelhead{\need.6in\medskip\leftline{\twelvebf\levelno\enspace\title}%
+ \ctswrite{\hskip30pt\tenrm\title}}
+\thirdlevelhead{\need.5in\medskip\leftline{\twelvebf\levelno\enspace\title}%
+ \ctswrite{\hskip45pt\ninerm\title}}
+
+\def\bs{{\tt \char92}\relax}
+\def\+{{\tt \char92}\relax}
+
+\def\tspec{\lb{\sa table spec.}\rb}
+\def\colspec{\lb{\sa column spec.}\rb}
+\def\col{\lb{\sa column list}\rb}
+
+
+\def\cmd#1{\need 0.5in\bigskip {\tentt\bs #1}\lbreak}
+%\def\mcmd#1{\need 0.5in\bigskip {{\tentt\bs #1}}\lbreak}
+%\def\\#1{\lbreak\indent{{\tentt\bs #1}}}
+\def\lb{$\langle$}
+\def\rb{$\rangle$}
+\def\[{$\{$}
+\def\]{$\}$}
+\def\blk{\lb{\sa blockname}\rb}
+\def\hor{\lb{\sa horizontal list}\rb}
+\def\int{\lb{\sa integer}\rb}
+\def\dim{\lb{\sa dimension}\rb}
+\def\ver{\lb{\sa vertical list}\rb}
+\def\vol{\lb{\sa Volume Name}\rb}
+
+\null
+\vskip1in
+\centerline{\eighteenbf THE HP \TeX\ MACROS}\footnote{}{\eightrm\copyright
+ 1984 Hewlett-Packard Co.}
+
+\vskip.5in
+\centerline{HEWLETT-PACKARD CO.}
+\vskip1.47in
+
+\level1{Introduction}
+This set of macros was written as part of \HPTEX, Hewlett-Packard's software
+package designed to facilitate the use of \TeX\ on the HP Series 200 Desktop
+Computers. The \HPTEX\ program can be run on either an SRM based, or a
+stand-alone (LIF) system, and requires 1.25 Mbytes main memory and a minimum
+of 15 Mbytes mass storage. It uses an HP 2688A Laser Printer.
+
+The HP2688A is a page printer which uses scanned electrophotography technology
+to print computer output on single sheet paper. The 300 dots per inch
+resolution, high contrast and speed, plus sophisticated character printing,
+allow a high degree of application flexibility. Unique features include
+90\degrees\ rotation of page print, multiple pages of data output per printed
+sheet, and a graphics option. The print rate is approximately 12 pages per
+minute.
+
+The \HPTEX\ macro package is designed to supplement \TeX\ by providing macros
+for formating documents and for controlling the HP2688A. The user of \HPTEX\
+can use any of the \TeX\ commands as well as the \HPTEX\ macro commands.
+
+While the formating macros include macros for headings and footings,
+paragraph style, lists, lines, boxes, paragraph headings, multiple columns,
+tables, and table of contents, they are not meant to be a complete system.
+They are intended to enable the user to get
+started, and to provide useful macros that can be modified and used as
+examples by the user for the creation
+of a customized macro package.
+
+A second release of \HPTEX\ is planned that will include graphics capability.
+
+\vfil
+On \indx{syntax}
+lines, when curly braces ``\[$\ldots$\]'' are shown, they are required in the
+source file, text between
+angle brackets ``\lb$\ldots$\rb'' identifies a parameter variable,
+and the character ``\spacechar '' represents a required space.
+\vfil\eject
+
+\level1{ Document Formatting Macros}
+The following HP \TeX\ commands control the basic style and formatting
+of a document:
+
+\level2{Page Layout}
+The HP \TeX\ defaults for \indx{page layout} are the same as they are in
+the \TeX\ program. That is,
+all margins are set to approximately
+one inch from the edges. (Plain \TeX\ sets {\tt \+vsize=8.9in} and
+{\tt \+hsize=6.5in}.) \indx{Headings and footings} are printed {\bo outside}
+those margins.
+
+The following macros affect the running head and the footing of
+each page. The heading and footing lists are expanded during the
+output routine so the \TeX\ commands \indx{{\tentt\bs firstmark}},
+\indx{{\tentt\bs topmark}} and
+\indx{{\tentt\bs botmark}} are compatible here.
+
+\need.5in\bigskip\relax{{\tentt \+centerheading}}\[\hor\]\lbreak
+ \relax{{\tentt \+leftheading}}\[\hor\]\lbreak
+ \relax{{\tentt \+rightheading}}\[\hor\]\lbreak
+ \relax{{\tentt \+outsideheading}}\[\hor\]\lbreak
+ \relax{{\tentt \+insideheading}}\[\hor\]\lbreak
+These macros accept text which is to be placed at the top of every page.
+The first three macros place the argument in the center, left, or right
+of the page respectively.
+{\tt\bs outsideheading} and {\tt\bs insideheading},
+if specified, override the left and right headings. On odd pages, the
+inside heading will appear on the left, outside on the right. Even
+pages are the opposite. (This feature is helpful when the output is
+to be used as two-sided copy.)
+
+
+\need.5in\bigskip\relax{{\tentt \+centerfooting}}\[\hor\]\lbreak
+ \relax{{\tentt \+leftfooting}}\[\hor\]\lbreak
+ \relax{{\tentt \+rightfooting}}\[\hor\]\lbreak
+ \relax{{\tentt \+outsidefooting}}\[\hor\]\lbreak
+ \relax{{\tentt \+insidefooting}}\[\hor\]\lbreak
+These are like the above commands, only they are for footings at the bottom
+of each page. For example, if page numbers
+are desired in the left side of the bottom of each page, type:
+{\tt\bs leftfooting\[\indx{\bs folio\]}}
+
+{\tt\bs outsidefooting} and {\tt\bs insidefooting} will
+produce similar results as {\tt\bs outsideheading} and
+{\tt\bs insideheading} (see above). The default in HP \TeX\ is
+{\tt \+centerfooting\[\+folio\]}. This produces page numbers at
+the center of the bottom of each page.
+
+\need.5in\bigskip\relax{{\tentt \+noheading}}\lbreak
+ \relax{{\tentt \+nofooting}}\lbreak
+These macros turn off headings or footings for the current and all
+successive pages until the {\tt\bs resumefooting} or
+{\tt\bs resumeheading} command is used.
+
+\need.5in\bigskip\relax{{\tentt \+suspendheading}}\int\lbreak
+ \relax{{\tentt \+suspendfooting}}\int\lbreak
+These macros suspend headings or footings for the specified number of
+pages or until the use of a {\tt\bs resumeheading} or {\tt\bs resumefooting}.
+
+\need.5in\bigskip\relax{{\tentt \+resumeheading}}\lbreak
+ \relax{{\tentt \+resumefooting}}\lbreak
+These macros undo the effects of the {\tt\bs suspendheading},
+{\tt\bs noheading}, {\tt\bs suspendfooting} and
+{\tt\bs nofooting} macros above.
+
+\break
+\level2{Paging}
+
+\cmd{\indx{newpage}}
+This macro forces a \indx{page eject} if not on a new page.\note{\tenpoint
+If {\tt \+newpage, \+oddpage}, or {\tt \+evenpage}
+occur at the bottom of a full page, they will cause an extra page
+eject. If this happens, insert an {\tt \+eject} just before the
+page command.}
+
+\cmd{\indx{oddpage}}
+This macro causes a page eject, and if the current page is an odd-numbered
+page, leaves an extra blank page so that the following text is
+guaranteed to begin on an odd-numbered page.
+
+\cmd{\indx{evenpage}}
+This macro is similar to oddpage, but the following text will appear on
+an even rather than an odd numbered page.
+
+The {\bo plain} \TeX\ command, {\tt\+pageno} will set the current page number
+to the specified page number. (See ``Some Useful \TeX\ Commands'' in
+Chapter~2 of this manual.)
+
+\level2{Paragraph Style}
+As \TeX\ accepts text from the input file, the text is formatted into
+paragraphs. The following commands can be used to control the shape
+of the paragraphs.
+
+
+\cmd{\indx{inset}=\dim}
+Specifies a general amount of indentation to be used with itemized
+lists, notes, warnings and indent blocks. Default is 0.5
+ inch.
+
+\need.5in\bigskip\relax{{\tentt \+start\[indent\]}}\lbreak
+ \relax{{\tentt \+finish\[indent\]}}\lbreak
+These commands are used to indent the left margin by the inset
+dimension. The right margin is unaffected by this block.
+
+\cmd{\indx{indentspace}=\dim}
+This command assigns the indentation value for the first line of all succeeding
+paragraphs when {\tt\bs indentstyle} is in effect. The default is
+20 points.
+
+\cmd{\indx{indentstyle}}
+This causes the first line of each paragraph to be indented
+(the amount of the indentation is assigned by the {\tt\bs indentspace}
+command). This is the default paragraph style.
+
+\cmd{\indx{noindentstyle}}
+This causes the paragraphs to be formatted with no indentation.
+The nominal \indx{spacing} between paragraphs is 5 points greater without
+indentation than when {\tt\bs indentstyle} is being used.
+\start{note}
+\centerline{-- NOTE --}
+Spacing between paragraphs can be user specified by using the {\tt
+\bs parskip} command.
+\finish{note}
+
+\level2{Itemized and Bulleted Lists}
+The following macros are aids in producing lists. The various list commands
+cause indentation at various levels and use various tokens (numbers, letters,
+dots, dashes, $etc.$) to the left of the
+first line of the listed item to set off the list entry.
+
+\need.5in\bigskip\relax{{\tentt \+numbereditems}}\lbreak
+ \relax{{\tentt \+lettereditems}}\lbreak
+ \relax{{\tentt \+Lettereditems}}\lbreak
+ \relax{{\tentt \+romanitems}}\lbreak
+ \relax{{\tentt \+Romanitems}}\lbreak
+ \relax{{\tentt \+squareditems}}\lbreak
+ \relax{{\tentt \+dotteditems}}\lbreak
+ \relax{{\tentt \+dasheditems}}\lbreak
+These macros initialize the tag allocation macro {\tt\bs itemtag}.
+Default is {\tt\bs numbereditems}.
+
+\need.5in\bigskip\indx{{\tentt \+numberedsubitems}}\lbreak
+ \relax{{\tentt \+letteredsubitems}}\lbreak
+ \relax{{\tentt \+Letteredsubitems}}\lbreak
+ \relax{{\tentt \+romansubitems}}\lbreak
+ \relax{{\tentt \+Romansubitems}}\lbreak
+ \relax{{\tentt \+squaredsubitems}}\lbreak
+ \relax{{\tentt \+dottedsubitems}}\lbreak
+ \relax{{\tentt \+dashedsubitems}}\lbreak
+These macros initialize the tag allocation macro {\tt\bs subitemtag}.
+Default is\lbreak {\tt\bs letteredsubitems}.
+
+\cmd{\indx{itemtag}}
+This macro causes a number, letter, roman numeral, square, dot or dash
+to be printed as the item specifier
+depending upon what initialization has taken place (see above).
+
+\cmd{\indx{subitemtag}}
+Similar to {\tt\bs itemtag} but pertains to subitems.
+
+\cmd{\indx{square}}
+This macro prints a .4em-by-.4em square ( \square\ ). This macro can be used at
+any time a horizontal list is being built (such as the middle of a
+paragraph),
+but it is particularly useful as the argument for the {\tt\bs itemlist} macro.
+(This command produces the same symbol as \TeX 's {\tt \+bull} command.)
+\cmd{\indx{dott}}
+This macro prints a solid round dot ( \dott\ ). (Same as {\bo plain} \TeX 's
+{\tt \$\+bullet\$}.)
+
+\cmd{\indx{emdash}}
+Sets a horizontal rule one ``\indx{em}'' long ( \emdash\ ).
+
+\cmd{\indx{itemlist}\[\hor\]}
+This macro introduces an item of a list by indenting both left and right
+margins by the \dim\ specified in the last {\tt\bs inset} command.
+The \hor\ is inserted within braces to specify the token
+which is to set off the text. If the token has already been
+specified (using {\tt \bs dotteditems, \bs Romanitems}, $etc.$),
+or the default {\tt \bs numbereditems} is acceptable,
+then the command {\tt \bs itemtag} can be inserted here.
+The text of the item follows. (The text
+does {\bo not\/} need to be enclosed within braces.)
+Indentation continues only for the duration
+of one paragraph (if more than one paragraph is desired in an
+item, {\tt\bs itempar} should be used).
+The use of {\tt\bs itemlist} resets the subitem tag.
+
+\cmd{\indx{subitem}\[\hor\]}
+This macro is similar to {\tt\bs itemlist}, but the indentations are twice as
+large as for {\tt\bs itemlist}. This can be used to indicate a
+ second level of list. (See {\tt \bs itemlist} for contents of
+ the \hor .
+
+\need.5in\bigskip\relax{{\tentt \+itempar}}\lbreak
+ \relax{{\tentt \+subitempar}}\lbreak
+These macros are used to start new paragraphs within an item or
+subitem respectively.
+
+\cmd{\indx{enditems}}
+This commands properly ends an itemized list by resetting the item counter
+and appending {\tt\bs bigskip} \indx{glue}.
+
+\cmd{\indx{itm}}
+Similar to {\tt\bs itemlist\[\bs itemtag\]} except that a
+period is appended to the tag if it is a letter, number
+or roman numeral. With this command, the item tag must be
+specified ahead of time using the command
+{\tt \bs dotteditems, \bs lettereditems}, $etc.$, unless the
+default ({\tt \bs numbereditems}) is acceptable. Again,
+{\tt\bs itm} will {\bo not} accept any \hor\
+as an item tag specifier.
+
+\cmd{\indx{sitm}}
+Similar to {\tt\bs itm} but pertains to subitems. Like
+{\tt\bs itm}, {\tt\bs sitm} will {\bo not}
+accept any \hor\ as a subitem tag specifier. The subitem tag must
+be specified beforehand, unless the default
+({\tt \bs letteredsubitems}) is acceptable.
+%\need3in
+\start{note}
+\centerline{-- NOTE --}
+If you enter a local \indx{block structure} prior to setting an itemized list,
+and want to exit that structure immediately after your last item, then
+you must first be sure that you are in {\bo \indx{vertical mode}}.
+Otherwise, the last item may not be indented properly.
+
+Three ways to accomplish this are by using {\tt\bs enditems,
+\bs vskip}, or {\tt\bs par}. \finish{note}
+
+\level2{Line Specifier Macros}
+The content of individual lines can be controlled, and they can be
+centered or justified using the following
+commands.
+
+\cmd{\indx{centerline}\[\hor\]}
+This takes the text within the brackets and centers it between the
+margins. The line does not count as a paragraph, so the normal
+interparagraph space is not inserted above the line. If this command
+follows a paragraph, it is
+usually appropriate to precede it with a {\tt\bs vskip}. This command
+has been redefined from {\bo plain} \TeX\ in that it uses the
+HP macro {\tt \+lline} (described below), so {\tt \+leftskip}
+and {\tt \+rightskip} values are taken into account.
+
+\cmd{\indx{lline}\[\hor\]}
+This is very similar to the plain \TeX\ {\tt\+line} command
+in that it creates a horizontal box that is the width of the current
+{\tt\+hsize}, except that {\tt\+lline} takes into account
+the values of {\tt\+leftskip} and {\tt\+rightskip}
+if they have been specified. In other words {\tt\+lline}
+stays within the current margins. The \hor \ is the contents of
+the horizontal box.
+
+
+\cmd{\indx{leftline}\[\hor\]}
+This left justifies the contents of the \hor . The comments about vertical
+spacing above apply here, also. This command has also been redefined
+to use {\tt \+lline} (see {\tt \+centerline}, above).
+
+\cmd{\indx{rightline}\[\hor\]}
+This right justifies the contents of the \hor . The comments about vertical
+spacing above apply here, also. This command has also been redefined
+to use {\tt \+lline} (see {\tt \+centerline}, above).
+
+\cmd{\indx{raggedright}}
+The {\tt\bs raggedright} macro causes paragraphs to be formatted
+in such a way that they are not necessarily justified
+on the right margin. This command has also been redefined from
+{\bo plain} \TeX\ in that {\tt \+rightskip} values are preserved.
+
+\cmd{\indx{justify}}
+This macro has the opposite effect of the {\tt\bs raggedright} macro
+and causes the text to be right justified
+({\tt\bs justify} is the default in HP \TeX ).
+
+\level2{Boxes}
+
+\cmd{\indx{boxline}=\dim}
+This macro assigns the width of the lines used for {\indx{boxes}. The default
+boxline dimension is 0.01332 inch.
+
+\cmd{\indx{boxspace}=\dim}
+This macro assigns the width of the space between a boxed item and
+the line of the box. The default width in HP \TeX\ is 5 points.\super{4}
+
+\cmd{\indx{boxit}\[\hor\]}
+This macro encloses the argument in a box. If encountered
+while making a line of text, the box's bottom line will
+be along the baseline of the text. The \hor\ may contain multiple
+lines separated by {\tt\bs cr} to be centered within the box. Note
+that each line is then treated as a {\bo group}, so font changes,
+$etc.$~on one line will not affect the next line.
+ When using this command, the \hor\ will be
+raised somewhat above the line, \boxit{like this.}
+If you desire that the text not be raised above the baseline,
+use the {\tt\bs textbox} command (described below).
+
+\cmd{\indx{textbox}\[\hor\]}
+This command causes a box to be placed around the \hor ,
+{\bo without} altering the text, \textbox{like this.} A
+textbox cannot be broken from one line of text to another.
+
+\cmd{\indx{centerbox}\[\hor\]}
+This macro centers a box horizontally on the page
+and inserts space above and below.
+Multiple lines can be specified using {\tt\bs cr} (see
+{\tt \bs boxit} description). A {\tt \+centerbox} within a
+ {\tt \+centerbox} will not work, but {\tt \+boxit} inside
+ {\tt \+centerbox} will.
+ %\need1.25in
+\level2{Notes and Warnings}
+Two other text structures available with the HP \TeX\ macro package are notes
+and warnings.
+
+\need.5in\bigskip\relax{{\tentt \+start\[note\]}}\lbreak
+ \relax{{\tentt \+finish\[note\]}}\lbreak
+A note is inset twice the {\tt\bs inset} dimension on both margins and
+set apart from the rest of the text by extra vertical space.
+If a note would otherwise start less than half an inch from the
+bottom of a page, a page eject is performed prior to the note.
+{\tt\bs finish\[note\]} signifies the end of the note.
+
+\need.5in\bigskip\relax{{\tentt \+start\[warning\]}}\lbreak
+ \relax{{\tentt \+finish\[warning\]}}\lbreak
+A warning is similar to a note, except that is also set apart by horizontal
+rules above and below the text. {\tt\bs finish\[warning\]}
+signifies the end of the warning text.
+
+\level2{Verbatim Mode}
+Verbatim mode will cause text to be printed ``as is,''
+without any justification. Special characters in this mode
+are the backslash (\bs ) and the curly brackets (\[), (\]).
+Most other characters can be used and will be printed \indx{verbatim}.
+
+Verbatim mode is intended for use with simple text which does
+{\bo not} contain a large number of control sequences.
+The reason for this restriction is that there are many
+characters (such as a space, a \indx{tilde}, $etc.$)
+which take on different meanings in verbatim mode. Some of these may be
+imbedded within a control sequence and can cause
+problems when they are expanded.
+
+You will usually want to select a ``non-proportionally spaced''
+font (like ``tt'') for use in verbatim mode. The
+reason for this is that ``proportional fonts'' (like ``rm'')
+will cause the printed output to be aligned differently
+than what appears on the CRT during source file typing. Other
+non-proportional fonts available with the HP 2688A Laser Printer
+ are Courier, Gothic, Pica, Script, Prestige and Line Printer.
+
+\start{note}
+\centerline{-- NOTE --}
+Although verbatim mode using \indx{non-proportional fonts} will
+{\bo usually} produce output
+that exactly matches what you see on the CRT, there is
+at least one exception to this. Long sequences of characters
+ may be spaced
+slightly differently than a string
+of blank spaces of identical length . This is
+a result of the rounding anomalies that occur when \TeX 's
+{\bo ideal} character sizes are converted to the printer's
+{\bo actual} sizes.
+\finish{note}
+\cmd{\indx{start\[verbatim\]}}
+This macro causes the following text to be printed ``verbatim''
+without any justification.
+
+\cmd{\indx{finish\[verbatim\]}}
+This macro ends the verbatim mode described above.
+
+%\need1.25in
+\level2{Paragraph Levels}
+These macros can be used to create \indx{paragraph headings}
+of four different levels.
+The \hor, and page number can be written
+to the file \lb{\sa jobname}\rb\lower.3em\hbox{*}
+to be used for a table of contents (the asterisk ``\lower.3em\hbox{*}''
+signifies the {\tt contents} file).
+
+The command {\tt\+ctswrite\hor} will automatically open a file and write the
+\hor\ and the page number to the file. The {\tt\+contents} command
+then uses the \lb{\sa jobname}\rb\lower.3em\hbox{*} file to
+create the \indx{table of contents} (refer to the {\tt\+contents} command
+description in this section).
+
+\cmd{\indx{level}\lb\sa integer between 1 and 4\rb\[\hor\]}
+This is the command used to print a paragraph heading. Whatever
+format is specified using the commands listed below ({\tt \+firstlevelhead,
+\+secondlevelhead}, $etc.$) will be used. For example, the command used to set
+the paragraph heading of this section looked like this:
+
+\centerline{\tt \+level3\[Paragraph Levels\]}
+
+The {\tt \+level} command will automatically update the {\tt\bs levelno}
+to print the paragraph head.
+
+\need.5in\bigskip\relax{{\tentt \+firstlevelhead}}\[\hor\]\lbreak
+\relax{{\tentt \+secondlevelhead}}\[\hor\]\lbreak
+\relax{{\tentt \+thirdlevelhead}}\[\hor\]\lbreak
+\relax{{\tentt \+fourthlevelhead}}\[\hor\]\lbreak
+These commands specify the tokens that are inserted to format
+each of the various head levels. They should be used when the
+default conditions of HP \TeX , as described below,
+ are not satisfactory. A control sequence {\tt \bs title}
+is defined to be the \hor\ from the corresponding {\tt \bs level}
+command. For example, the command:
+\start{verbatim}\tt{\hfuzz=31pt
+ \+secondlevelhead\[\+need.75in\+bigskip\+leftline\[\+fourteenbf%
+ \+levelno\+enspace\+title\]\+medskip%
+ \+ctswrite\[\+hskip15pt\+tenrm\+title\]\]}
+ \finish{verbatim}
+\vskip3pt\noindent
+ would cause all second level paragraph heads to be printed on
+a new page if less than .75 inch remains on the current page.
+The title will be left justified in fourteen point boldface
+type. The level number is followed by an ``enspace.''
+ ``Bigskip'' \indx{glue} is inserted before the title with a ``medskip''
+after. The \indx{{\tentt\+ctswrite}} command specifies how the
+level heading will be written in the table of contents, as
+described below.
+
+Whenever you define a {\tt \bs firstlevelhead, \bs secondlevelhead}, $etc.$,
+command to specify the formatting of paragraph headings, you must also
+specify how it will be written in the table of contents (if
+you plan to create one). The command for doing this is
+{\tt \bs ctswrite}. For example, the fourth level head was
+redefined from the HP \TeX\ defaults in this document, and the
+contents writing command was used as follows:\lbreak
+\centerline{\tt \bs ctswrite\[\bs hskip45pt\bs ninerm\bs title\]}
+This causes all fourth level headings in the table of contents
+to be inset 45~points and be written in nine--point roman type.
+
+The default HP \TeX\ paragraph level headings
+are formatted as follows: {\tt \bs level1} begins on a new page,
+prints the title in 14 point bold face type and down 1.5 inches
+from the top of the page. {\tt \bs level2}
+ requires that at least .75 inch remain on the
+page. If so, the title is printed with some vertical space above it,
+otherwise, it is set on the top of the next page. In any case, it is printed
+in 12 point boldface type. {\tt \bs level3} and
+{\tt \bs level4} are similar, but
+require less space to remain on the page and print the title in 10
+point bold face and 10 point roman respectively.
+
+The ``levelhead'' macros are {\bo local} to
+their \indx{block structure}. This provides a simple means
+to return to the HP \TeX\ default levelhead
+style. All you would need to do is enclose the command
+and any text you want affected within braces. After the
+closing brace, \TeX\ will return to the default format. Note
+that this should only be attempted for {\bo shorter} blocks.
+Creating large blocks of several pages in length can cause
+\TeX\ to run out of memory.
+
+
+\start{note}\centerline{-- NOTE --}
+If you need to change the font style or size within a level
+heading, you must specify the {\bo entire} font name,
+(for example: {\tt \bs tentt}$\ldots$ not {\tt \bs tt}).
+\finish{note}
+\cmd{\indx{levelno}}
+This macro can be used whenever the author desires the number
+of the heading to appear in the document. The number of the
+various levels of headings appear, separated by periods.
+For example, typing {\tt Section \bs levelno} might result
+in: Section 1.2.7.1 if this was the first fourth-level heading
+of the seventh third-level section of the second$\ldots$ $etc.$
+Levels lower than the last modified level do not appear in
+{\tt\bs levelno}.
+
+\def\delim{.}
+\cmd{\indx{setlevelno}\[\int\delim\int$\ldots$\int\]}
+This macro can be used for presetting the one through
+four heading numbers. If you use
+this command before a {\tt\+level} command, then the
+counter will increment to the next number when the
+{\tt\+level} command is encountered. Therefore, you
+should preset to one number below the desired level.
+ You cannot preset the level 2 counter without
+ specifying the level 1, or the level 3 without level 1 and 2
+ and so on. (For example, you cannot specify {\tt\+setlevelno\[1.~.~.4\]},
+ you must specify {\tt \[1.\int .\int .4\]}.)
+
+\cmd{\indx{contents}}
+This macro forces a page eject and produces a \indx{table of contents}
+on the following pages as dictated by the previous heading macros.
+No vertical \indx{glue} is inserted, so you may want to use a {\tt \bs vfil}
+command immediately before {\tt \bs contents}.
+
+\need.5in\bigskip\relax{{\tentt \+topofcontents}}\[\ver\]\lbreak
+ \relax{{\tentt \+botofcontents}}\[\ver\]\lbreak
+These macros specify a list to be placed above and below the table of
+contents. The \ver\ may include logos, rules, $etc.$ The table of contents
+is quite rigid, so a {\tt\bs vfill} is appropriate in at least one \ver.
+Defaults in HP \TeX\ will format the table of contents as they appear in the
+beginning of this manual (with the exception of the headings).
+\start{note}\need1in
+\centerline{-- NOTE --}
+{\tt\+topofcontents} and {\tt\+botofcontents} must
+{\bo both} be specified {\bo before} the
+{\tt\+contents} command is used. (That is, you cannot
+specify {\tt\+botofcontents} after {\tt\+contents},
+even though this seems logical.)
+\finish{note}
+\level2{Multiple Columns}
+
+The following macros control the number of columns on the page.
+Multiple column and single column text can be mixed on a page by
+using the following commands.
+
+\cmd{\indx{columnspace}=\dim}
+This command specifies the amount of space between columns on a page.
+This dimension should be assigned before entering multicolumn mode and
+should remain unchanged for the duration thereof. The default
+column space in HP \TeX\ is 0.5 inch.
+
+\need.5in\bigskip\relax{{\tentt \+start\[twocolumns\]}}\lbreak
+ \relax{{\tentt \+start\[threecolumns\]}}\lbreak
+ \relax{{\tentt \+finish\[twocolumns\]}}\lbreak
+ \relax{{\tentt \+finish\[threecolumns\]}}\lbreak
+These four commands cause the text to be formatted into multiple columns.
+If a {\tt\bs balance},
+ {\tt\bs newpage}, {\tt\bs evenpage} or {\tt\bs oddpage} macro is
+encountered while in multicolumn mode, the columns are balanced
+on the page prior to the page eject. Exit from multicolumn mode
+causes the columns to be balanced as well. Unbalanced columns may
+be obtained by using {\tt\bs vfill} {\tt\bs eject} while in multicolumn mode.
+Balancing forces the top lines of each column to be lined up. The
+bottom lines are lined up as well unless {\tt\bs raggedbottom} has been
+specified. Discardable items (such as glue, penalties, $etc.$)
+immediately following these commands will be ignored. (To prevent
+this, you may use {\tt\+null} immediately
+after {\tt\+finish\[$n$columns\]}.)
+
+\cmd{\indx{balance}}
+This command causes the columns to become balanced. Discardable
+items (such as \indx{glue}, penalties, $etc.$) immediately following these
+commands will be ignored. (To prevent
+this, you may use {\tt\+null} immediately
+after {\tt\+finish\[$n$columns\]}.)
+
+
+\start{note}
+\centerline{-- NOTE --}
+When using multiple columns, you may find it helpful to use the
+plain \TeX\ commands {\tt\+tolerance} and
+{\tt\+hbadness} (to increase the stretch and
+shrinkability of interword \indx{glue} and decrease complaints
+regarding ``underfull hboxes''). See {\tenit The
+\TeX book} for more information.
+\finish{note}
+
+\level2{Tables}
+The following macros are useful for setting \indx{tables}. These
+macros are different from the plain \TeX\ {\tt\bs halign} and
+{\tt\bs valign} commands in that
+they format one row at a time. The table can be justified as a whole
+either left, right or centered. As long as the number of columns
+in each entry remains constant, the entire table appears justified.
+(Interesting figures, such as pyramids, hopscotch boards, $etc.$ can
+be produced by changing the format and the number of
+columns in each entry.)
+Each column of the table has its own user specified width.
+Between each column
+is a vertical line (which can be easily made invisible).
+This vertical rule takes no space from any column so the rule
+width may be varied without altering the column dimensions.
+An entry may also be designed to span two or three columns.
+Horizontal bars are
+treated exactly the same as data entries. The macro \indx{{\tentt\bs tbar}}
+can be used to produce such a bar.
+
+\cmd{\indx{tableline}=\dim}
+This parameter specifies the dimension of bars and rules in
+all subsequent entries. This parameter should remain unchanged
+throughout the entire table. Default value is 0.01332 inch.\super{7}
+\start{note}
+\centerline{-- NOTE --}
+There may be some occasion when printing a table that you
+get the error message,\lbreak
+~~~~``{\tt Printer error: \lbreak
+~~~~**Could not process all the data, data lost.}''\lbreak
+The printer uses a variety of different length line segments to
+``build'' a line. If the {\tt tableline} specification you have
+chosen requires too many individual segments to make up the exact
+specification, it may cause this error.
+There are a few remedies available, as follows:
+
+---If you are using the default magnification (1.0), then
+try using the default {\tt tableline} dimension (just leave out
+the {\tt\+tableline} command.
+
+---If you are using a file magnification value other than 1.0, then alter
+your {\tt\+tableline} specification so that its value, when converted
+to dots (multiply length in inches $\times\ 300$), is a power of 2 ($i.e.$ 1, 2,
+8, 16, 32 or a multiple of any of these except 1).
+\finish{note}
+
+\cmd{\indx{tablespace}=\dim}
+This parameter specifies the minimum amount of space to be placed
+between the vertical rules and data entries in the table. Default in
+HP \TeX\ is 5 points.
+
+\cmd{\indx{tableformat}\[\tspec|\colspec\dim|$\ldots$|\colspec\dim\]}
+This command specifies the table format. Note that a \indx{vertical bar}
+(\indx{{\tentt |}}) is required as a separator
+between specifications, but not at the beginning or end of the
+list (different than {\tt \+tablerow} or {\tt \+tablebar}).
+
+\tspec\ can be any of {\tt\bs leftline}, {\tt\bs rightline},
+ or {\tt\bs centerline}. \colspec\ can be any of
+{\tt\bs leftline}, {\tt\bs rightline}, {\tt\bs centerline} or
+{\tt\bs paragraph}. Other options are
+allowed if you make them yourself; for example, if you type:
+\par\vskip3pt
+\centerline{\tt\bs def\bs mything\#1\[\bs line\[\bs hskip 1in \#1\bs hss\]\]}
+\par\vskip3pt
+\noindent then {\tt\bs mything} would be a valid \tspec\ option that
+would print the table 1 inch from the left margin.
+The \colspec\ is always a single token ({\tt\bs leftline}, {\tt\bs rightline},
+{\tt\bs centerline} or {\tt\bs paragraph}), and is
+followed by a dimension. The token specifies the standard
+justification of the column ({\tt\bs paragraph} must be used if the
+column is to contain paragraphs), and the dimension specifies the
+absolute width of the column. Again, if you are not satisfied with the
+selection you can make your own---the rules are that the macro consume
+one token (containing the text) and produce a box of width {\tt\bs hsize}.
+%\need2in
+\start{note}
+\centerline{-- NOTE --}
+If the {\tt\bs paragraph} column specification is used, {\tt \+parskip}
+must be 0 points (this is the default). Otherwise, the paragraph entry
+will be raised or lowered by the current {\tt \+parskip} amount and the
+table will be out of alignment. If you are using {\tt\+noindentstyle}
+and have not reset {\tt\+parskip}, then inserting an {\tt\+indentstyle}
+command just prior to the table will return to the proper (0 points) parskip.
+\finish{note}
+
+\need.5in\bigskip
+\relax{{\tentt \+tablerow}}\[{\tt |}\col{\tt |}\col$\ldots${\tt |}
+ \col{\tt |}\]\lbreak
+\relax{{\tentt \+tablebar}}\[{\tt |}\col{\tt |}\col$\ldots${\tt |}
+ \col{\tt |}\]\lbreak
+These commands are used to build tables. {\tt\bs tablerow} should
+be used if the \col\ contains text, while {\tt\bs tablebar} should
+be used for bars or other non-text entries. Horizontal bars are
+obtained by using either {\tt\bs vrule height} \dim , {\tt width} \dim\
+ or {\tt\bs tbar}
+as a \col\ ({\tt\bs tbar} uses {\tt\bs tableline} as the rule height).
+The following syntax holds true for both macros:\dotteditems
+
+\itm A \indx{vertical bar} (\indx{{\tentt |}}) or a \indx{tilde} (\~{}) must be
+beginning and end of each column, including the first and last entry
+(differs from {\tt \+tableformat} syntax).
+\itm The \indx{vertical bar}s ({\tt |}) may be replaced by tildes (\~{})
+if a visible vertical bar in that position is not desired.
+
+\itm If the first thing in a \col\ happens to be the control sequence
+\indx{{\tentt \bs span}}\[\int\]{\tt \bs tbar}, then the number
+of columns specified
+as \int\ are spanned by the entry (in this case a horizontal bar). The
+natural justification for the spanned entry will be that of the
+leftmost column spanned. (Note that {\tt span}\[\int\] is
+{\bo not} followed by a blank space as this can cause difficulties.)
+%\need1.25in
+\start{note}
+\centerline{-- NOTE --}
+While building tables, if a {\tt\+tablebar} or {\tt\+tablerow}
+runs more than one line of text (on the CRT), it is good practice
+to use the percent
+sign (\indx{{\tentt \%}}) at the end of each line. This will tell \TeX\ to
+ignore anything else on that line and prevent
+possible problems with extra spaces being
+misinterpreted by \TeX .
+\finish{note}
+\level2{Fonts}
+Only a few fonts are preloaded in HP \TeX. These macros allow you
+to access a variety of font families, styles, and sizes.
+
+\cmd{\indx{fontdef}\bs\lb{\sa command}\rb=\[\lb{\sa library}\rb,%
+ \lb{\sa font name}\rb\]}
+This command equates a command of your choice with a
+font (as used in the library). You can use \lb{\sa library}\rb
+(optional) to
+specify other than the default font library.
+This command differs from \TeX's {\tt\+font} command in that the
+font won't actually be loaded until
+the first request (if any).
+
+\need.5in\bigskip\relax{{\tentt \+fivepoint}}\lbreak
+ \relax{{\tentt \+sixpoint}}\lbreak
+ \relax{{\tentt \+sevenpoint}}\lbreak
+ \relax{{\tentt \+eightpoint}}\lbreak
+ \relax{{\tentt \+ninepoint}}\lbreak
+ \relax{{\tentt \+tenpoint}}\lbreak
+ \relax{{\tentt \+tenpoint}}\lbreak
+ \relax{{\tentt \+fourteenpoint}}\lbreak
+ \relax{{\tentt \+eighteenpoint}}\lbreak
+ \relax{{\tentt \+twentyfourpoint}}\lbreak
+These commands select the font point size from five to twentyfour. (In
+{\bo Math Mode}, these commands only apply to the default
+font within a font family. If you are using a current family
+other than {\tt\+fam0}, you must make the appropriate
+font assignments
+(see Appendix A, ``Changing Fonts in HP \TeX '').
+
+%\mcmd{{cm}}\lbreak
+ %tr\lbreak
+ %gv}
+%These commands select Computer Modern, times roman
+%and geneva font families respectively.
+\need.5in\bigskip\relax{{\tentt \+rm}}\lbreak
+ \relax{{\tentt \+it}}\lbreak
+ \relax{{\tentt \+bf}}\lbreak
+ \relax{{\tentt \+sl}}\lbreak
+ \relax{{\tentt \+sa}}\lbreak
+ \relax{{\tentt \+tt}}\lbreak
+These commands select \indx{roman} style, \indx{italic}, \indx{bold face},
+\indx{slanted},
+\indx{sans serif}, and \indx{typewriter} style.
+
+If the selected font is undefined, the font style is changed
+to roman. If that new font is still undefined, the size is
+changed to ten points. Computer Modern ten point
+roman will always be defined in HP \TeX.
+
+\level2{Miscellaneous Macros}
+
+%\cmd{\indx{indx\[\hor\]}
+%This command sets the \hor. The \hor\ along with the current page
+%number are then written to the file {\job.inx} for use as an index.
+%
+\cmd{\indx{note}\[\hor\]}
+This macro puts a footnote at the bottom of the current page
+and inserts a superscript footnote number at the location
+of the command and the footnote.
+Footnote numbers are allocated starting with~1 and can be
+reset by the use of {\tt\bs resetnotes}. The \hor\ is the footnote
+text.
+
+
+\cmd{\indx{need}\dim}
+The result of this macro is that if the page breaking algorithm
+of \TeX\ determines that the current position would optimally
+fall within \dim\ of the bottom of the page, the page is broken
+leaving some empty space at the bottom.
+\need1in
+\start{note}
+\centerline{-- NOTE --}
+Since the {\tt \bs need} command uses a negative penalty
+to {\bo encourage} (not {\bo force}) \TeX\ to break
+the page, it will
+not always have the effect you might anticipate. This is especially
+true if the command is encountered near
+the top of the current page and the remaining text will not
+adequately fill the current page.
+\finish{note}
+\cmd{\indx{super}\[\hor\]}
+The argument is printed as a superscript.
+
+\cmd{\indx{sub}\[\hor\]}
+The argument is printed as a subscript.
+
+\cmd{\indx{lbreak}}
+This macro forces a line break within a paragraph. It inserts ``hfil''
+\indx{glue} before the break, so the line will {\bo not} be right
+justified. If you want right justification, use plain \TeX 's
+{\tt \bs break} command.
+
+\cmd{\indx{uline}\[\hor\]}
+This macro causes the argument to be underlined.
+
+\cmd{\indx{mon}}
+This command prints the current month name. For
+example, if the current month were August, {\tt\bs mon} would
+print the letters ``August'' in the current font.
+
+\cmd{\indx{date}}
+This command prints the current date in the format Month Date, Year.
+For example, if today's date were 12 December 1984, {\tt\bs date}
+would print the characters ``December 12, 1984'' in the current font.
+
+\cmd{\indx{hour}}
+This command prints the current time of day (for example -- 4:07 PM)
+
+\level2{Block Structure}
+Certain local document styles are considered to belong to a ``block.''
+(\indx{Block structure}, as used here, simply refers to a portion of a
+file that has some common formatting instructions applied
+to it.)\note{\tenpoint The concept of {\tenbo \indx{grouping}}, explained
+in this manual and in {\it The \TeX book}, is basically the
+same as the ``\indx{block structure}'' referred to here.}
+
+The current block is defined to be the most recently opened
+block. Pending blocks are blocks that have been opened but
+not closed. The HP \TeX\ macros {\tt\+start} and {\tt\+finish}
+are used to open and close blocks.
+
+Valid \blk s pre-loaded in HP \TeX\ include {\tt indent, note,
+ warning, ver\-ba\-tim, twocol\-umns} and {\tt threecolumns},
+ all of which have been described in this chapter.
+ User defined blocks may be implemented by defining a control
+ sequence, {\tt\bs BEGIN\blk} and, optionally, another
+ control sequence, {\tt\bs END\blk}.
+
+\cmd{\indx{start}\[\blk\]}
+This command determines if a control sequence {\tt\+BEGIN\blk} has
+been defined. If one exists, a new block is opened and the control
+sequence is invoked. Otherwise, an \indx{error message} is issued and the
+command is ignored.
+
+\cmd{\indx{finish}\[\blk\]}
+This command is used to close the current block and invoke the
+control sequence {\tt\+END\blk} if one has been defined. If \blk\ matches
+the current block name, the current block is closed. If not, an
+appropriate error message is issued and corresponding corrective
+action is taken. If \blk\ is not valid or there are no pending
+blocks, the command is ignored. If \blk\ is valid but does not
+match the current block
+name, {\tt\bs done} commands are inserted until either \blk\ matches
+the current block name or until all pending blocks are closed.
+
+\cmd{\indx{done}}
+This command closes the current block without
+any error checking and invokes the control sequence {\tt\+END\blk} if
+one has been defined. A \TeX\ error message will be issued if
+there are no pending blocks.
+
+Following is an sample usage of the {\tt\+BEGIN} and {\tt\+END}
+commands in creating user-defined blocks:
+
+\def\BEGINexample{\bigskip\centerline{- EXAMPLE -}
+ \medskip\leftskip.75in\rightskip.75in}
+\def\ENDexample{\medskip}
+\start{example}
+This example was created by defining the following block:\medskip
+\centerline{\tt \+def\+BEGINexample\[\+bigskip\+centerline\[- EXAMPLE -\]}
+\centerline{\tt ~~~~~~\+medskip\+leftskip.75in\+rightskip.75in\]~~~~~~}
+\medskip
+The block was opened using the command: {\tt\+start\[example\]}. The
+optional control sequence {\tt\+END\blk} was also used, as follows:\medskip
+\centerline{\tt \+def\+ENDexample\[\+medskip\]}\medskip
+The {\tt\+medskip} vertical glue will be inserted after the block is
+closed using the command: {\tt\+finish\[example\]}.
+\finish{example}
+
+
+\level1{\indx{HP 2688A} Control Macros}
+
+These macros are for controlling certain features of the 2688A Laser
+Printer:
+
+\level2{Page Copy Control}
+
+\cmd{\indx{copies}\int}
+This macro assigns the number of copies per page starting with the current
+page. The copies are uncollated; in other words, if {\tt\bs copies5}
+occurred on page 3, the output will have five copies of page 3,
+then five copies of page 4, $etc.$ The control of the number of copies
+is accomplished through one of \TeX's counters. Default is counter
+number~1. Possible integers and their effect are shown below:
+\itm 1 to 32,767 will produce the specified number of copies.
+\itm Greater than 32,767 will produce 32,767 copies.
+\itm 0 will produce 1 copy.
+\itm Less than 0 (negative number) no copies (can be used
+to suppress certain sections of a document, $etc.$)
+\enditems
+The counter
+can be changed using the following macro.
+
+\cmd{\indx{selectcopycounter}\lb {\sa integer from 0 to 9}\rb}
+This is used for changing which counter is used for controlling
+the number of \indx{copies} per page (default is 1). This command generally
+should not be used except by people who are writing their own
+macros.
+
+\need.5in\bigskip\relax{{\tentt \+copieson}}\lbreak
+ \relax{{\tentt \+copiesoff}}\lbreak
+If the multiple copies feature is being used in a document, these
+macros can be used to alternate between one copy per page and the
+number of copies assigned by the {\tt\bs copies} macro. The difference between
+{\tt\bs copiesoff} and {\tt\bs copies1}~is that when the former is followed
+with {\tt\bs copieson}, the original number of copies is restored, whereas
+when the latter is followed with {\tt\bs copieson}, there is,
+of course, no effect.
+
+\level2{Logical Page Control}
+
+The Print Server features a concept called ``\indx{logical paging}''
+which is controlled using the following set of macros. A
+logical page is a rectangular addressing space on the sheet of paper
+(referred to as the ``\indx{physical page}''). Logical pages have an
+orientation (\indx{portrait}, \indx{landscape}, \indx{reverse portrait}
+or \indx{reverse lanscape}) and a position on the physical page.
+Through the operator
+interface of PS2688A, you may define a list of logical pages that
+may be written to on any sheet of paper.
+These logical page specifications may also be stored in a PS2688A
+input file to avoid typing in the specifications for each job.
+Using these macros, you
+can address the logical pages with either of two methods:
+either by explicitly specifying a logical page for each page of
+\TeX\ output, or by specifying an ordered list of logical pages
+and letting the system cycle through the list.
+
+\cmd{\indx{lpdef}\[\lb\sa logical page definition\rb\]}
+This command defines a logical page size and orientation. The
+\lb{\sa logical page definition}\rb
+consists of the logical page
+number, followed by the {\bo left},
+then the {\bo top} dimensions (distance from the
+ edges of the physical page), and the
+\indx{logical page orientation} (portrait, landscape, rev--portrait or
+rev--landscape). Orientation may be abbreviated {\tt P,L,RP,}and
+{\tt RL,} respectively, and either upper or lower case
+characters will work. The edges of the page that
+would normally be the top and left as viewed from that
+logical page's orientation are
+always considered top and left in this context.
+ An example usage follows:\medskip
+\centerline{\tt \bs lpdef \[1, 1.5in, 3in, L\]}\medskip
+This would cause logical page number 1~to be printed
+in {\bo landscape} orientation, with the left edge of the
+print (as viewed from landscape orientation) beginning 1.5~inches
+from the edge of the physical page. The ``top'' (left-hand
+edge along the paper path) will begin 3~inches from the
+edge.
+
+The default values for logical pages in HP \TeX\ are: LEFT=1in,
+TOP=1in.
+
+
+
+
+\start{note}
+\centerline{-- NOTE --}
+The dimension specified as distance from the top edge does not
+take into account the space needed for headings. If running headings
+are to be used, the logical page definition should allow extra
+room for them when specifying ``top'' dimension. (Footings
+are also printed ``in the margin,'' so when specifying
+{\tt vsize} be sure to leave room for them.)
+\finish{note}
+
+\cmd{\indx{lplist}\[\lb\sa logical page list\rb\]}
+This command specifies the logical page list to be used whenever
+logical pages are being used implicitly. Only one such
+specification is allowed within a document, if more than one exist,
+all but the last are ignored. This command initializes
+implied logical paging.
+
+ The \lb {\sa logical page list}\rb ~is a list
+of integer numbers from 1~to 32~which have been defined
+using the {\tt \bs lpdef} command. Positive number entries will
+cause a physical page eject prior to initiating the logical
+page entry. Negative numbers require no such physical
+page eject. Each entry number should be separated from
+the next by a comma.
+
+%\need3in
+\medskip The remaining commands control explicit logical paging. If any of
+these commands occur within a page, a page eject is issued and the
+next page to be printed will be dependant upon the particular
+command. If any of these commands occur on the top of a page, the
+prescribed action will be delayed until the next page break
+(be it natural or forced by a {\tt\bs newpage}, {\tt\bs eject}, $etc.$).
+For example, suppose the first page of every chapter in a
+document uses logical page 5, then {\tt\bs ppageto5} {\tt\bs lpresume}
+would eject the current page (assuming it is not empty), issue
+a physical page eject and begin printing on page 5. Later,
+when the page is full, \TeX\ breaks the page and resumes printing
+according to the logical page list.
+
+\cmd{\indx{lpageto}\lb {\sa integer between 1 and 32}\rb}
+This command causes the next page to be printed on the specified
+logical page. No physical page eject is implied.
+
+\cmd{\indx{ppageto}\lb {\sa integer between 1 and 32}\rb }
+This command is similar to {\tt\bs lpageto} but implies a physical
+page eject prior to printing on the specified logical page.
+
+\cmd{\indx{lpresume}}
+This command is used after a {\tt\+ppageto} or {\tt\+lpageto}
+command to resume
+printing on the current page of the logical page list.
+
+\cmd{\indx{lpreset}}
+This command resets the logical page list and prints on the first
+page in the list.
+
+\cmd{\indx{lpexit}}
+This command exits the current loop in the logical page list and
+prints on the next page in the list.
+
+\cmd{\indx{selectlpcounter}\int}
+This is used for changing which counter is used for specifying the
+logical page (default is 2). This macro generally should not be used
+except by people who are writing their own macros.
+\vfill\eject
+
+% THIS BEGINS THE SAMPLE PAGE***
+
+\def\oddheading{\vbox{\hbox to \hsize{\eightrm A Sample Document
+ \hfil Page \folio}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+\centerfooting{\eightbf THIS DOCUMENT WAS CREATED USING \HPTEX}
+\firstlevelhead{\leftline{\fourteenbf\levelno\enspace%
+ \title}%
+ \medskip\ctswrite{\hskip15pt\tenrm\title}}
+\numbereditems
+\level1{Formatting a \indx{Sample Document}}
+In this section we will format a simple document
+utilizing many of the HP \TeX\ macros.
+For this example, we will accept all the HP \TeX\ default values for the
+various commands.
+\vskip.5in
+\centerline{\twelvebf A Sample Document}
+
+Isn't that nice? If we wanted to, we could have easily set that off to the
+right like this:\lbreak
+\rightline{\twelvebf A Sample Document}
+
+Now, how about \textbox{a textbox?} Those are
+always fun. Or, if we really want to set something off, we could
+ask \TeX\ to:
+\centerbox{put it inside\cr
+ a nice little\cr
+ centered box,}
+or, maybe just \boxit{``boxit'' -- like this.}
+
+But say you're really serious about getting someone's attention.
+
+\start{warning}
+\centerline{\bf LOOK!}
+\centerline{You can use the ``Warning'' command, like we did here.}
+\finish{warning}
+
+Now, let's use the extraordinary capabilities of \TeX\ to
+generate a mathematical formula:
+$$\hat{n}_2(s)={1\over \alpha_2}\biggl[ \biggl({\partial C_2\over
+ \partial x} \biggr)_{x=0}+{k_1 \hat{n}_1\over D_1} \biggr]$$
+Next, we'll create a table to show the dimensional units available in \TeX :
+\medskip
+\tableformat{\centerline|\centerline 1in|\leftline 1.2in|\centerline 1in|%
+ \centerline .05in|\centerline 1in|\leftline 1.2in|\centerline 1in}
+\tablebar{|\span7\tbar|}
+\tablerow{|\TeX\ UNIT|DESCRIPTION|PER INCH||\TeX\ UNIT|DESCRIPTION|PER INCH|}
+\tablebar{|\span7\tbar|}
+\tablerow{|{\tt in}|inch|1||{\tt mm}|millimeter|25.4|}
+\tablerow{|{\tt cm}|centimeter|2.54||{\tt dd}|Didot point|67.54|}
+\tablerow{|{\tt pt}|printer's point|72.27||{\tt bp}|big point|72|}
+\tablerow{|{\tt pc}|pica|6.02|| | | |}
+\tablebar{|\span7\tbar|}
+\medskip
+Itemized lists are very useful:
+\itm For listing things.
+\itm For making a series of points.
+\sitm You can even use subitems.
+\enditems
+Now, look at the next page to see exactly how this sample
+document was formatted.
+\vfil\eject
+
+
+\nofooting
+\centerline{\bf Here's the source file for ``\indx{Sample Document}''}
+\medskip
+\start{verbatim}{\tentt\inset=.6in\start{indent}
+\+noindentstyle
+\+centerfooting\[\+eightbf THIS DOCUMENT WAS CREATED USING \+HPTEX\]
+\+null\+bigskip
+\+centerline\[\+twelvebf A Sample Document\]
+
+Isn't that nice? If we wanted to, we could have easily set that off to the
+rightlike this:\+lbreak
+\+rightline\[\+twelvebf A Sample Document\]
+
+Now, how about \+textbox\[a textbox?\] Those are always
+fun. Or, if we really want to set something off, we could ask \+TeX\+ to:
+\+centerbox\[put it inside\+cr
+ a nice little\+cr
+ centered box,\]
+or, maybe just \+boxit\[``boxit'' -- like this.\]
+
+But say you're really serious about getting someone's attention.
+
+\+start\[warning\]
+\+centerline\[\+bf LOOK!\]
+\+centerline\[You can use the ``Warning'' command, like we did here.\]
+\+finish\[warning\]
+
+Now, let's use the extraordinary capabilities of \+TeX\+ to
+generate a mathematical formula:
+$$\+hat\[n\]_2(s)=\[1\+over \+alpha_2\] \+biggl[ \+biggl(\[\+partial C_2\+over
+ \+partial x\] \+biggr)_\[x=0\] +\[k_1 \+hat\[n\]_1\+over D_1\] \+biggr]$$
+Next, we'll create a table to show the dimensional units available in \+TeX :
+\+medskip
+\+tableformat\[\+centerline|\+centerline 1in|\+leftline 1.2in|%
+ \+centerline 1in|\+centerline .05in|%
+ \+centerline 1in|\+leftline 1.2in|\+centerline 1in\]
+\+tablebar\[|\+span7\+tbar|\]
+\+tablerow\[|\+TeX\+ UNIT|DESCRIPTION|PER INCH||\+TeX\+ UNIT|DESCRIPTION|PER INC
+\+tablebar\[|\+span7\+tbar|\]
+\+tablerow\[|\[\+tentt in\]|inch|1||\[\+tentt mm\]|millimeter|25.4|\]
+\+tablerow\[|\[\+tentt cm\]|centimeter|2.54||\[\+tentt dd\]|Didot point|67.54|\]
+\+tablerow\[|\[\+tentt pt\]|printer's point|72.27||\[\+tenttbp\]|big point|72|\]
+\+tablerow\[|\[\+tentt pc\]|pica|6.02|| | | |\]
+\+tablebar\[|\+span7\+tbar|\]
+\+medskip
+Itemized lists are very useful:
+\+itm For listing things.
+\+itm For making a series of points.
+\+sitm You can even use subitems.
+\+enditems
+Now, look at the next page to see exactly how this sample document was
+formatted.
+\+vfil\+eject
+\finish{indent}
+}
+\finish{verbatim}
+
+\bye
+
diff --git a/obsolete/macros/hptex/hptex.doc b/obsolete/macros/hptex/hptex.doc
new file mode 100644
index 0000000000..4611efaa45
--- /dev/null
+++ b/obsolete/macros/hptex/hptex.doc
@@ -0,0 +1,751 @@
+This is the documentation for HP TeX, version A.00.00, Feb. 14, 1984.
+ Copyright 1984 Hewlett-Packard Co.
+
+NOTE 1: Plain is read in as a separate file.
+
+NOTE 2: "@" temporarily becomes a letter so that HP TeX can use the
+ internal control sequences of PLAIN, and to avoid conflict between
+ the internal control sequences of HP TeX and user names.
+
+NOTE 3: This defines leaders used in the table of contents macros.
+
+<<FONTS>>
+
+NOTE 4: HP TeX has fonts available in sizes from 5 points to 24 points. The
+ fonts loaded in Plain are listed as comments to make it easier to
+ verify the fonts available.
+
+NOTE 5: In case a font is used in a write or message.
+
+NOTE 6: \fontdef#1#2 defines the control sequence for the font, but the
+ font is not loaded until the first time the control sequence is
+ actually used. The first parameter is the control sequence to be
+ defined; the second is the external font name.
+
+<<MACROS TO SET FSTYLE>>
+
+NOTE 7: These macros set the family and the background style. Then using
+ \setfont they set the current font.
+
+<<MACROS TO SET FSIZE>>
+
+NOTE 8: These macros set the background font size, and then use \setfont to
+ set the current font. \baselineskip and \strutbox are set to
+ values appropriate to the font size. The fonts in families 0, 1,
+ and 2 are changed to appropriate sizes. The fonts that are not
+ already loaded, are not loaded unless they are needed by an entry
+ into either math mode or display mode.
+
+<<MACROS TO SET CURRENT FONT USING FSTYLE AND FSIZE>>
+
+NOTE 9: \tryfont#1 sets \nofont@ to true if the control sequence determined
+ by the current background font size and style (#1) has not yet been
+ defined. If the control sequence does exist, \nofont@ is set to
+ false, and the control sequence is invoked.
+
+NOTE 10: \setfont uses \tryfont to set the current font based on the
+ background font size and style. If there is no control sequence
+ defined for that font, then \tryfont is used again to check for a
+ font with the background size and in roman style. If there is
+ still no control sequence defined for that font, the size ten and
+ style roman is tried. This will always succeed in HP TeX.
+
+ \ffam will be a third factor in determining the current font when
+ other font families become available.
+
+<<DEFAULTS>>
+
+NOTE 11: The default values in HP TeX are family0 and font \tenrm with a
+ background style of roman, a background size of ten points, and a
+ superscript/subscript size of seven points.
+
+<<LINE MACROS>>
+
+NOTE 12: These line setting macros take \leftskip and \rightskip into
+ account.
+
+<<MORE MACROS>>
+
+NOTE 13: This replaces Knuth's definition of \narrower. \narrow@ is used in
+ the note and warning macros.
+
+NOTE 14: \need is followed by a dimension x. It uses \need@ to determine
+ if x space remains on the page, and if not, causes an eject to
+ the next page.
+
+ \need@ depends on \okbreak which merely encourages a page break
+ at that point. Its effect is dependent on its nearness to the
+ bottom of the page, and whether the text following the \need
+ fits completely on the page or not.
+
+NOTE 15: \for provides a for-loop. Parameter #1 (\fcount@) contains the
+ variable name; #2 is the initial value of the variable; #3
+ (\fexit@) is the terminating value; #4 (\floop@) contains the
+ instructions to be done in the loop. The loop will not execute
+ unless the initial value (#2) is less than or equal to the
+ terminating value (#3). \next@ is set to \fnext@.
+
+NOTE 16: \fnext@ provides the looping capability for \for. It executes
+ \floop@ and then checks to see if \fcount@ has reached the
+ terminating value. If it hasn't, then \fcount@ is incremented. If
+ the terminating value has been reached, \next@ is set to \relax.
+ \next@ is then entered and depending on its current meaning, either
+ the loop is repeated via \fnext@, or \relax ends the looping.
+
+
+NOTE 17: \uline#1 makes an \vbox containing #1 with a horizontal rule .23em
+ under its baseline, and then creates an \hbox containing the vbox
+ lowered by the amount necessary to place the baseline of #1 in line
+ with the baseline of the current line of text.
+
+<<START AND FINISH GROUP STRUCTURE>>
+
+NOTE 18: \start#1 and \finish#1 define local nestable blocks. In the
+ event of any error, the error message is delayed until corrections
+ are complete.
+
+NOTE 19: \start#1 uses \ifinvalid@ to determine if #1 is a valid
+ blockname. If it is, a block (group) is begun and \blockname@
+ stores #1 as the current block. The control sequence \BEGIN#1 is
+ invoked and \Error is called to print out any error messages.
+
+NOTE 20: \finish#1 calls \ifinvalid@ to determine if #1 is a valid
+ blockname. If it is valid, \matchup@ is called to close block #1.
+ \Error is called to print out any error messages.
+
+NOTE 21: \ifinvalid@#1 tests to see if the control sequence \BEGIN#1
+ has been defined. If it has not been defined, it is ignored
+ and \errset is called to store an error message.
+
+NOTE 22: \matchup@#1 closes blocks as follows: if a \finish is used when no
+ block currently exists, it is ignored. if a finish does not match
+ the current blockname, blocks are closed until either a match is
+ found or all blocks are closed. The parameter is the parameter to
+ \finish.
+
+NOTE 23: \done closes the current block.
+
+<<GENERAL ERROR HANDLING>>
+
+NOTE 24: These macros are used for general purpose error handling.
+ \errfalse clears the error status. \errset assumes an argument of
+ an error message; any use of \errset sets the error status and
+ produces an error message when \Error is encountered.
+
+<<DATE AND TIME MACROS>>
+
+NOTE 25: \mon sets the current month with the current font.
+
+NOTE 26: \date sets the current date: <month> <day>, <year>.
+
+NOTE 27: \hour sets the current time of day in 12 hour format:
+ <hour>:<minutes> <AM or PM>.
+
+<<INDENTSTYLE>>
+
+NOTE 28: The switch \ifindent acts as a flag to indicate when \indentstyle
+ is being used. This is used in \indentstyle, \noindentstyle, and
+ \indentspace.
+
+NOTE 29: \indentstyle sets \parindent to \indentsize. If \indentstyle is
+ already in effect, \parskip is not changed. If \indentstyle is
+ not already in effect, \parskip is decreased by 5 points.
+
+NOTE 30: \noindentstyle sets \parindent to zero points. If \indentstyle is
+ in effect, \parskip is increased by 5 points, otherwise it is not
+ changed.
+
+NOTE 31: \indentspace will update \parindent only if \indentstyle is in
+ effect.
+
+<<RAGGED MARGIN>
+
+NOTE 32: \fixmargin@ preserves the original \rightskip.
+
+NOTE 33: \justify undoes the effects of \raggedright by returning to the
+ original \rightskip, and resetting the interword and intersentence
+ space to the default values.
+
+NOTE 34: \raggedright saves the original \rightskip with \fixmargin@, adds
+ some stretch to \rightskip, and if \tt is not in effect, fixes the
+ interword and intersentence spaces.
+
+NOTE 35: \tt@ is used in \raggedright in the \ifx comparison. It is
+ necessary if the comparison is to succeed.
+
+<<ITEM AND SUBITEM>>
+
+NOTE 36: \itemset@ takes three parameters: #1 specifies the left indentation
+ (in multiples of \inset), #2 should be the sum of the left and
+ right indentation (in multiples of \inset) , and #3 is the tag to be
+ hung to the left of the item. The line size is in \dimen@. \parshape
+ is used to build the paragraph. The tag (#3) is hung to the left of
+ the paragraph.
+
+NOTE 37: \itemlist#1 is syntactically the same as \item, however \itemlist
+ preserves \leftskip and \rightskip, and both the left and
+ right margins are indented by the value of \inset. The parameter
+ contains the tag for the item. Each time \itemlist is used,
+ the subitem tag is reset, and the item tag is incremented if
+ appropriate.
+
+NOTE 38: \subitem#1 is syntactically the same as \itemitem, however left and
+ rightskip are preserved, and both the left and right margins are
+ indented by twice the value of \inset. The parameter contains the
+ tag for the subitem. Each time \subitem is used, the subitem tag
+ is incremented, if appropriate.
+
+NOTE 39: \itempar creates a paragraph identical to that created by \itemlist
+ except it will have an empty tag. It can be used for the second
+ paragraph of an item.
+
+NOTE 40: \subitempar creates a paragraph like that created by \subitem, but
+ with an empty tag.
+
+
+<<ITEM TAG AND SUBITEM TAG MACROS>>
+
+NOTE 41: The definition of a tag must do three things:
+ 1. define a control sequence \reset[sub]items which will be
+ used to restart tag allocation between lists;
+ 2. restart tag allocation;
+ 3. define a control sequence \[sub]itemtag to produce a tag.
+
+ \icount@ (\scount@) holds the value used to determine the current
+ item (subitem) tag for numbered and lettered tags.
+
+ \idigit@ (\sdigit@) is used with lettered tags to keep track of how
+ many times the item (subitem) tags have gone through the alphabet
+ without being reset.
+
+NOTE 42: \itemn@#1 is used in the allocation of numbered tags. The parameter
+ is either \icount@ or \scount@.
+
+NOTE 43: \itemr@#1 is used in the allocation of lower case Roman tags. The
+ parameter is either \icount@ or \scount@.
+
+NOTE 44: \itemR@#1 is used in the allocation of upper case Roman tags.
+ The parameter is either \icount@ or \scount@.
+
+NOTE 45: \iteml@#1#2 is used in the allocation of lettered tags. If the
+ end of the alphabet is reached, it begins again with "aa" or
+ "AA". The first parameter is either \icount@ or \scount@. The
+ second parameter is either \idigit@ or \sdigit@.
+
+NOTE 46: \item@#1,#2,#3 takes three parameters: #1 is the initial value of
+ \icount@ (item counter), #2 is the value of \idigit@ which is
+ used to print out the appropriate number of letters when using
+ letters as tags, and #3 is the definition of the \itemtag. It
+ defines \resetitems to be the initialization of \icount@ and
+ \idigit@.
+
+NOTE 47: \itm does not take a parameter. It uses the current \itemtag
+ as the parameter to \itemlist. If the \itemtag is numbers or
+ letters, a period is appended to the tag.
+
+NOTE 48: \subitem@ is similar to \item@.
+
+NOTE 49: \sitm is the subitem macro equivalent to \itm for item.
+
+NOTE 50: The defaults are \numbereditems and \letteredsubitems.The
+ execution of these macros defines \itemtag, \subitemtag,
+ \resetitems, and \resetsubitems.
+
+<<NOTE AND WARNING MACROS>>
+
+NOTE 51: \BEGINnote defines the blockname "note" and sets the indentation
+ at twice the left and right skip amounts.
+
+NOTE 52: \BEGINwarning defines the blockname "warning," sets the indentation
+ to twice the left and rightskip amounts, and places a horizontal
+ rule above the text. \ENDwarning places a horizontal rule below
+ the text.
+
+NOTE 53: \marginrule#1 defines an \hrule limited by \leftskip and
+ \rightskip. Its only parameter specifies the height of the rule.
+
+<<VERBATIM MODE>>
+
+NOTE 54: In verbatim mode, all characters except (\), ({) and (}) are treated
+ verbatim. Characters that cannot be extracted from the current font
+ are taken from the math font and given a fixed space equal to the
+ space of the current font.
+
+
+<<LUMPLINE AND LUMPSPACE MACROS>>
+
+NOTE 55: These macros make the verbatim mode use less memory. Multiple lines
+ and spaces are lumped together to make one large glob of glue
+ rather than many small globs.
+
+ The carriage return is made into an active character, and given
+ the meaning of \lumpline@. \lumpline@ accumulates sequential
+ carriage returns into one lump of vertical glue in \skip@.
+
+ '\ ' is made into an active character, and given the meaning of
+ \lumpspace@. \lumpspace@ accumulates sequential spaces into
+ one lump of horizontal glue in \skip@.
+
+<<PAGE CONTROL MACROS>>
+
+NOTE 56: \newpage first balances multi-column format which transfers the
+ contents of \box 255 to \contrib@, so it always looks like the
+ page is empty immediately afterwards. The box \contrb@ is checked
+ to see if the page is really empty.
+
+ If \newpage occurs at the bottom of a full page, the \null\vfill
+ remains in recent contributions and causes an extra page to be
+ ejected. The workaround is to insert an \eject in the document
+ just before the \newpage (or the macro containing the \newpage).
+
+ The same problem occurs with \evenpage and \oddpage, and
+ the same workaround is effective.
+
+<<HEADING AND FOOTING MACROS>>
+
+NOTE 57: Headlines and footlines are constructed as follows:
+
+ (1) under normal conditions the centered heading or footing is
+ centered, but in the event that one (or more) of the headings or
+ footings are too wide, space is distributed if possible so there is
+ no overlap. The macro triplehead@ does this.
+
+ (2) inside and outside headings and footings have priority over
+ left and right headings and footings. \buildline takes care of
+ this.
+
+ Notice that if the tokens in an \hbox have width 0pt, it is
+ assumed they are empty.
+
+ The macros and token registers associated with headings and
+ footings should be used near forced page breaks or at the begining
+ of the document. TeX scans ahead when building a page, so the use
+ of these macros could affect the previous page.
+
+NOTE 58: \buildline decides which tokens will be on the left and right of
+ the headline or footline that is being constructed. \lft and \rght
+ hold the numbers of the boxes containing the tokens to be placed on
+ the left and right sides of the line. They are initialized to the
+ boxes for \leftheading and \rightheading. If the box containing the
+ \insideheading (\box3) is not empty, then for an odd page \lft is
+ set to 3, and for an even page \rght is set to 3.
+
+ If the box containing the \outsideheading (\box4) is not empty,
+ then for an odd page \rght is set to 4, and for an even page \lft
+ is set to 4.
+
+ \triplehead is called to actually construct the line.
+
+NOTE 59: \triplehead#1#2#3 requires three parameters. #1 is the number of
+ the box that is to go to the left, #2 is the box number for the
+ center, and #3 is the box number for the right. \skip@ is the glue
+ to go between the left and center boxes, and \skip@ii is the glue
+ to go between the center and right boxes.
+
+ If the width of the left box is greater than the width of the right
+ box, \skip@ii is increased by the difference, otherwise, \skip@ is
+ increased by the difference.
+
+ The line is then built by stringing together the boxes and glue.
+
+NOTE 60: \loadbox#1#2 takes two parameters: #1 is the box number, #2 is the
+ token list to be put in the box.
+
+NOTE 61: \headline checks to see if headings are turned on or off. If on,
+ it loads the appropriate boxes with the various heading token
+ lists and calls \buildline. If off, it adds horizontal glue, and
+ if \suspendheading is in effect, updates the \headcount.
+
+NOTE 62: \footline is similar to \headline.
+
+<<BOX MACROS>>
+
+NOTE 63: \boxit#1 takes as its parameter the text to be placed in the box,
+ and can be used when a real box is wanted, e.g., \setbox0\boxit{...}.
+ \boxit uses \halign to center the lines of text, separated by \cr,
+ within the box.
+
+ The value of \boxline determines the thickness of the rule around
+ the box. The value of \boxspace determines the amount of space
+ between the rule and the text.
+
+NOTE 64: \centerbox#1 takes as its parameter the text to be boxed, and then
+ uses \centerline to center the box resulting from \boxit#1. The box
+ is separated from surrounding text by \abovedisplayskip and
+ \belowdisplayskip.
+
+NOTE 65: \textbox#1 takes as its parameter the text to be boxed. It places
+ the boxed text in the current line (or begins a new paragraph if
+ encountered in vertical mode) with the baseline of the enclosed
+ text lined up with the baseline of the line.
+
+<<HP2680A and HP2688A COPY CONTROL MACROS>>
+
+NOTE 66: These commands control the number of copies per page. Owing to the
+ synchronization problems associated with TeX, these should only be
+ used near forced page ejects or at the begining of a document.
+
+ \globalspecial writes the parameter to the postamble of the
+ PIF file.
+
+ \copycnt contains the number of the register that the PIF server
+ will look in to find the number of copies desired.
+
+ \oldcopy contains the number of copies desired. The default is
+ two, so if \copieson is invoked before the user has used \copies<n>,
+ two copies will be generated.
+
+<<HP2680A and HP2688A LOGICAL PAGE CONTROL (LPC) MACROS>>
+
+NOTE 67: \lpcount@ holds the number of the register to be interpreted
+ by the PIF driver for explicit logical page control.
+
+ \nextlp@ holds the page control number to be put into
+ \count\lpcount@.
+
+ These macros avoid the synchronization problems of TeX by
+ interjecting a page eject at an appropriate time. At the beginning
+ of the document and after each \shipout, the "empty@" flag is set
+ to true.
+
+ If an LPC macro occurs when the "empty@" flag is true, \nextlp@
+ is updated, its value is put into \count\lpcount@, and the flag
+ is set to false.
+
+ If an LPC macro occurs when the "empty@" flag is false, \nextlp@
+ is updated, but the value in \count\lpcount@ is not changed. After
+ the next shipout, \count\lpcount@ is updated by the output routine.
+
+ The codes for \lpreset and \lpexit will, if left alone, only endure
+ for one page.
+
+<<TABLE MACROS>>
+
+NOTE 68: The table macros are complex. It is recommended that anyone
+ wanting to understand how they work examine the LOG file of
+ a small table created with \tracingmacros=1 and \tracingcommands=2.
+
+ The table macros use unallocated dimension and token registers to
+ store the column specifications. New dimensions or tokens should
+ not be allocated between the \tableformat and the last \tablerow or
+ \tablebar in a table. If any are allocated the result will be a
+ very strange looking table and a TeX error. If too many columns,
+ dimensions, tokens or inserts are allocated, an error message is
+ given and the registers are used anyway.
+
+ A row is processed in sections. \parseline@ takes sections of the
+ parameter to \tableformat or \tablerow. Each section is delimited
+ by a ~. \parsecol@ takes sub-sections of the section where each sub-
+ section is delimited by a |. After a sub-section is processed, the
+ next sub-section is fetched until the end of a section is reached.
+ The next section is then fetched and processed until the end of the
+ original parameter to \tableformat or \tablerow is reached.
+
+ \span is temporarily redefined during the execution of either a
+ \tablerow or \tablebar macro to allow spanning of multiple columns.
+
+ The standard table specifications are \leftline, \rightline,
+ \centerline and (for internal columns) \paragraph. You can also
+ make your own. There are only two rules:
+ (1) your macro will have one parameter (the text)
+ (2) your macro will yield a box of width \hsize.
+
+
+NOTE 69: \uptoks@ increments \cntA@, used as a pointer to a token register
+ to hold column alignment specifications, and \cntB@, used as a
+ pointer to a dimension register used to hold column width specifi-
+ cations. If too many token registers are used, an error message is
+ printed, and processing continues.
+
+NOTE 70: \bump@ increments \cntC@, which contains the number of columns
+ processed in the current \tablerow or \tablebar. If the total number
+ of columns specified in the \tableformat has not yet been processed,
+ then \cntC@ is incremented, and \uptoks@ is called to increment the
+ pointers to the registers that hold the column specifications.
+
+ NOTE 71: \tableformat#1 has as its parameter the description of the
+ table format. The alignment for the entire table is given first,
+ followed by the formats for each column. A column format consists
+ of its alignment followed by its width. A | separates the table
+ format from the column formats, and each column format from the
+ next.
+
+ \tableformat first calls \tablelet with the three parameters
+ \just@, \just@, and \relax.
+
+ Next, \parse@ (which has been assigned the meaning of \parseline@)
+ is called and sent one parameter, which is delimited by ~. This
+ effectively sends the contents of the parameter of \tableformat up
+ to the first ~ to \parse@ (\parseline@). The \done@ is an undefined
+ control sequence used to mark the end of the specifications in the
+ \tableformat.
+
+NOTE 72: \tablerow#1 is similar to \tableformat. Its parameter is a list of
+ the contents for each column of the row. Each column must start
+ and terminate with either a | for a visible bar, or a ~ for an
+ invisible bar.
+
+ The parameters sent to \tablelet are: \bbar@, \wbar@, and \endrow@.
+
+NOTE 73: \tablebar#1 sets horizontal rules across the table. It resets
+ \topstrut, \botstrut, and \tablespace, and then passes its
+ parameter to \tablerow. Its parameter is a list of column
+ contents, with each column indicated as for \tablerow. A
+ column can be empty, contain a \vrule, or contain \tbar.
+
+NOTE 74: \tablelet requires three parameters. The first is assigned to the
+ control sequence \b@, the second to \w@, and the third to \f@.
+ \CntA@, \CntB@, and \CntC@ are initialized. \parse@ is assigned
+ the meaning of \parseline@. If currently in horizontal mode,
+ vertical mode is entered; if in vertical mode, interline glue is
+ inhibited.
+
+NOTE 75: \just@#1 is never invoked directly. The control sequences \b@
+ and \w@ are \let to be \just@ in \tablelet when \tablelet is
+ called from \tableformat. \just@ is invoked by \parsecol@ the
+ first time \parsecol@ is entered. The parameter to \just@ is the
+ alignment specification for the table.
+
+ \just@ assigns the control sequences \b@ and \w@ the meaning of
+ \tform@, and initializes \maxcol@ to 0. The control sequence
+ \tablejust@ is assigned the table alignment specification (#1).
+
+NOTE 76: \tform@#1 passes its parameter, which is the set of specifications
+ for a column, on to \tform@@ with a ~ deliminating the parameter.
+
+NOTE 77: \tform@@#1#2~ updates the pointers to the registers to be used
+ for storing column specifications, puts the column alignment (#1)
+ into the current token register, and the column width (#2) into the
+ current dimension register. Then \maxcol@ is incremented to count
+ the column just completed.
+
+NOTE 78: \bbar@#1 begins a row that starts with a visible vrule. The
+ parameter is empty.
+
+NOTE 79: \wbar@#1 begins a row that starts with an invisible vrule. The
+ parameter is empty.
+
+NOTE 80: \beginrow@#1 reassigns \b@ and \w@ the meanings of \vbar@ and
+ \ibar@ respectively. The parameter is empty.
+
+ Box0, an \hbox that will contain the row, is begun with a \bgroup,
+ and the assignments that should hold within the box are made.
+
+NOTE 81: \endrow@ finishes Box 0 and aligns the resulting box according to
+ \tablejust@.
+
+NOTE 82: \vbar@#1 adds a column entry that terminates with a visible \vrule.
+ The parameter contains the column entry.
+
+NOTE 83: \ibar@#1 adds a column entry that terminates with an invisible
+ \rule. The parameter contains the column entry.
+
+NOTE 84: \cs@#1 determines if a column entry (#1) spans multiple columns,
+ and invokes \span@ with the appropriate parameters.
+
+NOTE 85: \parseline@#1~ is called by \tableformat and \tablerow (and
+ indirectly by \tablebar). Its parameter is the part (section) of
+ the parameter to the calling macro terminated by the first
+ occurrence of ~ . If the parameter is \done@, then processing is
+ complete, and \parse@ is assigned the current meaning of \f@, which
+ is \relax if \parseline@ was called from \tableformat, or \endrow@
+ if \parseline@ was called from \tablerow.
+
+ If processing is not done, \p@ss is assigned the meaning of
+ \parsecol@, and then \p@ss is invoked and its parameter is
+ that part (sub-section) of the parameter to \parseline@ up to the
+ first occurrence of |. \done@ is an end of processing indicator.
+ \parse@ is invoked and, depending on its current assigned meaning,
+ either terminates processing of this \tableformat or \tablerow
+ parameter, or takes the next section of the parameter of the
+ \tableformat or \tablerow terminated by ~ as its parameter.
+
+NOTE 86: \parsecol@#1 is called by \parseline@ and has as its parameter that
+ part (sub-section) of the parameter to \parseline@ up to the next
+ occurrence of |. It defines the macro \parsemode@: if we are on
+ the last column, then the currently assigned value of \w@ (\tform@
+ or \ibar@, depending on whether a \tableformat or a \tablerow is
+ being processed) is invoked, and \p@ss becomes \lastp@ss; if we are
+ not on the last column, then \b@ (which is either \tform@ or
+ \vbar@) is invoked; in either case, \p@ss is called again and will
+ either terminate processing or get the next section to be
+ processed.
+
+
+NOTE 87: \span@#1#2 sets a box spanning the required number of columns and
+ containing the text in the parameter. \hsize and \z@ are set to
+ the width and alignment specifications respectively of the first
+ column spanned. The pointers are then incremented once for each
+ column spanned, and the width of each column plus the width of a
+ vertical bar is added to the \hsize for each column spanned. The
+ first parameter is the integer following \span, and the second is
+ the remainder of the column contents.
+
+<<SECTION AND HEADING MACROS>>
+
+NOTE 88: These macros are used for head or section level control.
+
+ \basehead is the zero pointer value for the four pointers
+ to the head counters. The head counters count the number of
+ current headings at each heading level.
+
+ \headlevel keeps track of the level of the current heading.
+
+ To add a fifth level, do the following:
+ (1) Change the "\advance\count10by4" command to
+ "\advance\count10by5". This allocates
+ the counters for the level number.
+
+ (2) Change "\ifnum\hdlevel<4 " to "\ifnum\hdlevel<5
+ in the \sethead@ macro.
+
+ (3) Allocate a new token register, \fifthlevelhead, and
+ define a corresponding \headE@
+ (e.g., \def\headE@{\head5\the\fifthlevelhead}).
+
+ (4) Modify the \level macro so that it includes \headE@.
+
+ (5) Load \fifthlevelhead with some appropriate tokens.
+
+NOTE 89: \setlevelno#1 has one parameter: the levelnumber to be established.
+ This can be up to 4 numbers, separated by periods. The level number
+ and the pointer to the head counters are initialized.
+
+ .-1. is appended to the parameter to act as an end of parameter
+ signal.
+
+NOTE 90: \sethead@#1. has as its parameter one of the numbers in the
+ parameter to \setlevelno. The first number it receives is put into
+ the head counter for the first level. The second number goes into
+ the head counter for the second level, etc. Processing is
+ completed when -1 is received as a parameter, or when 4 levels have
+ been done.
+
+NOTE 91: \head#1 is called indirectly by \level via \headA@, or \headB@,
+ etc. It oversees adjusting the \levelno according to the level of
+ the new heading. Its parameter is the level of the new
+ heading.
+
+ If the new heading is on a level inferior to the current heading,
+ \uplevel@ is called, otherwise \headlevel is set to the level of
+ the new heading and that head counter for that level is incremented.
+
+ \head@ is called to update \levelno.
+
+NOTE 92: \uplevel@#1 does what is necessary to add a level that has a higher
+ number than the current level. #1 is the level of the new heading.
+
+NOTE 93: \head@ defines \levelno.
+
+NOTE 94: These allocate token registers for each level description, and
+ define a corresponding \headA@ (or \headB@ etc.) that calls \head
+ with the appropriate parameter, and accesses the tokens for that
+ headlevel.
+
+NOTE 95: \level#1#2 takes two parameters: #1 is the level of the heading,
+ and #2 becomes the definition of \title. A case statement is
+ used to invoke the appropriate choice of \headA@, \headB@, etc.
+
+<<CONTENTS FILE MACROS>>
+
+NOTE 96: "\content@" can now be written with \write
+
+NOTE 97: \ctswrite#1 writes its parameter into a file along with the current
+ page number. If the file does not already exist, one is created.
+ When the file is read at a later time, @ will not be a character.
+ \_ is redefined so that it can be read from the contents file.
+ \content@ is defined with @ no longer a character so that it can be
+ read from the contents file.
+
+
+NOTE 98: \contents adds the table of contents if a contents file was
+ created.
+
+<<FOOTNOTES AND INSERTIONS>>
+
+NOTE 99: The \vfootnote#1 of PLAIN has been modified to accommodate
+ multi-column format by the insertion of \realhsize to restore the
+ original \hsize and by adding 1\baselineskip to remove any glue
+ from \baselineskip.
+
+NOTE 100: \note generates footnotes with sequential numbers.
+
+NOTE 101: \midinsert has been changed from the definition in PLAIN by
+ the insertion of \p@gefalse.
+
+NOTE 102: \@ins has been changed from the definition in PLAIN by adding a
+ return to the normal \hsize and \vsize.
+
+NOTE 103: The \endinsert of PLAIN has been modified. The "room left on page"
+ calculation has been expanded to handle multi-column format: if
+ there is room, the columns are balanced and the insertion is
+ appended. The penalty (first item in the \insert) is set to -100 if
+ the insertion cannot fit on the current page, this keeps the page
+ from stretching if the insertion can't fit on the page.
+
+<<COLUMN MACROS>>
+
+NOTE 104: The column macros and output routines are interrelated. Every time
+ the number of columns changes, a false output routine is invoked.
+ This routine takes the current page (and splits it up if necessary)
+ and appends it to the contrib box. The \hsize is then reduced (or
+ restored) and the \vsize is multiplied (or restored). Then, to
+ every insert which was not void during the false output routine a
+ null insert is made. This restores the page goal (in case there are
+ no bona fide insertions, one insertion is always made, it is called
+ \hacker@). A new page total is then calculated from the height of
+ the contrib box. The two macros employed to do this work are
+ \balance@ and \newtotal@. Under no circumstances should the one be
+ used without the other.
+
+NOTE 105: \balance invokes the false output routine which has the effect of
+ balancing the columns if in multi-column mode. The page goal is
+ then updated by \newtotal@.
+
+NOTE 106: \balance@ invokes the false output routine by setting \ifreal@ to
+ false, and forcing an eject.
+
+NOTE 107: \newtotal@ restores the page total.
+
+NOTE 108: \multicol@#1 is called by the \BEGIN command for multi-column
+ format. It takes as its only parameter the number of columns
+ requested. It provides error checking and ignores the command
+ if already in multi-column mode. If the command is legal, then
+ the current page is balanced, and the \hsize and \vsize are
+ adjusted. The insertion registers are modified, the page total
+ is adjusted, and stretch is added to \baselineskip.
+
+<<OUTPUT ROUTINES>>
+
+NOTE 109: The output routines are complex. It is recommended that anyone
+ wanting to understand how they work examine the LOG file of a
+ short file with \tracingmacros=1 and \tracingcommands=2.
+
+ There are two types of output routines: \realoutput@ produces a
+ \shipout and \fakeoutput@ does not.
+
+ The \toks registers associated with each insert are now reserved
+ (as were \dimen, \skip and \count). Any tokens in these registers
+ will be destroyed when the \output routine is active.
+
+NOTE 110: \realoutput puts the current page into \out@. If currently in one-
+ column mode, it goes in directly, otherwise the current page is
+ first split into columns. Box 255 is then set to \contrb@ with
+ \old@ appended to it. The glue for insertions, \hsize, \vsize,
+ \leftskip, and \rightskip are returned to normal for the \shipout.
+ After the \shipout, the flags and counters are updated for the
+ logical page macros.
+
+
+NOTE 111: \fakeoutput takes the current page, balances it if necessary, and
+ puts it into \out@. \out@ is then appended to \contrb@.
+
+ If any column must be shorter due to balancing, it ought to be the
+ rightmost. The \vsplit primitive, however, will usually make the
+ rightmost column longer. To avoid this problem, columns are split a
+ little more than 1/2 or 1/3 down. Experimentation shows that adding
+ 1.16667 baselines to the total height for 2 columns, and adding 2
+ baselines to the total height for 3 columns affords the greatest
+ probability of an aesthetic break.
+
+NOTE 112: The "@" is no longer a letter.
diff --git a/obsolete/macros/hptex/hptex.tex b/obsolete/macros/hptex/hptex.tex
new file mode 100644
index 0000000000..3a3c21f6db
--- /dev/null
+++ b/obsolete/macros/hptex/hptex.tex
@@ -0,0 +1,836 @@
+% This is the HP TeX text format version A.00.00 as of Feb. 14, 1984.
+% It is compatible with the plain TeX format that's described in The TeXbook.
+%
+% Copyright 1984 Hewlett-Packard Co.
+%
+% NOTE 1, NOTE 2, etc. refer to notes in the file HPTEX.DOC
+%
+
+\input PLAIN.TEXT % NOTE 1
+
+\message{Preloading the HP TeX codes,}
+
+% SPECIAL CATCODES
+%
+\catcode`@=11 % NOTE 2
+
+% HPTEX
+%
+\def\HPTEX{HP\nobreak\ \TeX}
+\let\HpTeX=\HPTEX
+\def\fmtname{HP TeX}\def\fmtversion{A.00.00}
+
+% LEADERS
+%
+\def\dotfil{\tenrm\leaders\hbox to8\p@{\hss.\hss}\hss} % NOTE 3
+
+% CONSTANT VALUES
+%
+\chardef\zer@=0
+\chardef\f@ur=4
+\skipdef\skip@ii=2
+\maxdepth=2pt
+
+\message{fonts,}
+
+% FONTS % NOTE 4
+%
+\let\fontcheck=1 % NOTE 5
+\def\fontdef#1=#2 {\def#1{\font@{#1}{#2}}} % NOTE 6
+\def\font@#1#2{{\let\fontcheck=0\ifx0\fontcheck\egroup\global\font#1=#2#1%
+ \else}\string#1 \fi}%--The space after \string#1 is necessary.
+
+% ROMAN TEXT
+%
+\fontdef\twentyfourrm={amr10 scaled \magstep5}
+\fontdef\eighteenrm={amr10 scaled \magstep3}
+\fontdef\fourteenrm={amr10 scaled \magstep2}
+\font\twelverm=amr10 scaled \magstep1
+%\font\tenrm=amr10
+\font\ninerm=amr9
+\font\eightrm=amr8
+%\font\sevenrm=amr7
+\font\sixrm=amr6
+%\font\fiverm=amr5
+
+% MATH ITALIC
+%
+\fontdef\twentyfouri={ammi10 scaled \magstep5}
+\fontdef\eighteeni={ammi10 scaled \magstep3}
+\fontdef\fourteeni={ammi10 scaled \magstep2}
+\fontdef\twelvei={ammi10 scaled \magstep1}
+%\font\teni=ammi10
+\fontdef\ninei={ammi9}
+\fontdef\eighti={ammi8}
+%\font\seveni=ammi7
+\fontdef\sixi={ammi6}
+%\font\fivei=ammi5
+
+% MATH SYMBOLS
+%
+\fontdef\twentyfoursy={amsy10 scaled \magstep5}
+\fontdef\eighteensy={amsy10 scaled \magstep3}
+\fontdef\fourteensy={amsy10 scaled \magstep2}
+\fontdef\twelvesy={amsy10 scaled \magstep1}
+%\font\tensy=amsy10
+\fontdef\ninesy={amsy9}
+\fontdef\eightsy={amsy8}
+%\font\sevensy=amsy7
+\fontdef\sixsy={amsy6}
+%\font\fivesy=amsy5
+
+% BOLD MATH SYMBOLS
+%
+\fontdef\tenbfsy={ambsy10}
+
+% MATH EXTENSION
+%
+%\font\tenex=amex10
+
+% SANS SERIF
+%
+\fontdef\fourteenss={amss10 scaled \magstep2}
+\fontdef\twelvess={amss10 scaled \magstep1}
+\font\tenss=amss10
+\font\eightss=amssq8
+
+% SANS SERIF ITALIC
+%
+\font\tenitss=amssi10
+\font\eightitss=amssqi8
+
+% BOLDFACE EXTENDED
+%
+\fontdef\twentyfourbf={ambx10 scaled \magstep5}
+\fontdef\eighteenbf={ambx10 scaled \magstep3}
+\fontdef\fourteenbf={ambx10 scaled \magstep2}
+\font\twelvebf=ambx10 scaled \magstep1
+%\font\tenbf=ambx10
+\font\ninebf=ambx9
+\font\eightbf=ambx8
+%\font\sevenbf=ambx7
+\font\sixbf=ambx6
+%\font\fivebf=ambx5
+
+% TYPEWRITER
+%
+\fontdef\twentyfourtt={amtt10 scaled \magstep5}
+\fontdef\eighteentt={amtt10 scaled \magstep3}
+\fontdef\fourteentt={amtt10 scaled \magstep2}
+\fontdef\twelvett={amtt10 scaled \magstep1}
+%\font\tentt=amtt10
+\font\ninett=amtt9
+\font\eighttt=amtt8
+
+% SLANTED TYPEWRITER
+%
+\font\tensltt=amsltt10
+
+% SLANTED ROMAN
+%
+\fontdef\twentyfoursl={amsl10 scaled \magstep5}
+\fontdef\eighteensl={amsl10 scaled \magstep3}
+\fontdef\fourteensl={amsl10 scaled \magstep2}
+\fontdef\twelvesl={amsl10 scaled \magstep1}
+%\font\tensl=amsl10
+\font\ninesl=amsl9
+\font\eightsl=amsl8
+
+% TEXT ITALIC
+%
+\fontdef\twentyfourit={amti10 scaled \magstep5}
+\fontdef\eighteenit={amti10 scaled \magstep3}
+\fontdef\fourteenit={amti10 scaled \magstep2}
+\fontdef\twelveit={amti10 scaled \magstep1}
+%\font\tenit=amti10
+\font\nineit=amti9
+\font\eightit=amti8
+\fontdef\sevenit={amti7}
+
+% UNSLANTED TEXT ITALIC
+%
+\font\tenuit=amu10
+
+
+% CAPS AND SMALL CAPS
+%
+\font\tencsc=amcsc10
+
+% SANS SERIF BOLD EXTENDED
+%
+\font\tenbfss=amssbx10
+
+
+% BOLD EXTENDED SLANTED
+%
+\font\tenslbf=ambxsl10
+
+
+% DUNHILL STYLE
+%
+\font\tendh=amdunh10
+
+% FOR TITLES
+%
+\font\titlefont=amr7 scaled \magstep4
+
+
+% BIG FONT
+%
+\font\bigfont=amssbx10 scaled \magstep2
+
+
+\message{macros,}
+
+% MACROS TO SET FSTYLE % NOTE 7
+%
+\def\rm{\fam\z@\def\fstyle{rm}\setfont}
+\def\it{\fam\itfam\def\fstyle{it}\setfont}
+\def\bf{\fam\bffam\def\fstyle{bf}\setfont\ifmmode{\tenbfsy}%
+ \textfont2=\tenbfsy\fi}
+\def\sl{\fam\slfam\def\fstyle{sl}\setfont}
+\def\sa{\def\fstyle{ss}\setfont}
+\def\tt{\fam\ttfam\def\fstyle{tt}\setfont}
+
+\newfam\ssfam
+
+% MACROS TO SET FSIZE % NOTE 8
+%
+\def\fivepoint{\def\fsize{five}\setfont\let\sfont=\fivepoint%
+ \baselineskip7pt%
+ \setbox\strutbox=\hbox{\vrule height4.5pt depth1.5pt width0pt}%
+ \textfont0=\fiverm \scriptfont0=\fiverm%
+ \scriptscriptfont0=\fiverm%
+ \textfont1=\fivei \scriptfont1=\fivei%
+ \scriptscriptfont1=\fivei%
+ \textfont2=\fivesy \scriptfont2=\fivesy%
+ \scriptscriptfont2=\fivesy}
+
+\def\sixpoint{\def\fsize{six}\setfont\let\sfont=\fivepoint%
+ \baselineskip8pt%
+ \setbox\strutbox=\hbox{\vrule height5pt depth2pt width0pt}%
+ \textfont0=\sixrm \scriptfont0=\fiverm%
+ \scriptscriptfont0=\fiverm%
+ \scriptfont1=\fivei \scriptscriptfont1=\fivei%
+ \scriptfont2=\fivesy \scriptscriptfont2=\fivesy%
+ \def\changes{{\sixi\sixsy}%
+ \textfont1=\sixi \textfont2=\sixsy}%
+ \ifmmode\changes\else\everymath{\changes}%
+ \everydisplay{\changes}\fi}
+
+\def\sevenpoint{\def\fsize{seven}\setfont\let\sfont=\fivepoint%
+ \baselineskip9pt%
+ \setbox\strutbox=\hbox{\vrule height6pt depth2pt width0pt}%
+ \textfont0=\sevenrm \scriptfont0=\sixrm%
+ \scriptscriptfont0=\fiverm%
+ \textfont1=\seveni \scriptscriptfont1=\fivei%
+ \textfont2=\sevensy \scriptscriptfont2=\fivesy%
+ \def\changes{{\sixi\sixsy}%
+ \scriptfont1=\sixi%
+ \scriptfont2=\sixsy}%
+ \ifmmode\changes\else\everymath{\changes}%
+ \everydisplay{\changes}\fi}
+
+\def\eightpoint{\def\fsize{eight}\setfont\let\sfont=\sixpoint%
+ \baselineskip9pt%
+ \setbox\strutbox=\hbox{\vrule height7pt depth2pt width0pt}%
+ \textfont0=\eightrm \scriptfont0=\sixrm%
+ \scriptscriptfont0=\fiverm%
+ \scriptscriptfont1=\fivei%
+ \scriptscriptfont2=\fivesy%
+ \def\changes{{\eighti\sixi\eightsy\sixsy}%
+ \textfont1=\eighti \scriptfont1=\sixi%
+ \textfont2=\eightsy \scriptfont2=\sixsy}%
+ \ifmmode\changes\else\everymath{\changes}%
+ \everydisplay{\changes}\fi}
+
+\def\ninepoint{\def\fsize{nine}\setfont\let\sfont=\sixpoint%
+ \baselineskip11pt%
+ \setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt}%
+ \textfont0=\ninerm \scriptfont0=\sevenrm%
+ \scriptscriptfont0\fiverm%
+ \scriptfont1=\seveni \scriptscriptfont1\fivei%
+ \scriptfont2=\sevensy \scriptscriptfont2\fivesy%
+ \def\changes{{\ninei\ninesy}%
+ \textfont1=\ninei%
+ \textfont2=\ninesy}%
+ \ifmmode\changes\else\everymath{\changes}%
+ \everydisplay{\changes}\fi}
+
+\def\tenpoint{\def\fsize{ten}\setfont\let\sfont=\sevenpoint%
+ \baselineskip12pt%
+ \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width0pt}%
+ \textfont0=\tenrm \scriptfont0=\sevenrm%
+ \scriptscriptfont0\fiverm%
+ \textfont1=\teni \scriptfont1=\seveni%
+ \scriptscriptfont1\fivei%
+ \textfont2=\tensy \scriptfont2=\sevensy%
+ \scriptscriptfont2\fivesy}
+
+\def\twelvepoint{\def\fsize{twelve}\setfont\let\sfont=\eightpoint%
+ \baselineskip14pt%
+ \setbox\strutbox=\hbox{\vrule height10pt depth4pt width0pt}%
+ \textfont0=\twelverm \scriptfont0=\ninerm%
+ \scriptscriptfont0=\sevenrm%
+ \scriptscriptfont1=\seveni%
+ \scriptscriptfont2=\sevensy%
+ \def\changes{{\twelvei\ninei\twelvesy\ninesy}%
+ \textfont1=\twelvei \scriptfont1=\ninei%
+ \textfont2=\twelvesy \scriptfont2=\ninesy}%
+ \ifmmode\changes\else\everymath{\changes}%
+ \everydisplay{\changes}\fi}
+\def\fourteenpoint{\def\fsize{fourteen}\setfont\let\sfont=\tenpoint%
+ \baselineskip16pt%
+ \setbox\strutbox=\hbox{\vrule height12pt depth4pt width0pt}%
+ \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm%
+ \scriptfont1=\teni \scriptscriptfont1=\seveni%
+ \scriptfont2=\tensy \scriptscriptfont2=\sevensy%
+ \def\changes{{\fourteeni\fourteenrm\fourteensy}%
+ \textfont0=\fourteenrm%
+ \textfont1=\fourteeni%
+ \textfont2=\fourteensy}%
+ \ifmmode\changes\else\everymath{\changes}\everydisplay{\changes}\fi}
+
+\def\eighteenpoint{\def\fsize{eighteen}\setfont\let\sfont=\tenpoint%
+ \baselineskip18pt%
+ \setbox\strutbox=\hbox{\vrule height15pt depth3pt width0pt}%
+ \scriptfont0=\twelverm \scriptscriptfont0=\tenrm%
+ \scriptscriptfont1=\teni%
+ \scriptscriptfont2=\tensy%
+ \def\changes{{\eighteenrm\eighteeni\twelvei\eighteensy\twelvesy}%
+ \textfont0=\eighteenrm%
+ \textfont1=\eighteeni \scriptfont1=\twelvei%
+ \textfont2=\eighteensy \scriptfont2=\twelvesy}%
+ \ifmmode\changes\else\everymath{\changes}%
+ \everydisplay{\changes}\fi}
+\def\twentyfourpoint{\def\fsize{twentyfour}\setfont\let\sfont=\tenpoint%
+ \baselineskip24pt%
+ \setbox\strutbox=\hbox{\vrule height21.5pt depth2.5pt width0pt}%
+ \def\changes{{\twentyfourrm\eighteenrm\fourteenrm\twentyfouri%
+ \eighteeni\fourteeni\twentyfoursy\eighteensy\fourteensy}%
+ \textfont0=\twentyfourrm \scriptfont0=\eighteenrm %
+ \scriptscriptfont0=\fourteenrm%
+ \textfont1=\twentyfouri \scriptfont1=\eighteeni%
+ \scriptscriptfont1=\fourteeni%
+ \textfont2=\twentyfoursy \scriptfont2=\eighteensy%
+ \scriptscriptfont2=\fourteensy}%
+ \ifmmode\changes\else\everymath{\changes}\everydisplay{\changes}\fi}
+
+% MACROS TO SET CURRENT FONT USING FSTYLE AND FSIZE
+%
+\newif\ifnofont@
+\def\tryfont#1{\expandafter\ifx\csname#1\endcsname\relax\nofont@true % NOTE 9
+ \else\nofont@false\csname#1\endcsname\fi}
+\def\setfont{\tryfont{\ffam\fsize\fstyle}% % NOTE 10
+ \ifnofont@\tryfont{\ffam\fsize rm}%
+ \ifnofont@\tryfont{\ffam tenrm}%
+ \ifnofont@\tenrm\fi\fi\expandafter
+ \fonterr\csname\ffam\fsize\fstyle\endcsname{\the\font}\fi}
+\def\fonterr#1#2{\immediate\write\m@ne{! font #1is undefined,
+ I'm using #2instead.}\xdef#1{#2}}
+
+% DEFAULTS % NOTE 11
+%
+\fam\z@\tenrm\def\ffam{}\def\fstyle{rm}\def\fsize{ten}\let\sfont=\sevenpoint
+
+% LINE MACROS % NOTE 12
+%
+\def\lline#1{\hbox to\hsize{\hskip\leftskip#1\hskip\rightskip}}
+\def\leftline#1{\lline{#1\hss}}
+\def\rightline#1{\lline{\hss#1}}
+\def\centerline#1{\lline{\hss#1\hss}}
+
+% MORE MACROS
+%
+\def\narrow#1{\advance\leftskip#1\advance\rightskip#1}
+\def\narrower{\narrow\parindent} % NOTE 13
+\def\narrow@{\narrow\inset}
+\def\inc#1{\advance#1\@ne}
+\def\dec#1{\advance#1\m@ne}
+\def\ignore#1{\relax}
+\def\okbreak{\par\penalty-200}
+\def\need{\afterassignment\need@\dimen@} % NOTE 14
+\def\need@{\vskip\dimen@ minus\dimen@\okbreak\vskip-\dimen@ minus-\dimen@}
+\def\for#1=#2to#3do#4{#1=#2\ifnum#2>#3\else\let\next@=\fnext@ % NOTE 15
+ \def\fcount@{#1}\def\fexit@{#3}\def\floop@{#4}\next@\fi}
+\def\fnext@{\floop@\ifnum\fcount@<\fexit@\inc\fcount@ % NOTE 16
+ \else\let\next@=\relax\fi\next@}
+\def\super#1{\/\raise.4em\hbox{\sfont#1}\thinspace}
+\def\sub#1{\lower.25em\hbox{\sfont#1}\thinspace}
+\def\lbreak{\hfill\break}
+\def\uline#1{\setbox0=\hbox{#1}\dimen@=-\dp0\advance\dimen@ .23em % NOTE 17
+ \ifvmode\indent\fi\hbox to \wd0{\lower.27em
+ \vbox{\box0\vskip\dimen@\hrule height.04em}}}
+
+% START AND FINISH GROUP STRUCTURE % NOTE 18
+%
+\def\start#1{\errfalse\ifinvalid@{#1}\else\begingroup % NOTE 19
+ \def\blockname@{#1}\csname BEGIN#1\endcsname\fi\Error}
+\def\finish#1{\errfalse\ifinvalid@{#1}\else\matchup@{#1}\fi\Error} % NOTE 20
+\def\ifinvalid@#1{\expandafter\ifx\csname BEGIN#1\endcsname\relax % NOTE 21
+ \errset{I don't understand {#1}, it may be misspelled}}
+\def\matchup@#1{\def\test@{#1}% % NOTE 22
+ \expandafter\ifx\csname blockname@\endcsname\relax
+ \errset{Extra \string\finish{\test@} ignored}%
+ \else\ifx\test@\blockname@\done
+ \else\errset{Missing \string\finish{\blockname@} inserted}%
+ \done\matchup@{#1}\fi\fi}
+\def\done{\csname END\blockname@\endcsname\endgroup} % NOTE 23
+
+% GENERAL ERROR HANDLING % NOTE 24
+%
+\def\errfalse{\global\let\iferr=\iffalse}
+\def\errtrue{\global\let\iferr=\iftrue}
+\def\errset#1{\iferr\immediate\write0{! \error}\else\errtrue\fi\xdef\error{#1}}
+\def\Error{\iferr\errmessage{\error}\fi}
+
+% DATE AND TIME MACROS
+%
+\newcount\cntA@\newcount\cntB@\newcount\cntC@
+\def\mon{\ifcase\month\relax\or January\or February\or March\or % NOTE 25
+ April\or May\or June\or July\or August\or September\or October\or
+ November\or December\fi}
+\def\date{\mon\nobreak\ \number\day, \number\year} % NOTE 26
+\def\hour{{\cntA@=\time \cntB@=\cntA@ % NOTE 27
+ \divide\cntA@60 \cntC@=\cntA@ \multiply\cntC@60
+ \advance\cntB@-\cntC@\ifnum\cntA@>11
+ \advance\cntA@-12 \def\time@{PM}\else\def\time@{AM}\fi
+ \ifnum\cntA@=0 \cntA@=12 \fi\number\cntA@
+ :\ifnum\cntB@<10 0\fi\number\cntB@\nobreak\ \time@}}
+
+% INDENTSTYLE
+%
+\newdimen\indentsize\indentsize=20pt
+\newif\ifindent\indenttrue % NOTE 28
+\def\indentstyle{\parindent\indentsize % NOTE 29
+ \ifindent\else\indenttrue\advance\parskip-5\p@\fi}
+\def\noindentstyle{\parindent\z@ % NOTE 30
+ \ifindent\indentfalse\advance\parskip5\p@\fi}
+\def\indentspace{\afterassignment\indent@\indentsize} % NOTE 31
+\def\indent@{\ifindent\parindent\indentsize\fi}
+\newdimen\inset
+\inset.5in
+\def\BEGINindent{\advance\leftskip \inset}
+\let\ENDindent=\par
+
+% RAGGED MARGIN AND JUSTIFIED MARGIN MACROS
+%
+\def\fixmargin@{\dimen@=\rightskip\rightskip=\dimen@} % NOTE 32
+\def\justify{\fixmargin@\spaceskip\z@\xspaceskip\z@} % NOTE 33
+\def\raggedright{\fixmargin@\advance\rightskip\z@ plus2em % NOTE 34
+ \ifx\fstyle\tt@\else\spaceskip.3333em\xspaceskip.5em\fi}
+\def\tt@{tt} % NOTE 35
+
+% ITEM AND SUBITEM MACROS
+%
+\newcount\icount@\newcount\scount@
+\newcount\idigit@\newcount\sdigit@
+\def\itemset@#1#2#3{\dimen@=\hsize \advance\dimen@-#2\inset % NOTE 36
+ \parshape=\@ne#1\inset\dimen@\noindent
+ \hbox to\z@{\hss#3\enspace}\ignorespaces}
+\def\itemlist#1{\medskip\resetsubitems\itemset@\@ne\tw@{#1}} % NOTE 37
+\def\subitem#1{\smallskip\itemset@\tw@\f@ur{#1}} % NOTE 38
+\def\itempar{\smallskip\itemset@\@ne\tw@\empty} % NOTE 39
+\def\subitempar{\subitem\empty} % NOTE 40
+\def\enditems{\bigskip\resetitems}
+
+% ITEMTAG AND SUBITEMTAG MACROS % NOTE 41
+%
+\def\square{\hbox{\hskip.5pt\vrule height.4em width.4em depth 0em}}
+\def\dott{$\bullet$}
+\def\emdash{---}
+\def\itemn@#1{\number#1\global\inc#1} % NOTE 42
+\def\itemr@#1{\romannumeral#1\global\inc#1} % NOTE 43
+\def\itemR@#1{\uppercase\expandafter{\romannumeral#1}\global\inc#1} % NOTE 44
+\def\iteml@#1#2{{\loop\char#1\ifnum#2>\@ne\dec#2\repeat}\global\inc#1%% NOTE 45
+ \ifnum#1>122 \global#1=97 \global\inc#2\fi \ifnum#1=91 \global#1=65
+ \global\inc#2\fi}
+ \def\item@ #1,#2,#3{\def\itemtag{#3}% % NOTE 46
+ \def\resetitems{\global\icount@=#1\global\idigit@=#2}\resetitems}
+\outer\def\numbereditems{\item@ 1,0,{\itemn@\icount@}}
+\outer\def\lettereditems{\item@ 97,1,{\iteml@\icount@\idigit@}}
+\outer\def\Lettereditems{\item@ 65,1,{\iteml@\icount@\idigit@}}
+\outer\def\romanitems{\item@ 1,0,{\itemr@\icount@}}
+\outer\def\Romanitems{\item@ 1,0,{\itemR@\icount@}}
+\outer\def\squareditems{\let\itemtag=\square\let\resetitems=\relax}
+\outer\def\dotteditems{\let\itemtag=\dott\let\resetitems=\relax}
+\outer\def\dasheditems{\let\itemtag=\emdash\let\resetitems=\relax}
+\def\itm{\itemlist{\tenrm\itemtag\ifx\relax\resetitems\else.\fi}} % NOTE 47
+
+\def\subitem@ #1,#2,#3{\def\subitemtag{#3}% % NOTE 48
+ \def\resetsubitems{\global\scount@=#1\global\sdigit@=#2}\resetsubitems}
+\outer\def\numberedsubitems{\subitem@ 1,0,{\itemn@\scount@}}
+\outer\def\letteredsubitems{\subitem@ 97,1,{\iteml@\scount@\sdigit@}}
+\outer\def\Letteredsubitems{\subitem@ 65,1,{\iteml@\scount@\sdigit@}}
+\outer\def\romansubitems{\subitem@ 1,0,{\itemr@\scount@}}
+\outer\def\Romansubitems{\subitem@ 1,0,{\itemR@\scount@}}
+\outer\def\squaredsubitems{\let\subitemtag=\square\let\resetsubitems=\relax}
+\outer\def\dottedsubitems{\let\subitemtag=\dott\let\resetsubitems=\relax}
+\outer\def\dashedsubitems{\let\subitemtag=\emdash\let\resetsubitems=\relax}
+\def\sitm{\subitem{\tenrm\subitemtag\ifx\relax\resetsubitems\else.\fi}}
+ % NOTE 49
+\numbereditems\letteredsubitems % NOTE 50
+
+% NOTE AND WARNING MACROS
+%
+\def\BEGINnote{\bigskip\narrow@\narrow@\nobreak} % NOTE 51
+\let\ENDnote=\bigskip
+\def\BEGINwarning{\bigskip\nobreak\narrow@\narrow@\marginrule.02667in % NOTE 52
+ \nobreak\medskip\nobreak}
+\def\ENDwarning{\nobreak\medskip\nobreak\marginrule.02667in \bigskip}
+\def\marginrule#1 {\nointerlineskip\vbox to#1{\vss % NOTE 53
+ \lline{\leaders\hrule height#1\hss}}}
+
+
+% VERBATIM MODE % NOTE 54
+%
+\newskip\blanksize@
+\bgroup\catcode`\*=3 \catcode`\$=13 \catcode`\#=13
+ \catcode`\^=13 \catcode`\_=13 \catcode`\|=13 \catcode`\~=13
+\gdef\BEGINverbatim{\parskip=0pt plus1pt
+ \catcode`\$=13 \def${\indent\hbox to \the\fontdimen\tw@\the\font
+ {\hss\$\hss}}
+ \catcode`\&=12
+ \catcode`\#=13 \def#{\indent\hbox to \the\fontdimen\tw@\the\font
+ {\hss*\#*\hss}}
+ \catcode`\^=13 \def^{\indent\hbox to \the\fontdimen\tw@\the\font
+ {\hss*\mathchar"327D*\hss}}
+ \catcode`\_=13 \def_{\indent\hbox to \the\fontdimen\tw@\the\font
+ {\hss\_\hss}}
+ \catcode`\%=12
+ \catcode`\|=13 \def|{\indent\hbox to \the\fontdimen\tw@\the\font
+ {\hss*\mathchar"326A*\hss}}
+ \catcode`\~=13 \def~{\indent\hbox to \the\fontdimen\tw@\the\font
+ {\hss*\mathchar"3218*\hss}}
+ \parindent\z@\lumplines\lumpspaces}
+\egroup
+
+% LUMPLINE AND LUMPSPACE MACROS % NOTE 55
+%
+{\catcode`\^^M=13 \gdef\lumplines{\catcode`\^^M=13 \let^^M=\lumpline@}}
+\def\lumpline@{\par\skip@=\z@\let\munch@=\lumpB@\futurelet\lump@\lumpA@}
+\def\lumpA@{\ifx\lumpline@\lump@\advance\skip@\baselineskip
+ \else\let\munch@=\relax\vskip\skip@\fi\munch@}
+\def\lumpB@#1{\futurelet\lump@\lumpA@}
+{\catcode`\ =13 \gdef\lumpspaces{\catcode`\ =13\relax\let =\lumpspace@}}
+\def\lumpspace@{\blanksize@=\the\fontdimen\tw@\the\font
+ \skip@=\z@\let\munch@=\lumpb@\futurelet\lump@\lumpa@}
+\def\lumpa@{\advance\skip@\blanksize@\ifx\lumpspace@\lump@
+ \else\let\munch@=\relax\hskip\skip@\fi\munch@}
+\def\lumpb@#1{\futurelet\lump@\lumpa@}
+\let\munch@=\relax
+
+% PAGE CONTROL MACROS % NOTE 56
+%
+\def\newpage{\balance\ifold@\null\vfill\eject\fi}
+\def\evenpage{\newpage\ifodd\pageno\null\vfill\eject\fi}
+\def\oddpage{\newpage\ifodd\pageno\else\null\vfill\eject\fi}
+
+% HEADING AND FOOTING MACROS % NOTE 57
+%
+\newtoks\leftheading \newtoks\leftfooting
+\newtoks\rightheading \newtoks\rightfooting
+\newtoks\centerheading \newtoks\centerfooting
+\newtoks\insideheading \newtoks\insidefooting
+\newtoks\outsideheading \newtoks\outsidefooting
+\newtoks\headline \newtoks\footline
+\def\buildline{\let\lft=\zer@\let\rght=\@ne % NOTE 58
+ \ifdim\wd3=\z@\else\ifodd\pageno\let\lft=\thr@@\else\let\rght=\thr@@\fi\fi
+ \ifdim\wd4=\z@\else\ifodd\pageno\let\rght=\f@ur\else\let\lft=\f@ur\fi\fi
+ \triplehead\lft\tw@\rght}
+\def\triplehead#1#2#3{\skip@=1em\skip@ii=1em % NOTE 59
+ \dimen@=\wd#1\advance\dimen@-\wd#3%
+ \ifdim\dimen@>\z@\advance\skip@ii\dimen@ minus\dimen@
+ \else\advance\skip@-\dimen@ minus-\dimen@\fi
+ {\box#1\hskip\skip@\hfil\box#2\hfil\hskip\skip@ii\box#3}}
+\def\loadbox#1#2{\setbox#1=\hbox{\the#2}} % NOTE 60
+\newcount\headcount\newcount\footcount
+\def\suspendheading#1{\global\headcount=#1}
+\def\suspendfooting#1{\global\footcount=#1}
+\def\noheading{\suspendheading\m@ne}
+\def\nofooting{\suspendfooting\m@ne}
+\def\resumeheading{\suspendheading\zer@}
+\def\resumefooting{\suspendfooting\zer@}
+\headline{\ifnum\headcount=\z@\loadbox\tw@\centerheading % NOTE 61
+ \loadbox\zer@\leftheading\loadbox\@ne\rightheading
+ \loadbox\thr@@\insideheading\loadbox\f@ur\outsideheading\buildline
+ \else\hfil\ifnum\headcount>\z@\global\dec\headcount\fi\fi}
+\footline{\ifnum\footcount=\z@\loadbox\tw@\centerfooting % NOTE 62
+ \loadbox\zer@\leftfooting\loadbox\@ne\rightfooting
+ \loadbox\thr@@\insidefooting\loadbox\f@ur\outsidefooting\buildline
+ \else\hfil\ifnum\footcount>\z@\global\dec\footcount\fi\fi}
+\resumeheading
+\resumefooting
+% footline is normally a centered page number in font \tenrm
+\centerfooting{\tenrm\folio}
+
+% BOX MACROS
+%
+\newdimen\boxline
+\newdimen\boxspace
+\boxline .01332in
+\boxspace 5pt
+\newdimen\depthbox@
+\def\boxit#1{\hbox{\vrule width\boxline % NOTE 63
+ \vbox{\hrule height\boxline\kern\boxspace
+ \hbox{\kern\boxspace
+ \vbox{\halign{\hfil##\hfil\cr\strut#1\strut\cr}}%
+ \kern\boxspace}%
+ \kern\boxspace\hrule height\boxline}%
+ \vrule width\boxline}}
+\def\centerbox#1{\vskip\abovedisplayskip % NOTE 64
+ \centerline{\boxit{#1}}%
+ \vskip\belowdisplayskip}
+\def\textbox#1{\depthbox@=\dp\strutbox\advance\depthbox@ by .4\p@ % NOTE 65
+ \ifvmode\indent\fi\setbox\z@\hbox{\vrule
+ \vbox{\hrule\hbox{\kern\p@#1\strut\kern\p@}\hrule}%
+ \vrule}\lower\depthbox@\box\z@}
+
+% HP2680A and HP2688A COPY CONTROL MACROS % NOTE 66
+%
+\newcount\oldcopy\newcount\copycnt
+\def\copy@{\globalspecial{HP2688A,HP2680A COPIES \number\copycnt}}
+\def\selectcopycount{\afterassignment\copy@\copycnt}
+\def\copieson{\global\count\copycnt=\oldcopy\copy@}
+\def\copiesoff{\global\count\copycnt=1 \copy@}
+\def\copies{\afterassignment\copieson\global\oldcopy}
+\copycnt=1
+\oldcopy=2
+
+% HP2680A and HP2688A LOGICAL PAGE CONTROL (LPC) MACROS % NOTE 67
+%
+\def\lplist#1{\globalspecial{HP2688A,HP2680A ILP #1}}
+\def\lpdef#1{\globalspecial{HP2688A,HP2680A LP #1}}
+\newif\ifempty@\empty@true
+\newcount\lpcount@\newcount\nextlp@
+\def\selectlpcounter#1{\lpcount@#1 \setlpcount@{\the\lpcount@}}
+\def\setlpcount@#1{\globalspecial{HP2688A,HP2680A ELP #1}}
+\def\lpageto{\eject\afterassignment\lpeject@\nextlp@}
+\def\ppageto{\eject\afterassignment\lpage@\nextlp@}
+\def\lpeject@{\nextlp@=-\nextlp@\lpage@}
+\def\lpresume{\eject\nextlp@=\z@\lpage@}
+\def\lpreset{\eject\nextlp@=33 \lpage@ \nextlp@=\z@}
+\def\lpexit{\eject\nextlp@=34 \lpage@ \nextlp@=\z@}
+\def\lpage@{\ifempty@\count\lpcount@=\nextlp@\global\empty@false\fi}
+\everyjob{\message{Using HP TeX Version \fmtversion}\selectlpcounter2 {}}
+
+% TABLE MACROS % NOTE 68
+%
+\newcount\maxcol@
+\newbox\topstrutbox \def\topstrut{\unhcopy\topstrutbox}
+\setbox\topstrutbox=\hbox{\vrule height11pt depth0pt width0pt}
+\newbox\botstrutbox \def\botstrut{\unhcopy\botstrutbox}
+\setbox\botstrutbox=\hbox{\vrule height0pt depth4pt width0pt}
+\newdimen\tableline \tableline.01332in
+\newskip\tablespace \tablespace5pt
+\def\paragraph#1{\vbox{\hrule height\z@ width\hsize depth\z@#1}}
+\def\tbar{\ifvmode\hrule\else\vrule width\hsize depth\z@\fi height\tableline}
+\def\uptoks@{\inc\cntA@\inc\cntB@ % NOTE 69
+ \ifnum\cntA@<\count19 \ifnum\cntB@<\count19 \else\err@\fi\else\err@\fi}
+\def\err@{\errmessage{Columns too wide for tabular format}}
+\def\bump@{\ifnum\cntC@<\maxcol@\inc\cntC@\uptoks@\fi} % NOTE 70
+\def\tableformat#1{\tablelet\just@\just@\relax\parse@#1~\done@~} % NOTE 71
+\def\tablerow#1{\tablelet\bbar@\wbar@\endrow@\parse@#1~\done@~} % NOTE 72
+\def\tablebar#1{{\let\topstrut\relax\let\botstrut\relax\tablespace\z@%% NOTE 73
+ \tablerow{#1}}}
+\def\tablelet#1#2#3{\let\b@#1\let\w@#2\let\f@#3\cntA@\count15 \cntB@\count11%
+ \cntC@\z@\let\parse@=\parseline@\ifhmode\par\else\nointerlineskip\fi}
+ % NOTE 74
+\def\just@#1{\let\b@\tform@\let\w@\tform@\maxcol@\z@\let\tablejust@#1}
+ % NOTE 75
+
+\def\tform@#1{\tform@@#1~} % NOTE 76
+\def\tform@@#1#2~{\uptoks@\toks\cntA@{#1}\dimen\cntB@#2\inc\maxcol@} % NOTE 77
+\def\bbar@#1{\beginrow@{#1}\vrule width\tableline\vrule width\z@#1} % NOTE 78
+\def\wbar@#1{\beginrow@{#1}\kern\tableline\vrule width\z@#1} % NOTE 79
+\def\beginrow@#1{\let\b@\vbar@\let\w@\ibar@\setbox\z@=\hbox\bgroup% % NOTE 80
+ \parindent\z@\leftskip\tablespace\rightskip\tablespace\let\span=\span@}
+\def\endrow@{\kern-\dimen\cntB@\egroup\tablejust@{\unhbox\z@}} % NOTE 81
+\def\vbar@#1{\futurelet\lookahead@\cs@#1~\vrule width\tableline} % NOTE 82
+\def\ibar@#1{\futurelet\lookahead@\cs@#1~\kern\tableline} % NOTE 83
+\def\cs@#1~{\ifx\span@\lookahead@#1~\else\span@\@ne#1~\fi\lower\ht\z@\box\z@}
+ % NOTE 84
+\def\parseline@#1~{\ifx\done@#1\let\parse@\f@\else\let\p@ss\parsecol@%
+ \p@ss#1|\done@|\fi\parse@} % NOTE 85
+\def\parsecol@#1|{\def\parsemode@{\ifx\done@\lookahead@\w@{#1}% % NOTE 86
+ \let\p@ss\lastp@ss\else\b@{#1}\fi\p@ss}%
+ \futurelet\lookahead@\parsemode@}
+\def\lastp@ss#1|{}
+\def\span@#1#2~{\bump@\hsize\dimen\cntB@\edef\x@{\the\toks\cntA@}% % NOTE 87
+ \for\count@=2to#1do%
+ {\bump@\advance\hsize\dimen\cntB@\advance\hsize\tableline}%
+ \setbox\z@=\x@{\topstrut#2\botstrut}}
+
+% SECTION AND HEADING MACROS % NOTE 88
+%
+\newcount\basehead\basehead=\count10
+\advance\count10by4 % This allocates 4 counters for head counters
+\newcount\hdlevel
+\def\setlevelno#1{\hdlevel=0 \cntA@=\basehead\sethead@0#1.-1.\head@} % NOTE 89
+\def\sethead@#1.{\ifnum-1=#1 \let\next@=\relax\else\let\next@=\sethead@
+ % NOTE 90
+ \ifnum\hdlevel<4 \inc\hdlevel\inc\cntA@\count\cntA@=#1\fi\fi\next@}
+\def\head#1{\ifnum#1>\hdlevel\uplevel@{#1}\else % NOTE 91
+ \hdlevel=#1\cntA@=#1\advance\cntA@\basehead\fi
+ \inc{\count\cntA@}\head@}
+\def\uplevel@#1{\inc\hdlevel\cntA@=\hdlevel % NOTE 92
+ \advance\cntA@\basehead\count\cntA@=0
+ \ifnum\hdlevel=#1 \else\uplevel@{#1}\fi}
+\def\head@{{\inc\basehead\xdef\levelno{\the\count\basehead} % NOTE 93
+ \for\cntB@=\tw@ to\hdlevel do{\inc\basehead
+ \xdef\levelno{\levelno.\the\count\basehead}}}}
+\setlevelno{0}
+
+\newtoks\firstlevelhead \def\headA@{\head\@ne\the\firstlevelhead} % NOTE 94
+\newtoks\secondlevelhead \def\headB@{\head\tw@\the\secondlevelhead}
+\newtoks\thirdlevelhead \def\headC@{\head\thr@@\the\thirdlevelhead}
+\newtoks\fourthlevelhead \def\headD@{\head\f@ur\the\fourthlevelhead}
+
+\def\level#1#2{\def\title{#2}% % NOTE 95
+ \ifcase#1\relax\or\headA@\or\headB@\or\headC@\or\headD@\fi}
+\firstlevelhead{\vfill\eject\vbox to1.5in{}\centerline{\fourteenbf\title}%
+ \vskip1.0in\ctswrite{\vrule height20pt width0pt\tenbf\title}}
+\secondlevelhead{\need.75in\bigskip\leftline{\twelvebf\levelno\enspace\title}%
+ \medskip\ctswrite{\hskip15pt\tenrm\title}}
+\thirdlevelhead{\need.6in\medskip\leftline{\tenbf\levelno\enspace\title}%
+ \ctswrite{\hskip30pt\tenrm\title}}
+\fourthlevelhead{\need.5in\leftline{\tenrm\levelno\enspace\title}%
+ \ctswrite{\hskip45pt\tenrm\title}}
+
+% CONTENTS FILE MACROS
+%
+\newwrite\cnts@
+\newif\ifnocts@\nocts@true
+\newtoks\topofcontents
+\newtoks\botofcontents
+\let\content@=\let% % NOTE 96
+\def\ctswrite#1{\ifnocts@\openout\cnts@=\jobname*[*]. \nocts@false\fi% NOTE 97
+ {\def\_{\kern.06em \vbox{\hrule width.3em}}\let\the=0
+ \edef\a@{\write\cnts@{\content@{#1}{\the\pageno}}}\a@}}
+{\catcode`\@=12 \gdef\content@ #1#2{\need.5in\lline{#1\dotfil#2}}}
+\def\contents{\ifnocts@\else\closeout\cnts@\null\supereject % NOTE 98
+ \begingroup\pageno\m@ne\null\the\topofcontents\input\jobname*.
+ \the\botofcontents\eject\endgroup\nocts@true\fi}
+\topofcontents{\noheading\vskip1in plus1fil
+ \centerline{\fourteenbf Table of Contents}\vskip1in plus1fil}
+\botofcontents{\vfil}
+
+% FOOTNOTES AND INSERTIONS
+%
+\def\vfootnote#1{\insert\footins\bgroup % NOTE 99
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
+ \realhsize\leftskip\z@skip \rightskip\z@skip
+ \baselineskip1\baselineskip
+ \textindent{#1}\footstrut\futurelet\next\fo@t}
+
+\newcount\notenumber
+\def\resetnotes{\global\notenumber=0 }
+\def\note{\global\inc\notenumber\footnote{$^{\the\notenumber}$}} % NOTE 100
+\def\midinsert{\@midtrue\p@gefalse\@ins} % NOTE 101
+\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup\realhsize\divide\vsize\nocol@}
+ % NOTE 102
+\def\endinsert{\egroup\count@-100 % finish the \vbox % NOTE 103
+ \ifp@ge\else\dimen@\ht\z@\advance\dimen@\dp\z@
+ \advance\dimen@12\p@\multiply\dimen@-\nocol@
+ \advance\dimen@-\pagetotal\advance\dimen@\pagegoal
+ \ifdim\dimen@<\z@\@midfalse\else\count@100 \fi\fi
+ \if@mid \balance@
+ \global\setbox\contrb@\vbox{\unvbox\contrb@\bigskip\box\z@}\newtotal@
+ \else\insert\topins{\penalty\count@ % floating insertion
+ \splittopskip\z@skip\splitmaxdepth\maxdimen\floatingpenalty\z@
+ \ifp@ge \divide\vsize\nocol@ \dimen@\dp\z@
+ \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
+ \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}
+
+% COLUMN MACROS % NOTE 104
+%
+\def\BEGINtwocolumns{\multicol@\tw@}
+\def\BEGINthreecolumns{\multicol@\thr@@}
+\def\ENDtwocolumns{\balance@\goal@\divide\endgroup\newtotal@\begingroup}
+\let\ENDthreecolumns=\ENDtwocolumns
+\def\balance{\balance@\newtotal@} % NOTE 105
+\def\balance@{\par{\let\ifreal@=\iffalse\eject}} % NOTE 106
+\def\newtotal@{{\each@{\the\toks\count@} % NOTE 107
+ \ifold@\insert\hacker@{}\prevtotal@\pagetotal-\dimen@\fi}}
+\def\multicol@#1{\ifnum\nocol@>\@ne\errset{You can't have columns % NOTE 108
+ within columns. \string\start{\blockname@} ignored}\endgroup
+ \else\balance@\nocol@=#1\goal@\multiply\advance\hsize\columnspace
+ \divide\hsize#1\advance\hsize-\columnspace
+ \multiply\vsize#1\brokenpenalty\z@
+ \each@{\multiply\count\count@\nocol@\multiply\skip\count@\nocol@}%
+ \newtotal@\global\dimen@=\baselineskip\baselineskip\dimen@ plus\dimen@\fi}
+
+\message{output routines}
+
+% OUTPUT ROUTINES % NOTE 109
+%
+\newbox\contrb@ \newbox\out@
+\newdimen\columnspace
+\columnspace=.5in
+\let\ifreal@=\iftrue
+\newcount\nocol@ \nocol@=1
+\newinsert\hacker@
+\def\ifold@{\ifvoid\contrb@\else}
+\def\ifcol@{\ifnum\nocol@=\@ne\setbox\out@=\box\@cclv \else}
+\def\setboxA@{\inc\cntA@\setbox\cntA@}
+\def\boxA@{\inc\cntA@\box\cntA@}
+\def\each@#1{\for\count@=\count19 to254 do{#1}}
+\def\unglue@#1{\setbox#1=\vbox{\unvbox#1}}
+\def\realhsize{\advance\hsize\columnspace\multiply\hsize\nocol@
+ \advance\hsize-\columnspace}
+\output{\hpoutput}
+
+\def\hpoutput{\splittopskip=\topskip
+ \setbox\hacker@=\box\voidb@x
+ \ifvoid\contrb@\dimen@=\ht\@cclv
+ \else\prevtotal@\advance\dimen@\ht\@cclv\fi
+ \ifreal@\realoutput@\else\fakeoutput@\fi
+ \each@{\global\toks\count@\ifvoid\count@{}\else{\insert\count@{}}\fi}}
+
+\def\realoutput@{\ifcol@\splitcol@\split@\setheight@\setout@ % NOTE 110
+ \unvbox\@cclv \penalty\outputpenalty\fi
+ \setbox\@cclv=\pagestuff@{}\each@{\divide\skip\count@\nocol@}%
+ \realhsize\divide\vsize\nocol@\leftskip\z@\rightskip\z@
+ \plainoutput\global\empty@true
+ \global\count\lpcount@=\nextlp@\ifnum\nextlp@>32 \global\nextlp@\z@\fi}
+
+\def\fakeoutput@{\unglue@{\@cclv}\global\let\ifreal@=\iftrue % NOTE 111
+ \ifcol@\dimen@=\baselineskip
+ \dimen@=\ifnum\nocol@>2 2\dimen@ \else 1.1667\dimen@ \fi
+ \advance\dimen@\ht\@cclv\splitcol@{\box\@cclv}\setmax@\setout@\fi
+ \dimen@=\dp\out@\global\setbox\contrb@=\pagestuff@{\vskip-\dimen@}}
+
+\def\makeheadline{\vbox to\z@{\vskip-22.5\p@
+ \lline{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
+\def\makefootline{\baselineskip24\p@\lline{\the\footline}}
+
+\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
+ \unvbox\@cclv % open up \box255
+ \ifvoid\footins\else % footnote info is present
+ \vskip\skip\footins
+ \footnoterule
+ \unvbox\footins\fi
+ \ifr@ggedbottom\vfil\fi}
+
+\def\splitcol@#1{\divide\dimen@\nocol@\cntA@=\count14
+ \for\count@=\tw@ to\nocol@ do{\setboxA@=\split@}\setboxA@=#1}
+\def\split@{\ifvoid\@cclv\vbox{\lline\hfil\vfil}\else\vsplit\@cclv to\dimen@\fi}
+\def\setheight@{\ifold@\setmax@\fi}
+\def\pagestuff@#1{\vbox{\ifold@\unvbox\contrb@\medskip\fi\unvbox\out@#1}}
+\def\setout@{\cntA@=\count14 \setbox\out@=\vbox{\hbox
+ {\for\count@=\tw@ to\nocol@ do{\boxA@\hskip\columnspace}\boxA@}}}
+\def\setmax@{\dimen@=\z@ \cntA@=\count14
+ \for\count@=\@ne to\nocol@ do{\inc\cntA@\unglue@{\cntA@}%
+ \ifdim\ht\cntA@>\dimen@ \dimen@=\ht\cntA@\fi}%
+ \for\count@=\@ne to\nocol@ do{\setbox\cntA@
+ =\vbox to\dimen@{\unvbox\cntA@\ifr@ggedbottom\vss\fi}\dec\cntA@}}
+\def\prevtotal@{\dimen@=\medskipamount
+ \advance\dimen@\ht\contrb@\multiply\dimen@-\nocol@}
+\def\goal@#1{\ifdim\pagegoal=\maxdimen\else
+ \dimen@=\pagegoal#1\dimen@\nocol@\pagegoal\dimen@\fi}
+
+
+\catcode`@=12 % NOTE 112
+
diff --git a/obsolete/macros/hptex/macroshc.tex b/obsolete/macros/hptex/macroshc.tex
new file mode 100644
index 0000000000..706a8c3439
--- /dev/null
+++ b/obsolete/macros/hptex/macroshc.tex
@@ -0,0 +1,897 @@
+% THIS IS FILE MACROSHC
+%
+% *** Source file for hard copy of HP TEX Macro Package ***
+% Copyright 1984 Hewlett-Packard Co.
+%
+%\lpdef{1,1in,1.34in,P}
+%\vsize52pc
+%\hsize39pc
+\def\evenheading{\vbox{\hbox to \hsize{\eightrm Page \folio\hfil\HPTEX}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+\def\oddheading{\vbox{\hbox to \hsize{\eightrm The \HPTEX\
+ Macros\hfil Page \folio}
+ \nointerlineskip\vskip2pt
+ \hbox{\vrule width \hsize height .4pt}}}
+\def\noheading{\hfil}
+\headline{\ifnum\pageno=1\noheading
+ \else\ifodd\pageno\oddheading
+ \else\evenheading\fi\fi}
+\centerfooting{}
+
+\def\\{\char '134}
+\def\lftbr{\char '173}
+\def\rtbr{\char '175}
+
+\null
+\vskip.5in
+\centerline{\twelvebf THE \HPTEX\ MACROS}\footnote{}{\eightrm\copyright 1984
+ Hewlett-Packard Co.}
+\vskip1in
+
+\start{verbatim}
+\tentt
+
+\% This is the HP TeX text format version A.00.00 as of Feb. 14, 1984.
+\% It is compatible with the plain TeX format that's described in The TeXbook.
+\%
+\% NOTE 1, NOTE 2, etc. refer to notes in the file HPTEXDOC
+\%
+
+\\input PLAIN.TEXT \% NOTE 1
+
+\\message{\lftbr}Preloading the HP TeX codes,{\rtbr}
+
+\% SPECIAL CATCODES
+\%
+\\catcode`@=11 \% NOTE 2
+
+\% HPTEX
+\%
+\\def\\HPTEX{\lftbr}HP\\nobreak\\ \\TeX{\rtbr}
+\\let\\HpTeX=\\HPTEX
+\\def\\fmtname{\lftbr}HP TeX{\rtbr}\\def\\fmtversion{\lftbr}A.00.00{\rtbr}
+
+\% LEADERS
+\%
+\\def\\dotfil{\lftbr}\\tenrm\\leaders\\hbox to8\\p@{\lftbr}\\hss.\\hss{\rtbr}\\h
+
+\% CONSTANT VALUES
+\%
+\\chardef\\zer@=0
+\\chardef\\f@ur=4
+\\skipdef\\skip@ii=2
+\\maxdepth=2pt
+
+\\message{\lftbr}fonts,{\rtbr}
+
+\% FONTS \% NOTE 4
+\%
+\\let\\fontcheck=1 \% NOTE
+\\def\\fontdef#1=#2 {\lftbr}\\def#1{\lftbr}\\font@{\lftbr}#1{\rtbr}{\lftbr}#2{\r
+\\def\\font@#1#2{\lftbr}{\lftbr}\\let\\fontcheck=0\\ifx0\\fontcheck\\egroup\\glo
+ \\else{\rtbr}\\string#1 \\fi{\rtbr}\%--The space after \\string#1 is necessa
+
+\% ROMAN TEXT
+\%
+\\fontdef\\twentyfourrm={\lftbr}amr10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteenrm={\lftbr}amr10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteenrm={\lftbr}amr10 scaled \\magstep2{\rtbr}
+\\font\\twelverm=amr10 scaled \\magstep1
+\%\\font\\tenrm=amr10
+\\font\\ninerm=amr9
+\\font\\eightrm=amr8
+\%\\font\\sevenrm=amr7
+\\font\\sixrm=amr6
+\%\\font\\fiverm=amr5
+
+\% MATH ITALIC
+\%
+\\fontdef\\twentyfouri={\lftbr}ammi10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteeni={\lftbr}ammi10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteeni={\lftbr}ammi10 scaled \\magstep2{\rtbr}
+\\fontdef\\twelvei={\lftbr}ammi10 scaled \\magstep1{\rtbr}
+\%\\font\\teni=ammi10
+\\fontdef\\ninei={\lftbr}ammi9{\rtbr}
+\\fontdef\\eighti={\lftbr}ammi8{\rtbr}
+\%\\font\\seveni=ammi7
+\\fontdef\\sixi={\lftbr}ammi6{\rtbr}
+\%\\font\\fivei=ammi5
+
+\% MATH SYMBOLS
+\%
+\\fontdef\\twentyfoursy={\lftbr}amsy10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteensy={\lftbr}amsy10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteensy={\lftbr}amsy10 scaled \\magstep2{\rtbr}
+\\fontdef\\twelvesy={\lftbr}amsy10 scaled \\magstep1{\rtbr}
+\%\\font\\tensy=amsy10
+\\fontdef\\ninesy={\lftbr}amsy9{\rtbr}
+\\fontdef\\eightsy={\lftbr}amsy8{\rtbr}
+\%\\font\\sevensy=amsy7
+\\fontdef\\sixsy={\lftbr}amsy6{\rtbr}
+\%\\font\\fivesy=amsy5
+
+\% BOLD MATH SYMBOLS
+\%
+\\fontdef\\tenbfsy={\lftbr}ambsy10{\rtbr}
+
+\% MATH EXTENSION
+\%
+\%\\font\\tenex=amex10
+
+\% SANS SERIF
+\%
+\\fontdef\\fourteenss={\lftbr}amss10 scaled \\magstep2{\rtbr}
+\\fontdef\\twelvess={\lftbr}amss10 scaled \\magstep1{\rtbr}
+\\font\\tenss=amss10
+\\font\\eightss=amssq8
+
+\% SANS SERIF ITALIC
+\%
+\\font\\tenitss=amssi10
+\\font\\eightitss=amssqi8
+
+\% BOLDFACE EXTENDED
+\%
+\\fontdef\\twentyfourbf={\lftbr}ambx10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteenbf={\lftbr}ambx10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteenbf={\lftbr}ambx10 scaled \\magstep2{\rtbr}
+\\font\\twelvebf=ambx10 scaled \\magstep1
+\%\\font\\tenbf=ambx10
+\\font\\ninebf=ambx9
+\\font\\eightbf=ambx8
+\%\\font\\sevenbf=ambx7
+\\font\\sixbf=ambx6
+\%\\font\\fivebf=ambx5
+
+\% TYPEWRITER
+\%
+\\fontdef\\twentyfourtt={\lftbr}amtt10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteentt={\lftbr}amtt10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteentt={\lftbr}amtt10 scaled \\magstep2{\rtbr}
+\\fontdef\\twelvett={\lftbr}amtt10 scaled \\magstep1{\rtbr}
+\%\\font\\tentt=amtt10
+\\font\\ninett=amtt9
+\\font\\eighttt=amtt8
+
+\% SLANTED TYPEWRITER
+\%
+\\font\\tensltt=amsltt10
+
+\% SLANTED ROMAN
+\%
+\\fontdef\\twentyfoursl={\lftbr}amsl10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteensl={\lftbr}amsl10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteensl={\lftbr}amsl10 scaled \\magstep2{\rtbr}
+\\fontdef\\twelvesl={\lftbr}amsl10 scaled \\magstep1{\rtbr}
+\%\\font\\tensl=amsl10
+\\font\\ninesl=amsl9
+\\font\\eightsl=amsl8
+
+\% TEXT ITALIC
+\%
+\\fontdef\\twentyfourit={\lftbr}amti10 scaled \\magstep5{\rtbr}
+\\fontdef\\eighteenit={\lftbr}amti10 scaled \\magstep3{\rtbr}
+\\fontdef\\fourteenit={\lftbr}amti10 scaled \\magstep2{\rtbr}
+\\fontdef\\twelveit={\lftbr}amti10 scaled \\magstep1{\rtbr}
+\%\\font\\tenit=amti10
+\\font\\nineit=amti9
+\\font\\eightit=amti8
+\\fontdef\\sevenit={\lftbr}amti7{\rtbr}
+
+\% UNSLANTED TEXT ITALIC
+\%
+\\font\\tenuit=amu10
+
+\% CAPS AND SMALL CAPS
+\%
+\\font\\tencsc=amcsc10
+
+\% SANS SERIF BOLD EXTENDED
+\%
+\\font\\tenbfss=amssbx10
+
+\% BOLD EXTENDED SLANTED
+\%
+\\font\\tenslbf=ambxsl10
+
+\% DUNHILL STYLE
+\%
+\\font\\tendh=amdunh10
+
+\% FOR TITLES
+\%
+\\font\\titlefont=amr7 scaled \\magstep4
+
+\% BIG FONT
+\%
+\\font\\bigfont=amssbx10 scaled \\magstep2
+
+\\message{\lftbr}macros,{\rtbr}
+
+\% MACROS TO SET FSTYLE \% NOTE 7
+\%
+\\def\\rm{\lftbr}\\fam\\z@\\def\\fstyle{\lftbr}rm{\rtbr}\\setfont{\rtbr}
+\\def\\it{\lftbr}\\fam\\itfam\\def\\fstyle{\lftbr}it{\rtbr}\\setfont{\rtbr}
+\\def\\bf{\lftbr}\\fam\\bffam\\def\\fstyle{\lftbr}bf{\rtbr}\\setfont\\ifmmode{\l
+ \\textfont2=\\tenbfsy\\fi{\rtbr}
+\\def\\sl{\lftbr}\\fam\\slfam\\def\\fstyle{\lftbr}sl{\rtbr}\\setfont{\rtbr}
+\\def\\sa{\lftbr}\\def\\fstyle{\lftbr}ss{\rtbr}\\setfont{\rtbr}
+\\def\\tt{\lftbr}\\fam\\ttfam\\def\\fstyle{\lftbr}tt{\rtbr}\\setfont{\rtbr}
+
+\\newfam\\ssfam
+
+\vfil\goodbreak
+\% MACROS TO SET FSIZE \% NOTE 8
+\%
+\\def\\fivepoint{\lftbr}\\def\\fsize{\lftbr}five{\rtbr}\\setfont\\let\\sfont=\\f
+ \\baselineskip7pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height4.5pt depth1.5pt w
+ \\textfont0=\\fiverm \\scriptfont0=\\fiverm\%
+ \\scriptscriptfont0=\\fiverm\%
+ \\textfont1=\\fivei \\scriptfont1=\\fivei\%
+ \\scriptscriptfont1=\\fivei\%
+ \\textfont2=\\fivesy \\scriptfont2=\\fivesy\%
+ \\scriptscriptfont2=\\fivesy{\rtbr}
+\vfil\goodbreak
+
+\\def\\sixpoint{\lftbr}\\def\\fsize{\lftbr}six{\rtbr}\\setfont\\let\\sfont=\\fiv
+ \\baselineskip8pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height5pt depth2pt width
+ \\textfont0=\\sixrm \\scriptfont0=\\fiverm\%
+ \\scriptscriptfont0=\\fiverm\%
+ \\scriptfont1=\\fivei \\scriptscriptfont1=\\fivei\%
+ \\scriptfont2=\\fivesy \\scriptscriptfont2=\\fivesy\%
+ \\def\\changes{\lftbr}{\lftbr}\\sixi\\sixsy{\rtbr}\%
+ \\textfont1=\\sixi \\textfont2=\\sixsy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes
+ \\everydisplay{\lftbr}\\changes{\rtbr}\\fi{
+\vfil\goodbreak
+
+\\def\\sevenpoint{\lftbr}\\def\\fsize{\lftbr}seven{\rtbr}\\setfont\\let\\sfont=\
+ \\baselineskip9pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height6pt depth2pt wi
+ \\textfont0=\\sevenrm \\scriptfont0=\\sixrm\%
+ \\scriptscriptfont0=\\fiverm\%
+ \\textfont1=\\seveni \\scriptscriptfont1=\\fivei\%
+ \\textfont2=\\sevensy \\scriptscriptfont2=\\fivesy\%
+ \\def\\changes{\lftbr}{\lftbr}\\sixi\\sixsy{\rtbr}\%
+ \\scriptfont1=\\sixi\%
+ \\scriptfont2=\\sixsy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\rtbr}\%
+ \\everydisplay{\lftbr}\\changes{\
+\vfil\goodbreak
+
+\\def\\eightpoint{\lftbr}\\def\\fsize{\lftbr}eight{\rtbr}\\setfont\\let\\sfont=\
+ \\baselineskip9pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height7pt depth2pt wi
+ \\textfont0=\\eightrm \\scriptfont0=\\sixrm\%
+ \\scriptscriptfont0=\\fiverm\%
+ \\scriptscriptfont1=\\fivei\%
+ \\scriptscriptfont2=\\fivesy\%
+ \\def\\changes{\lftbr}{\lftbr}\\eighti\\sixi\\eightsy\\sixsy{\
+ \\textfont1=\\eighti \\scriptfont1=\\sixi\%
+ \\textfont2=\\eightsy \\scriptfont2=\\sixsy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\rtbr}\%
+ \\everydisplay{\lftbr}\\changes{\rtbr}\\fi{\r
+\vfil\goodbreak
+
+\\def\\ninepoint{\lftbr}\\def\\fsize{\lftbr}nine{\rtbr}\\setfont\\let\\sfont=\\s
+ \\baselineskip11pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height8pt depth3pt wi
+ \\textfont0=\\ninerm \\scriptfont0=\\sevenrm\%
+ \\scriptscriptfont0\\fiverm\%
+ \\scriptfont1=\\seveni \\scriptscriptfont1\\fivei\%
+ \\scriptfont2=\\sevensy \\scriptscriptfont2\\fivesy\%
+ \\def\\changes{\lftbr}{\lftbr}\\ninei\\ninesy{\rtbr}\%
+ \\textfont1=\\ninei\%
+ \\textfont2=\\ninesy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\
+ \\everydisplay{\lftbr}\\changes{\rtbr}\\fi{\
+\vfil\goodbreak
+
+\\def\\tenpoint{\lftbr}\\def\\fsize{\lftbr}ten{\rtbr}\\setfont\\let\\sfont=\\sev
+ \\baselineskip12pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height8.5pt depth3.5pt
+ \\textfont0=\\tenrm \\scriptfont0=\\sevenrm\%
+ \\scriptscriptfont0\\fiverm\%
+ \\textfont1=\\teni \\scriptfont1=\\seveni\%
+ \\scriptscriptfont1\\fivei\%
+ \\textfont2=\\tensy \\scriptfont2=\\sevensy\%
+ \\scriptscriptfont2\\fivesy{\rtbr}
+\vfil\goodbreak
+
+\\def\\twelvepoint{\lftbr}\\def\\fsize{\lftbr}twelve{\rtbr}\\setfont\\let\\sfont
+ \\baselineskip14pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height10pt depth4pt w
+ \\textfont0=\\twelverm \\scriptfont0=\\ninerm\%
+ \\scriptscriptfont0=\\sevenrm\%
+ \\scriptscriptfont1=\\seveni\%
+ \\scriptscriptfont2=\\sevensy\%
+ \\def\\changes{\lftbr}{\lftbr}\\twelvei\\ninei\\twelvesy\\nine
+ \\textfont1=\\twelvei \\scriptfont1=\\ninei\%
+ \\textfont2=\\twelvesy \\scriptfont2=\\ninesy{\rtbr}\
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\rtbr}\%
+ \\everydisplay{\lftbr}\\changes{\rtbr}\\fi{
+\vfil\goodbreak
+
+\\def\\fourteenpoint{\lftbr}\\def\\fsize{\lftbr}fourteen{\rtbr}\\setfont\\let\\s
+ \\baselineskip16pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height12pt depth4pt width0pt{\rtbr
+ \\scriptfont0=\\tenrm \\scriptscriptfont0=\\sevenrm\%
+ \\scriptfont1=\\teni \\scriptscriptfont1=\\seveni\%
+ \\scriptfont2=\\tensy \\scriptscriptfont2=\\sevensy\%
+ \\def\\changes{\lftbr}{\lftbr}\\fourteeni\\fourteenrm\\fourteensy{\rtbr}\%
+ \\textfont0=\\fourteenrm\%
+ \\textfont1=\\fourteeni\%
+ \\textfont2=\\fourteensy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\rtbr}\\everydisplay{\
+\vfil\goodbreak
+
+\\def\\eighteenpoint{\lftbr}\\def\\fsize{\lftbr}eighteen{\rtbr}\\setfont\\let\\s
+ \\baselineskip18pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height15pt depth3pt width0pt{\rtb
+ \\scriptfont0=\\twelverm \\scriptscriptfont0=\\tenrm\%
+ \\scriptscriptfont1=\\teni\%
+ \\scriptscriptfont2=\\tensy\%
+ \\def\\changes{\lftbr}{\lftbr}\\eighteenrm\\eighteeni\\twelvei\\eighteensy
+ \\textfont0=\\eighteenrm\%
+ \\textfont1=\\eighteeni \\scriptfont1=\\twelvei\%
+ \\textfont2=\\eighteensy \\scriptfont2=\\twelvesy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\rtbr}\%
+ \\everydisplay{\lftbr}\\changes{\rtbr}\\fi{\rtbr}
+\vfil\goodbreak
+
+\\def\\twentyfourpoint{\lftbr}\\def\\fsize{\lftbr}twentyfour{\rtbr}\\setfont\\le
+ \\baselineskip24pt\%
+ \\setbox\\strutbox=\\hbox{\lftbr}\\vrule height21.5pt depth2.5pt width0pt{
+ \\def\\changes{\lftbr}{\lftbr}\\twentyfourrm\\eighteenrm\\fourteenrm\\twen
+ \\eighteeni\\fourteeni\\twentyfoursy\\eighteensy\\fourteensy
+ \\textfont0=\\twentyfourrm \\scriptfont0=\\eighteenrm \%
+ \\scriptscriptfont0=\\fourteenrm\%
+ \\textfont1=\\twentyfouri \\scriptfont1=\\eighteeni\%
+ \\scriptscriptfont1=\\fourteeni\%
+ \\textfont2=\\twentyfoursy \\scriptfont2=\\eighteensy\%
+ \\scriptscriptfont2=\\fourteensy{\rtbr}\%
+ \\ifmmode\\changes\\else\\everymath{\lftbr}\\changes{\rtbr}\\everydisplay
+
+\vfil\goodbreak
+\% MACROS TO SET CURRENT FONT USING FSTYLE AND FSIZE
+\%
+\\newif\\ifnofont@
+\\def\\tryfont#1{\lftbr}\\expandafter\\ifx\\csname#1\\endcsname\\relax\\nofont@t
+ \\else\\nofont@false\\csname#1\\endcsname\\fi{\rtbr}
+\\def\\setfont{\lftbr}\\tryfont{\lftbr}\\ffam\\fsize\\fstyle{\rtbr}\%
+ \\ifnofont@\\tryfont{\lftbr}\\ffam\\fsize rm{\rtbr}\%
+ \\ifnofont@\\tryfont{\lftbr}\\ffam tenrm{\rtbr}\%
+ \\ifnofont@\\tenrm\\fi\\fi\\expandafter
+ \\fonterr\\csname\\ffam\\fsize\\fstyle\\endcsname{\lftbr}\\the\\font{\rtbr}\
+\\def\\fonterr#1#2{\lftbr}\\immediate\\write\\m@ne{\lftbr}! font #1is undefined,
+ I'm using #2instead.{\rtbr}\\xdef#1{\lftbr}#2{\rtbr}{\rtbr}
+
+\% DEFAULTS \% NOTE 1
+\%
+\\fam\\z@\\tenrm\\def\\ffam{\lftbr}{\rtbr}\\def\\fstyle{\lftbr}rm{\rtbr}\\def\\f
+
+\% LINE MACROS \% NOTE 1
+\%
+\\def\\lline#1{\lftbr}\\hbox to\\hsize{\lftbr}\\hskip\\leftskip#1\\hskip\\rights
+\\def\\leftline#1{\lftbr}\\lline{\lftbr}#1\\hss{\rtbr}{\rtbr}
+\\def\\rightline#1{\lftbr}\\lline{\lftbr}\\hss#1{\rtbr}{\rtbr}
+\\def\\centerline#1{\lftbr}\\lline{\lftbr}\\hss#1\\hss{\rtbr}{\rtbr}
+
+\% MORE MACROS
+\%
+\\def\\narrow#1{\lftbr}\\advance\\leftskip#1\\advance\\rightskip#1{\rtbr}
+\\def\\narrower{\lftbr}\\narrow\\parindent{\rtbr}
+\\def\\narrow@{\lftbr}\\narrow\\inset{\rtbr}
+\\def\\inc#1{\lftbr}\\advance#1\\@ne{\rtbr}
+\\def\\dec#1{\lftbr}\\advance#1\\m@ne{\rtbr}
+\\def\\ignore#1{\lftbr}\\relax{\rtbr}
+\\def\\okbreak{\lftbr}\\par\\penalty-200{\rtbr}
+\\def\\need{\lftbr}\\afterassignment\\need@\\dimen@{\rtbr}
+\\def\\need@{\lftbr}\\vskip\\dimen@ minus\\dimen@\\okbreak\\vskip-\\dimen@ minus
+\goodbreak
+\\def\\for#1=#2to#3do#4{\lftbr}#1=#2\\ifnum#2>#3\\else\\let\\next@=\\fnext@
+ \\def\\fcount@{\lftbr}#1{\rtbr}\\def\\fexit@{\lftbr}#3{\rtbr}\\def\\floop@{\
+\goodbreak
+\\def\\fnext@{\lftbr}\\floop@\\ifnum\\fcount@<\\fexit@\\inc\\fcount@
+ \\else\\let\\next@=\\relax\\fi\\next@{\rtbr}
+\goodbreak
+\\def\\super#1{\lftbr}\\/\\raise.4em\\hbox{\lftbr}\\sfont#1{\rtbr}\\thinspace{\r
+\\def\\sub#1{\lftbr}\\lower.25em\\hbox{\lftbr}\\sfont#1{\rtbr}\\thinspace{\rtbr}
+\\def\\lbreak{\lftbr}\\hfill\\break{\rtbr}
+\goodbreak
+\\def\\uline#1{\lftbr}\\setbox0=\\hbox{\lftbr}#1{\rtbr}\\dimen@=-\\dp0\\advance\
+ \\ifvmode\\indent\\fi\\hbox to \\wd0{\lftbr}\\lower.27em
+ \\vbox{\lftbr}\\box0\\vskip\\dimen@\\hrule height.04em{\rtbr}{\rtbr}{\rtbr}
+\goodbreak
+
+\% START AND FINISH GROUP STRUCTURE \% NOTE 1
+\%
+\\def\\start#1{\lftbr}\\errfalse\\ifinvalid@{\lftbr}#1{\rtbr}\\else\\begingroup
+ \\def\\blockname@{\lftbr}#1{\rtbr}\\csname BEGIN#1\\endcsname\\fi\\Error{\rt
+\\def\\finish#1{\lftbr}\\errfalse\\ifinvalid@{\lftbr}#1{\rtbr}\\else\\matchup@{\
+\\def\\ifinvalid@#1{\lftbr}\\expandafter\\ifx\\csname BEGIN#1\\endcsname\\relax
+ \\errset{\lftbr}I don't understand {\lftbr}#1{\rtbr}, it may be misspelled{\
+\\def\\matchup@#1{\lftbr}\\def\\test@{\lftbr}#1{\rtbr}\%
+ \\expandafter\\ifx\\csname blockname@\\endcsname\\relax
+ \\errset{\lftbr}Extra \\string\\finish{\lftbr}\\test@{\rtbr} ignored
+ \\else\\ifx\\test@\\blockname@\\done
+ \\else\\errset{\lftbr}Missing \\string\\finish{\lftbr}\\blockname@{\rtbr} in
+ \\done\\matchup@{\lftbr}#1{\rtbr}\\fi\\fi{\rtbr}
+\\def\\done{\lftbr}\\csname END\\blockname@\\endcsname\\endgroup{\rtbr}
+
+\% GENERAL ERROR HANDLING \% NOTE 2
+\%
+\\def\\errfalse{\lftbr}\\global\\let\\iferr=\\iffalse{\rtbr}
+\\def\\errtrue{\lftbr}\\global\\let\\iferr=\\iftrue{\rtbr}
+\\def\\errset#1{\lftbr}\\iferr\\immediate\\write0{\lftbr}! \\error{\rtbr}\\else\
+\\def\\Error{\lftbr}\\iferr\\errmessage{\lftbr}\\error{\rtbr}\\fi{\rtbr}
+
+\% DATE AND TIME MACROS
+\%
+\\newcount\\cntA@\\newcount\\cntB@\\newcount\\cntC@
+\\def\\mon{\lftbr}\\ifcase\\month\\relax\\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{\rtbr}
+\\def\\date{\lftbr}\\mon\\nobreak\\ \\number\\day, \\number\\year{\rtbr}
+\goodbreak
+\\def\\hour{\lftbr}{\lftbr}\\cntA@=\\time \\cntB@=\\cntA@
+ \\divide\\cntA@60 \\cntC@=\\cntA@ \\multiply\\cntC@60
+ \\advance\\cntB@-\\cntC@\\ifnum\\cntA@>11
+ \\advance\\cntA@-12 \\def\\time@{\lftbr}PM{\rtbr}\\else\\def\\time@{\lftbr}A
+ \\ifnum\\cntA@=0 \\cntA@=12 \\fi\\number\\cntA@
+ :\\ifnum\\cntB@<10 0\\fi\\number\\cntB@\\nobreak\\ \\time@{\rtbr}{\rtbr}
+
+\% INDENTSTYLE
+\%
+\\newdimen\\indentsize\\indentsize=20pt
+\\newif\\ifindent\\indenttrue \% NOTE
+\\def\\indentstyle{\lftbr}\\parindent\\indentsize
+ \\ifindent\\else\\indenttrue\\advance\\parskip-5\\p@\\fi{\rtbr}
+\\def\\noindentstyle{\lftbr}\\parindent\\z@
+ \\ifindent\\indentfalse\\advance\\parskip5\\p@\\fi{\rtbr}
+\\def\\indentspace{\lftbr}\\afterassignment\\indent@\\indentsize{\rtbr}
+\\def\\indent@{\lftbr}\\ifindent\\parindent\\indentsize\\fi{\rtbr}
+\\newdimen\\inset
+\\inset.5in
+\\def\\BEGINindent{\lftbr}\\advance\\leftskip \\inset{\rtbr}
+\\let\\ENDindent=\\par
+
+\% RAGGED MARGIN AND JUSTIFIED MARGIN MACROS
+\%
+\\def\\fixmargin@{\lftbr}\\dimen@=\\rightskip\\rightskip=\\dimen@{\rtbr}
+\\def\\justify{\lftbr}\\fixmargin@\\spaceskip\\z@\\xspaceskip\\z@{\rtbr}
+\\def\\raggedright{\lftbr}\\fixmargin@\\advance\\rightskip\\z@ plus2em
+ \\ifx\\fstyle\\tt@\\else\\spaceskip.3333em\\xspaceskip.5em\\fi{\rtbr}
+\\def\\tt@{\lftbr}tt{\rtbr}
+
+\% ITEM AND SUBITEM MACROS
+\%
+\\newcount\\icount@\\newcount\\scount@
+\\newcount\\idigit@\\newcount\\sdigit@
+\\def\\itemset@#1#2#3{\lftbr}\\dimen@=\\hsize \\advance\\dimen@-#2\\inset
+ \\parshape=\\@ne#1\\inset\\dimen@\\noindent
+ \\hbox to\\z@{\lftbr}\\hss#3\\enspace{\rtbr}\\ignorespaces{\rtbr}
+\\def\\itemlist#1{\lftbr}\\medskip\\resetsubitems\\itemset@\\@ne\\tw@{\lftbr}#1{
+\\def\\subitem#1{\lftbr}\\smallskip\\itemset@\\tw@\\f@ur{\lftbr}#1{\rtbr}{\rtbr}
+\\def\\itempar{\lftbr}\\smallskip\\itemset@\\@ne\\tw@\\empty{\rtbr}
+\\def\\subitempar{\lftbr}\\subitem\\empty{\rtbr}
+\\def\\enditems{\lftbr}\\bigskip\\resetitems{\rtbr}
+
+\% ITEMTAG AND SUBITEMTAG MACROS \% NOTE 41
+\%
+\\def\\square{\lftbr}\\hbox{\lftbr}\\hskip.5pt\\vrule height.4em width.4em depth
+\\def\\dott{\lftbr}$\\bullet${\rtbr}
+\\def\\emdash{\lftbr}---{\rtbr}
+\\def\\itemn@#1{\lftbr}\\number#1\\global\\inc#1{\rtbr}
+\\def\\itemr@#1{\lftbr}\\romannumeral#1\\global\\inc#1{\rtbr}
+\\def\\itemR@#1{\lftbr}\\uppercase\\expandafter{\lftbr}\\romannumeral#1{\rtbr}\\
+\goodbreak
+\\def\\iteml@#1#2{\lftbr}{\lftbr}\\loop\\char#1\\ifnum#2>\\@ne\\dec#2\\repeat{\r
+ \\ifnum#1>122 \\global#1=97 \\global\\inc#2\\fi \\ifnum#1=91 \\global#1=65
+ \\global\\inc#2\\fi{\rtbr}
+ \\def\\item@ #1,#2,#3{\lftbr}\\def\\itemtag{\lftbr}#3{\rtbr}\%
+ \\def\\resetitems{\lftbr}\\global\\icount@=#1\\global\\idigit@=#2{\rtbr}\\res
+\\outer\\def\\numbereditems{\lftbr}\\item@ 1,0,{\lftbr}\\itemn@\\icount@{\rtbr}{
+\\outer\\def\\lettereditems{\lftbr}\\item@ 97,1,{\lftbr}\\iteml@\\icount@\\idigi
+\\outer\\def\\Lettereditems{\lftbr}\\item@ 65,1,{\lftbr}\\iteml@\\icount@\\idigi
+\\outer\\def\\romanitems{\lftbr}\\item@ 1,0,{\lftbr}\\itemr@\\icount@{\rtbr}{\rt
+\\outer\\def\\Romanitems{\lftbr}\\item@ 1,0,{\lftbr}\\itemR@\\icount@{\rtbr}{\rt
+\\outer\\def\\squareditems{\lftbr}\\let\\itemtag=\\square\\let\\resetitems=\\rel
+\\outer\\def\\dotteditems{\lftbr}\\let\\itemtag=\\dott\\let\\resetitems=\\relax{
+\\outer\\def\\dasheditems{\lftbr}\\let\\itemtag=\\emdash\\let\\resetitems=\\rela
+\\def\\itm{\lftbr}\\itemlist{\lftbr}\\tenrm\\itemtag\\ifx\\relax\\resetitems\\el
+
+\\def\\subitem@ #1,#2,#3{\lftbr}\\def\\subitemtag{\lftbr}#3{\rtbr}\%
+ \\def\\resetsubitems{\lftbr}\\global\\scount@=#1\\global\\sdigit@=#2{\rtbr}\
+\\outer\\def\\numberedsubitems{\lftbr}\\subitem@ 1,0,{\lftbr}\\itemn@\\scount@{\
+\\outer\\def\\letteredsubitems{\lftbr}\\subitem@ 97,1,{\lftbr}\\iteml@\\scount@\
+\\outer\\def\\Letteredsubitems{\lftbr}\\subitem@ 65,1,{\lftbr}\\iteml@\\scount@\
+\\outer\\def\\romansubitems{\lftbr}\\subitem@ 1,0,{\lftbr}\\itemr@\\scount@{\rtb
+\\outer\\def\\Romansubitems{\lftbr}\\subitem@ 1,0,{\lftbr}\\itemR@\\scount@{\rtb
+\\outer\\def\\squaredsubitems{\lftbr}\\let\\subitemtag=\\square\\let\\resetsubit
+\\outer\\def\\dottedsubitems{\lftbr}\\let\\subitemtag=\\dott\\let\\resetsubitems
+\\outer\\def\\dashedsubitems{\lftbr}\\let\\subitemtag=\\emdash\\let\\resetsubite
+\\def\\sitm{\lftbr}\\subitem{\lftbr}\\tenrm\\subitemtag\\ifx\\relax\\resetsubite
+ \% NOTE 49
+\\numbereditems\\letteredsubitems \% NOTE
+
+\% NOTE AND WARNING MACROS
+\%
+\\def\\BEGINnote{\lftbr}\\bigskip\\narrow@\\narrow@\\nobreak{\rtbr}
+\\let\\ENDnote=\\bigskip
+\\def\\BEGINwarning{\lftbr}\\bigskip\\nobreak\\narrow@\\narrow@\\marginrule.0266
+ \\nobreak\\medskip\\nobreak{\rtbr}
+\\def\\ENDwarning{\lftbr}\\nobreak\\medskip\\nobreak\\marginrule.02667in \\bigsk
+\\def\\marginrule#1 {\lftbr}\\nointerlineskip\\vbox to#1{\lftbr}\\vss
+ \\lline{\lftbr}\\leaders\\hrule height#1\\hss{\rtbr}{\rtbr}{\rtbr}
+
+
+\% VERBATIM MODE \% NOTE 5
+\%
+\\newskip\\blanksize@
+\\bgroup\\catcode`\\*=3 \\catcode`\\$=13 \\catcode`\\#=13
+ \\catcode`\\^=13 \\catcode`\\_=13 \\catcode`\\|=13 \\catcode`\\~=13
+\goodbreak
+\\gdef\\BEGINverbatim{\lftbr}\\parskip=0pt plus1pt
+ \\catcode`\\$=13 \\def${\lftbr}\\indent\\hbox to \\the\\fontdimen\\tw@\\the\
+ {\lftbr}\\hss\\$\\hss{\rtbr}{\rtbr}
+ \\catcode`\\&=12
+ \\catcode`\\#=13 \\def#{\lftbr}\\indent\\hbox to \\the\\fontdimen\\tw@\\the\
+ {\lftbr}\\hss*\\#*\\hss{\rtbr}{\rtbr}
+ \\catcode`\\^=13 \\def^{\lftbr}\\indent\\hbox to \\the\\fontdimen\\tw@\\the\
+ {\lftbr}\\hss*\\mathchar"327D*\\hss{\rtbr}{\rtbr}
+ \\catcode`\\_=13 \\def_{\lftbr}\\indent\\hbox to \\the\\fontdimen\\tw@\\the\
+ {\lftbr}\\hss\\_\\hss{\rtbr}{\rtbr}
+ \\catcode`\\\%=12
+ \\catcode`\\|=13 \\def|{\lftbr}\\indent\\hbox to \\the\\fontdimen\\tw@\\the\
+ {\lftbr}\\hss*\\mathchar"326A*\\hss{\rtbr}{\rtbr}
+ \\catcode`\\~=13 \\def~{\lftbr}\\indent\\hbox to \\the\\fontdimen\\tw@\\the\
+ {\lftbr}\\hss*\\mathchar"3218*\\hss{\rtbr}{\rtbr}
+ \\parindent\\z@\\lumplines\\lumpspaces{\rtbr}
+\\egroup
+
+\% LUMPLINE AND LUMPSPACE MACROS \% NOTE 5
+\%
+{\lftbr}\\catcode`\\^^M=13 \\gdef\\lumplines{\lftbr}\\catcode`\\^^M=13 \\let^^M=
+\\def\\lumpline@{\lftbr}\\par\\skip@=\\z@\\let\\munch@=\\lumpB@\\futurelet\\lump
+\\def\\lumpA@{\lftbr}\\ifx\\lumpline@\\lump@\\advance\\skip@\\baselineskip
+ \\else\\let\\munch@=\\relax\\vskip\\skip@\\fi\\munch@{\rtbr}
+\\def\\lumpB@#1{\lftbr}\\futurelet\\lump@\\lumpA@{\rtbr}
+{\lftbr}\\catcode`\\ =13 \\gdef\\lumpspaces{\lftbr}\\catcode`\\ =13\\relax\\let
+\goodbreak
+\\def\\lumpspace@{\lftbr}\\blanksize@=\\the\\fontdimen\\tw@\\the\\font
+ \\skip@=\\z@\\let\\munch@=\\lumpb@\\futurelet\\lump@\\lumpa@{\rtbr}
+\goodbreak
+\\def\\lumpa@{\lftbr}\\advance\\skip@\\blanksize@\\ifx\\lumpspace@\\lump@
+ \\else\\let\\munch@=\\relax\\hskip\\skip@\\fi\\munch@{\rtbr}
+\\def\\lumpb@#1{\lftbr}\\futurelet\\lump@\\lumpa@{\rtbr}
+\\let\\munch@=\\relax
+
+\% PAGE CONTROL MACROS \% NOTE 5
+\%
+\\def\\newpage{\lftbr}\\balance\\ifold@\\null\\vfill\\eject\\fi{\rtbr}
+\\def\\evenpage{\lftbr}\\newpage\\ifodd\\pageno\\null\\vfill\\eject\\fi{\rtbr}
+\\def\\oddpage{\lftbr}\\newpage\\ifodd\\pageno\\else\\null\\vfill\\eject\\fi{\rt
+
+\% HEADING AND FOOTING MACROS \% NOTE 57
+\%
+\\newtoks\\leftheading \\newtoks\\leftfooting
+\\newtoks\\rightheading \\newtoks\\rightfooting
+\\newtoks\\centerheading \\newtoks\\centerfooting
+\\newtoks\\insideheading \\newtoks\\insidefooting
+\\newtoks\\outsideheading \\newtoks\\outsidefooting
+\\newtoks\\headline \\newtoks\\footline
+\goodbreak
+\\def\\buildline{\lftbr}\\let\\lft=\\zer@\\let\\rght=\\@ne
+ \\ifdim\\wd3=\\z@\\else\\ifodd\\pageno\\let\\lft=\\thr@@\\else\\let\\rght=\\
+ \\ifdim\\wd4=\\z@\\else\\ifodd\\pageno\\let\\rght=\\f@ur\\else\\let\\lft=\\f
+ \\triplehead\\lft\\tw@\\rght{\rtbr}
+\goodbreak
+\\def\\triplehead#1#2#3{\lftbr}\\skip@=1em\\skip@ii=1em
+ \\dimen@=\\wd#1\\advance\\dimen@-\\wd#3\%
+ \\ifdim\\dimen@>\\z@\\advance\\skip@ii\\dimen@ minus\\dimen@
+ \\else\\advance\\skip@-\\dimen@ minus-\\dimen@\\fi
+ {\lftbr}\\box#1\\hskip\\skip@\\hfil\\box#2\\hfil\\hskip\\skip@ii\\box#3{\rtb
+\goodbreak
+\\def\\loadbox#1#2{\lftbr}\\setbox#1=\\hbox{\lftbr}\\the#2{\rtbr}{\rtbr}
+\\newcount\\headcount\\newcount\\footcount
+\\def\\suspendheading#1{\lftbr}\\global\\headcount=#1{\rtbr}
+\\def\\suspendfooting#1{\lftbr}\\global\\footcount=#1{\rtbr}
+\\def\\noheading{\lftbr}\\suspendheading\\m@ne{\rtbr}
+\\def\\nofooting{\lftbr}\\suspendfooting\\m@ne{\rtbr}
+\\def\\resumeheading{\lftbr}\\suspendheading\\zer@{\rtbr}
+\\def\\resumefooting{\lftbr}\\suspendfooting\\zer@{\rtbr}
+\goodbreak
+\\headline{\lftbr}\\ifnum\\headcount=\\z@\\loadbox\\tw@\\centerheading
+ \\loadbox\\zer@\\leftheading\\loadbox\\@ne\\rightheading
+ \\loadbox\\thr@@\\insideheading\\loadbox\\f@ur\\outsideheading\\buildlin
+ \\else\\hfil\\ifnum\\headcount>\\z@\\global\\dec\\headcount\\fi\\fi{\rtbr}
+\goodbreak
+\\footline{\lftbr}\\ifnum\\footcount=\\z@\\loadbox\\tw@\\centerfooting
+ \\loadbox\\zer@\\leftfooting\\loadbox\\@ne\\rightfooting
+ \\loadbox\\thr@@\\insidefooting\\loadbox\\f@ur\\outsidefooting\\buildlin
+ \\else\\hfil\\ifnum\\footcount>\\z@\\global\\dec\\footcount\\fi\\fi{\rtbr}
+\goodbreak
+\\resumeheading
+\\resumefooting
+\% footline is normally a centered page number in font \\tenrm
+\\centerfooting{\lftbr}\\tenrm\\folio{\rtbr}
+
+\% BOX MACROS
+\%
+\\newdimen\\boxline
+\\newdimen\\boxspace
+\\boxline .01332in
+\\boxspace 5pt
+\\newdimen\\depthbox@
+\\def\\boxit#1{\lftbr}\\hbox{\lftbr}\\vrule width\\boxline
+ \\vbox{\lftbr}\\hrule height\\boxline\\kern\\boxspace
+ \\hbox{\lftbr}\\kern\\boxspace
+ \\vbox{\lftbr}\\halign{\lftbr}\\hfil##\\hfil\\cr\\st
+ \\kern\\boxspace{\rtbr}\%
+ \\kern\\boxspace\\hrule height\\boxline{\rtbr}\%
+ \\vrule width\\boxline{\rtbr}{\rtbr}
+\\def\\centerbox#1{\lftbr}\\vskip\\abovedisplayskip
+ \\centerline{\lftbr}\\boxit{\lftbr}#1{\rtbr}{\rtbr}\%
+ \\vskip\\belowdisplayskip{\rtbr}
+\\def\\textbox#1{\lftbr}\\depthbox@=\\dp\\strutbox\\advance\\depthbox@ by .4\\p@
+ \\ifvmode\\indent\\fi\\setbox\\z@\\hbox{\lftbr}\\vrule
+ \\vbox{\lftbr}\\hrule\\hbox{\lftbr}\\kern\\p@#1\\strut\\kern\\p@{\rtbr}\
+ \\vrule{\rtbr}\\lower\\depthbox@\\box\\z@{\rtbr}
+
+\% HP2680A and HP2688A COPY CONTROL MACROS \% NOTE 66
+\%
+\\newcount\\oldcopy\\newcount\\copycnt
+\\def\\copy@{\lftbr}\\globalspecial{\lftbr}HP2688A,HP2680A COPIES \\number\\copy
+\\def\\selectcopycount{\lftbr}\\afterassignment\\copy@\\copycnt{\rtbr}
+\\def\\copieson{\lftbr}\\global\\count\\copycnt=\\oldcopy\\copy@{\rtbr}
+\\def\\copiesoff{\lftbr}\\global\\count\\copycnt=1 \\copy@{\rtbr}
+\\def\\copies{\lftbr}\\afterassignment\\copieson\\global\\oldcopy{\rtbr}
+\\copycnt=1
+\\oldcopy=2
+
+\% HP2680A and HP2688A LOGICAL PAGE CONTROL (LPC) MACROS \% NOTE 6
+\%
+\\def\\lplist#1{\lftbr}\\globalspecial{\lftbr}HP2688A,HP2680A ILP #1{\rtbr}{\rtb
+\\def\\lpdef#1{\lftbr}\\globalspecial{\lftbr}HP2688A,HP2680A LP #1{\rtbr}{\rtbr}
+\\newif\\ifempty@\\empty@true
+\\newcount\\lpcount@\\newcount\\nextlp@
+\\def\\selectlpcounter#1{\lftbr}\\lpcount@#1 \\setlpcount@{\lftbr}\\the\\lpcount
+\\def\\setlpcount@#1{\lftbr}\\globalspecial{\lftbr}HP2688A,HP2680A ELP #1{\rtbr}
+\\def\\lpageto{\lftbr}\\eject\\afterassignment\\lpeject@\\nextlp@{\rtbr}
+\\def\\ppageto{\lftbr}\\eject\\afterassignment\\lpage@\\nextlp@{\rtbr}
+\\def\\lpeject@{\lftbr}\\nextlp@=-\\nextlp@\\lpage@{\rtbr}
+\\def\\lpresume{\lftbr}\\eject\\nextlp@=\\z@\\lpage@{\rtbr}
+\\def\\lpreset{\lftbr}\\eject\\nextlp@=33 \\lpage@ \\nextlp@=\\z@{\rtbr}
+\\def\\lpexit{\lftbr}\\eject\\nextlp@=34 \\lpage@ \\nextlp@=\\z@{\rtbr}
+\\def\\lpage@{\lftbr}\\ifempty@\\count\\lpcount@=\\nextlp@\\global\\empty@false\
+\\everyjob{\lftbr}\\message{\lftbr}Using HP TeX Version \\fmtversion{\rtbr}\\se
+
+\% TABLE MACROS \% NOTE 6
+\%
+\\newcount\\maxcol@
+\\newbox\\topstrutbox \\def\\topstrut{\lftbr}\\unhcopy\\topstrutbox{\rtbr}
+\\setbox\\topstrutbox=\\hbox{\lftbr}\\vrule height11pt depth0pt width0pt{\rtbr}
+\\newbox\\botstrutbox \\def\\botstrut{\lftbr}\\unhcopy\\botstrutbox{\rtbr}
+\\setbox\\botstrutbox=\\hbox{\lftbr}\\vrule height0pt depth4pt width0pt{\rtbr}
+\\newdimen\\tableline \\tableline.01332in
+\\newskip\\tablespace \\tablespace5pt
+\\def\\paragraph#1{\lftbr}\\vbox{\lftbr}\\hrule height\\z@ width\\hsize depth\\z
+\\def\\tbar{\lftbr}\\ifvmode\\hrule\\else\\vrule width\\hsize depth\\z@\\fi heig
+\\def\\uptoks@{\lftbr}\\inc\\cntA@\\inc\\cntB@
+ \\ifnum\\cntA@<\\count19 \\ifnum\\cntB@<\\count19 \\else\\err@\\fi\\else\\er
+\\def\\err@{\lftbr}\\errmessage{\lftbr}Columns too wide for tabular format{\rtbr
+\\def\\bump@{\lftbr}\\ifnum\\cntC@<\\maxcol@\\inc\\cntC@\\uptoks@\\fi{\rtbr}
+\\def\\tableformat#1{\lftbr}\\tablelet\\just@\\just@\\relax\\parse@#1~\\done@~{\
+\\def\\tablerow#1{\lftbr}\\tablelet\\bbar@\\wbar@\\endrow@\\parse@#1~\\done@~{\r
+\\def\\tablebar#1{\lftbr}{\lftbr}\\let\\topstrut\\relax\\let\\botstrut\\relax\\t
+ \\tablerow{\lftbr}#1{\rtbr}{\rtbr}{\rtbr}
+\\def\\tablelet#1#2#3{\lftbr}\\let\\b@#1\\let\\w@#2\\let\\f@#3\\cntA@\\count15 \
+ \\cntC@\\z@\\let\\parse@=\\parseline@\\ifhmode\\par\\else\\nointerlineskip\\
+ \% NOTE 74
+\\def\\just@#1{\lftbr}\\let\\b@\\tform@\\let\\w@\\tform@\\maxcol@\\z@\\let\\tabl
+ \% NOTE 75
+\\def\\tform@#1{\lftbr}\\tform@@#1~{\rtbr}
+\\def\\tform@@#1#2~{\lftbr}\\uptoks@\\toks\\cntA@{\lftbr}#1{\rtbr}\\dimen\\cntB@
+\\def\\bbar@#1{\lftbr}\\beginrow@{\lftbr}#1{\rtbr}\\vrule width\\tableline\\vrul
+\\def\\wbar@#1{\lftbr}\\beginrow@{\lftbr}#1{\rtbr}\\kern\\tableline\\vrule width
+\\def\\beginrow@#1{\lftbr}\\let\\b@\\vbar@\\let\\w@\\ibar@\\setbox\\z@=\\hbox\\b
+ \\parindent\\z@\\leftskip\\tablespace\\rightskip\\tablespace\\let\\span=\\sp
+\\def\\endrow@{\lftbr}\\kern-\\dimen\\cntB@\\egroup\\tablejust@{\lftbr}\\unhbox\
+\\def\\vbar@#1{\lftbr}\\futurelet\\lookahead@\\cs@#1~\\vrule width\\tableline{\r
+\\def\\ibar@#1{\lftbr}\\futurelet\\lookahead@\\cs@#1~\\kern\\tableline{\rtbr}
+\\def\\cs@#1~{\lftbr}\\ifx\\span@\\lookahead@#1~\\else\\span@\\@ne#1~\\fi\\lower
+ \% NOTE 84
+\\def\\parseline@#1~{\lftbr}\\ifx\\done@#1\\let\\parse@\\f@\\else\\let\\p@ss\\pa
+ \\p@ss#1|\\done@|\\fi\\parse@{\rtbr}
+\\def\\parsecol@#1|{\lftbr}\\def\\parsemode@{\lftbr}\\ifx\\done@\\lookahead@\\w@
+ \\let\\p@ss\\lastp@ss\\else\\b@{\lftbr}#1{\rtbr}\\fi\\p@ss{\rtbr}\%
+ \\futurelet\\lookahead@\\parsemode@{\rtbr}
+\\def\\lastp@ss#1|{\lftbr}{\rtbr}
+\\def\\span@#1#2~{\lftbr}\\bump@\\hsize\\dimen\\cntB@\\edef\\x@{\lftbr}\\the\\to
+ \\for\\count@=2to#1do\%
+ {\lftbr}\\bump@\\advance\\hsize\\dimen\\cntB@\\advance\\hsize\\tableline
+ \\setbox\\z@=\\x@{\lftbr}\\topstrut#2\\botstrut{\rtbr}{\rtbr}
+
+\% SECTION AND HEADING MACROS \% NOTE 8
+\%
+\\newcount\\basehead\\basehead=\\count10
+\\advance\\count10by4 \% This allocates 4 counters for head counters
+\\newcount\\hdlevel
+\\def\\setlevelno#1{\lftbr}\\hdlevel=0 \\cntA@=\\basehead\\sethead@0#1.-1.\\head
+\\def\\sethead@#1.{\lftbr}\\ifnum-1=#1 \\let\\next@=\\relax\\else\\let\\next@=\\
+ \% NOTE 90
+ \\ifnum\\hdlevel<4 \\inc\\hdlevel\\inc\\cntA@\\count\\cntA@=#1\\fi\\fi\\next
+\goodbreak
+\\def\\head#1{\lftbr}\\ifnum#1>\\hdlevel\\uplevel@{\lftbr}#1{\rtbr}\\else
+ \\hdlevel=#1\\cntA@=#1\\advance\\cntA@\\basehead\\fi
+ \\inc{\lftbr}\\count\\cntA@{\rtbr}\\head@{\rtbr}
+\goodbreak
+\\def\\uplevel@#1{\lftbr}\\inc\\hdlevel\\cntA@=\\hdlevel
+ \\advance\\cntA@\\basehead\\count\\cntA@=0
+ \\ifnum\\hdlevel=#1 \\else\\uplevel@{\lftbr}#1{\rtbr}\\fi{\rtbr}
+\goodbreak
+\\def\\head@{\lftbr}{\lftbr}\\inc\\basehead\\xdef\\levelno{\lftbr}\\the\\count\\
+ \\for\\cntB@=\\tw@ to\\hdlevel do{\lftbr}\\inc\\basehead
+ \\xdef\\levelno{\lftbr}\\levelno.\\the\\count\\basehead{\rtbr}{\rtbr}{\r
+\goodbreak
+\\setlevelno{\lftbr}0{\rtbr}
+\\newtoks\\firstlevelhead \\def\\headA@{\lftbr}\\head\\@ne\\the\\firstlevelhea
+\\newtoks\\secondlevelhead \\def\\headB@{\lftbr}\\head\\tw@\\the\\secondlevelhe
+\\newtoks\\thirdlevelhead \\def\\headC@{\lftbr}\\head\\thr@@\\the\\thirdlevelh
+\\newtoks\\fourthlevelhead \\def\\headD@{\lftbr}\\head\\f@ur\\the\\fourthlevelh
+\\def\\level#1#2{\lftbr}\\def\\title{\lftbr}#2{\rtbr}\%
+ \\ifcase#1\\relax\\or\\headA@\\or\\headB@\\or\\headC@\\or\\headD@\\fi{\rtbr}
+\\firstlevelhead{\lftbr}\\vfill\\eject\\vbox to1.5in{\lftbr}{\rtbr}\\centerline{
+ \\vskip1.0in\\ctswrite{\lftbr}\\vrule height20pt width0pt\\tenbf\\title{\rtb
+\\secondlevelhead{\lftbr}\\need.75in\\bigskip\\leftline{\lftbr}\\twelvebf\\level
+ \\medskip\\ctswrite{\lftbr}\\hskip15pt\\tenrm\\title{\rtbr}{\rtbr}
+\\thirdlevelhead{\lftbr}\\need.6in\\medskip\\leftline{\lftbr}\\tenbf\\levelno\\e
+ \\ctswrite{\lftbr}\\hskip30pt\\tenrm\\title{\rtbr}{\rtbr}
+\\fourthlevelhead{\lftbr}\\need.5in\\leftline{\lftbr}\\tenrm\\levelno\\enspace\\
+ \\ctswrite{\lftbr}\\hskip45pt\\tenrm\\title{\rtbr}{\rtbr}
+
+\% CONTENTS FILE MACROS
+\%
+\\newwrite\\cnts@
+\\newif\\ifnocts@\\nocts@true
+\\newtoks\\topofcontents
+\\newtoks\\botofcontents
+\\let\\content@=\\let\% \% NOTE
+\\def\\ctswrite#1{\lftbr}\\ifnocts@\\openout\\cnts@=\\jobname*[*]. \\nocts@false
+ {\lftbr}\\def\\_{\lftbr}\\kern.06em \\vbox{\lftbr}\\hrule width.3em{\rtbr}{\
+ \\edef\\a@{\lftbr}\\write\\cnts@{\lftbr}\\content@{\lftbr}#1{\rtbr}{\lftbr}\
+{\lftbr}\\catcode`\\@=12 \\gdef\\content@ #1#2{\lftbr}\\need.5in\\lline{\lftbr}#
+\\def\\contents{\lftbr}\\ifnocts@\\else\\closeout\\cnts@\\null\\supereject
+ \\begingroup\\pageno\\m@ne\\null\\the\\topofcontents\\input\\jobname*.
+ \\the\\botofcontents\\eject\\endgroup\\nocts@true\\fi{\rtbr}
+\\topofcontents{\lftbr}\\noheading\\vskip1in plus1fil
+ \\centerline{\lftbr}\\fourteenbf Table of Contents{\rtbr}\\vskip1in plus1fil
+\\botofcontents{\lftbr}\\vfil{\rtbr}
+
+\% FOOTNOTES AND INSERTIONS
+\%
+\\def\\vfootnote#1{\lftbr}\\insert\\footins\\bgroup
+ \\interlinepenalty\\interfootnotelinepenalty
+ \\splittopskip\\ht\\strutbox \% top baseline for broken footnotes
+ \\splitmaxdepth\\dp\\strutbox \\floatingpenalty\\@MM
+ \\realhsize\\leftskip\\z@skip \\rightskip\\z@skip
+ \\baselineskip1\\baselineskip
+ \\textindent{\lftbr}#1{\rtbr}\\footstrut\\futurelet\\next\\fo@t{\rtbr}
+\\newcount\\notenumber
+\\def\\resetnotes{\lftbr}\\global\\notenumber=0 {\rtbr}
+\\def\\note{\lftbr}\\global\\inc\\notenumber\\footnote{\lftbr}$^{\lftbr}\\the\\n
+\\def\\midinsert{\lftbr}\\@midtrue\\p@gefalse\\@ins{\rtbr}
+\\def\\@ins{\lftbr}\\par\\begingroup\\setbox\\z@\\vbox\\bgroup\\realhsize\\divid
+ \% NOTE 102
+\goodbreak
+\\def\\endinsert{\lftbr}\\egroup\\count@-100 \% finish the \\vbox
+ \\ifp@ge\\else\\dimen@\\ht\\z@\\advance\\dimen@\\dp\\z@
+ \\advance\\dimen@12\\p@\\multiply\\dimen@-\\nocol@
+ \\advance\\dimen@-\\pagetotal\\advance\\dimen@\\pagegoal
+ \\ifdim\\dimen@<\\z@\\@midfalse\\else\\count@100 \\fi\\fi
+ \goodbreak
+ \\if@mid \\balance@
+ \\global\\setbox\\contrb@\\vbox{\lftbr}\\unvbox\\contrb@\\bigskip\\box\\z@
+ \\else\\insert\\topins{\lftbr}\\penalty\\count@ \% floating insertion
+ \\splittopskip\\z@skip\\splitmaxdepth\\maxdimen\\floatingpenalty\\z@
+ \\ifp@ge \\divide\\vsize\\nocol@ \\dimen@\\dp\\z@
+ \\vbox to\\vsize{\lftbr}\\unvbox\\z@\\kern-\\dimen@{\rtbr}\% depth is zero
+ \\else \\box\\z@\\nobreak\\bigskip\\fi{\rtbr}\\fi\\endgroup{\rtbr}
+\goodbreak
+
+\% COLUMN MACROS \% NOTE 104
+\%
+\\def\\BEGINtwocolumns{\lftbr}\\multicol@\\tw@{\rtbr}
+\\def\\BEGINthreecolumns{\lftbr}\\multicol@\\thr@@{\rtbr}
+\\def\\ENDtwocolumns{\lftbr}\\balance@\\goal@\\divide\\endgroup\\newtotal@\\begi
+\\let\\ENDthreecolumns=\\ENDtwocolumns
+\\def\\balance{\lftbr}\\balance@\\newtotal@{\rtbr}
+\\def\\balance@{\lftbr}\\par{\lftbr}\\let\\ifreal@=\\iffalse\\eject{\rtbr}{\rtbr
+\\def\\newtotal@{\lftbr}{\lftbr}\\each@{\lftbr}\\the\\toks\\count@{\rtbr}
+ \\ifold@\\insert\\hacker@{\lftbr}{\rtbr}\\prevtotal@\\pagetotal-\\dimen@\\fi
+\\def\\multicol@#1{\lftbr}\\ifnum\\nocol@>\\@ne\\errset{\lftbr}You can't have co
+ within columns. \\string\\start{\lftbr}\\blockname@{\rtbr} ignored{\rtbr
+ \\else\\balance@\\nocol@=#1\\goal@\\multiply\\advance\\hsize\\columnspace
+ \\divide\\hsize#1\\advance\\hsize-\\columnspace
+ \\multiply\\vsize#1\\brokenpenalty\\z@
+ \\each@{\lftbr}\\multiply\\count\\count@\\nocol@\\multiply\\skip\\count@\\no
+ \\newtotal@\\global\\dimen@=\\baselineskip\\baselineskip\\dimen@ plus\\dimen
+
+\\message{\lftbr}output routines{\rtbr}
+
+\% OUTPUT ROUTINES \% NOTE 10
+\%
+\\newbox\\contrb@ \\newbox\\out@
+\\newdimen\\columnspace
+\\columnspace=.5in
+\\let\\ifreal@=\\iftrue
+\\newcount\\nocol@ \\nocol@=1
+\\newinsert\\hacker@
+\\def\\ifold@{\lftbr}\\ifvoid\\contrb@\\else{\rtbr}
+\\def\\ifcol@{\lftbr}\\ifnum\\nocol@=\\@ne\\setbox\\out@=\\box\\@cclv \\else{\rt
+\\def\\setboxA@{\lftbr}\\inc\\cntA@\\setbox\\cntA@{\rtbr}
+\\def\\boxA@{\lftbr}\\inc\\cntA@\\box\\cntA@{\rtbr}
+\\def\\each@#1{\lftbr}\\for\\count@=\\count19 to254 do{\lftbr}#1{\rtbr}{\rtbr}
+\\def\\unglue@#1{\lftbr}\\setbox#1=\\vbox{\lftbr}\\unvbox#1{\rtbr}{\rtbr}
+\\def\\realhsize{\lftbr}\\advance\\hsize\\columnspace\\multiply\\hsize\\nocol@
+ \\advance\\hsize-\\columnspace{\rtbr}
+\\output{\lftbr}\\hpoutput{\rtbr}
+
+\goodbreak
+\\def\\hpoutput{\lftbr}\\splittopskip=\\topskip
+ \\setbox\\hacker@=\\box\\voidb@x
+ \\ifvoid\\contrb@\\dimen@=\\ht\\@cclv
+ \\else\\prevtotal@\\advance\\dimen@\\ht\\@cclv\\fi
+ \\ifreal@\\realoutput@\\else\\fakeoutput@\\fi
+ \\each@{\lftbr}\\global\\toks\\count@\\ifvoid\\count@{\lftbr}{\rtbr}\\else{\
+
+\\def\\realoutput@{\lftbr}\\ifcol@\\splitcol@\\split@\\setheight@\\setout@
+ \\unvbox\\@cclv \\penalty\\outputpenalty\\fi
+ \\setbox\\@cclv=\\pagestuff@{\lftbr}{\rtbr}\\each@{\lftbr}\\divide\\skip\\co
+ \\realhsize\\divide\\vsize\\nocol@\\leftskip\\z@\\rightskip\\z@
+ \\plainoutput\\global\\empty@true
+ \\global\\count\\lpcount@=\\nextlp@\\ifnum\\nextlp@>32 \\global\\nextlp@\\z@
+
+\\def\\fakeoutput@{\lftbr}\\unglue@{\lftbr}\\@cclv{\rtbr}\\global\\let\\ifreal@=
+ \\ifcol@\\dimen@=\\baselineskip
+ \\dimen@=\\ifnum\\nocol@>2 2\\dimen@ \\else 1.1667\\dimen@ \\fi
+ \\advance\\dimen@\\ht\\@cclv\\splitcol@{\lftbr}\\box\\@cclv{\rtbr}\\set
+ \\dimen@=\\dp\\out@\\global\\setbox\\contrb@=\\pagestuff@{\lftbr}\\vskip-\\
+
+\\def\\makeheadline{\lftbr}\\vbox to\\z@{\lftbr}\\vskip-22.5\\p@
+ \\lline{\lftbr}\\vbox to8.5\\p@{\lftbr}{\rtbr}\\the\\headline{\rtbr}\\vss{\rtb
+\\def\\makefootline{\lftbr}\\baselineskip24\\p@\\lline{\lftbr}\\the\\footline{\r
+
+\\def\\pagecontents{\lftbr}\\ifvoid\\topins\\else\\unvbox\\topins\\fi
+ \\unvbox\\@cclv \% open up \\box255
+ \\ifvoid\\footins\\else \% footnote info is present
+ \\vskip\\skip\\footins
+ \\footnoterule
+ \\unvbox\\footins\\fi
+ \\ifr@ggedbottom\\vfil\\fi{\rtbr}
+
+\\def\\splitcol@#1{\lftbr}\\divide\\dimen@\\nocol@\\cntA@=\\count14
+ \\for\\count@=\\tw@ to\\nocol@ do{\lftbr}\\setboxA@=\\split@{\rtbr}\\setboxA
+\\def\\split@{\lftbr}\\ifvoid\\@cclv\\vbox{\lftbr}\\lline\\hfil\\vfil{\rtbr}\\el
+\\def\\setheight@{\lftbr}\\ifold@\\setmax@\\fi{\rtbr}
+\\def\\pagestuff@#1{\lftbr}\\vbox{\lftbr}\\ifold@\\unvbox\\contrb@\\medskip\\fi\
+\\def\\setout@{\lftbr}\\cntA@=\\count14 \\setbox\\out@=\\vbox{\lftbr}\\hbox
+ {\lftbr}\\for\\count@=\\tw@ to\\nocol@ do{\lftbr}\\boxA@\\hskip\\columnspace
+\\def\\setmax@{\lftbr}\\dimen@=\\z@ \\cntA@=\\count14
+ \\for\\count@=\\@ne to\\nocol@ do{\lftbr}\\inc\\cntA@\\unglue@{\lftbr}\\cntA
+ \\ifdim\\ht\\cntA@>\\dimen@ \\dimen@=\\ht\\cntA@\\fi{\rtbr}\%
+ \\for\\count@=\\@ne to\\nocol@ do{\lftbr}\\setbox\\cntA@
+ =\\vbox to\\dimen@{\lftbr}\\unvbox\\cntA@\\ifr@ggedbottom\\vss\\fi{\rtbr
+\\def\\prevtotal@{\lftbr}\\dimen@=\\medskipamount
+ \\advance\\dimen@\\ht\\contrb@\\multiply\\dimen@-\\nocol@{\rtbr}
+\\def\\goal@#1{\lftbr}\\ifdim\\pagegoal=\\maxdimen\\else
+ \\dimen@=\\pagegoal#1\\dimen@\\nocol@\\pagegoal\\dimen@\\fi{\rtbr}
+
+
+\\catcode`@=12 \% NOTE 112
+\finish{verbatim}
+\bye
diff --git a/obsolete/macros/mathematica/CHANGES b/obsolete/macros/mathematica/CHANGES
new file mode 100644
index 0000000000..89b0249bdc
--- /dev/null
+++ b/obsolete/macros/mathematica/CHANGES
@@ -0,0 +1,65 @@
+Record of changes to the tex-mathematica tools
+==============================================
+
+See file README for information about these tools.
+
+Dan Dill dan@chem.bu.edu [128.197.30.18]
+
+
+
+Version 1.1 -> 1.2, 2/27/1991
+-----------------------------
+
+ Texinfo documentation is now available, and the command C-c h now runs Info
+on it. The source is tex-mma.texinfo, the Info file is tex-mma.info, and the
+TeX formatted compressed PostScript is tex-mma.ps.Z.
+
+ The name of the LaTeX description/example source has been changed to
+tex-mma-j.tex and tex-mma-j.bib, the the TeX formatted compressed PostScript
+is tex-mma-j.ps.Z. The name of the TeX example source has been changed to
+tex-mma-tex.tex.
+
+ Several changes have been made at the request of The Mathematica Journal,
+which will publish the material contained in tex-mma-j.tex. The changes
+replace user-visible occurances of mma with mathematica:
+
+ 1. M-x tex-mma becomes M-x tex-mathematica
+ 2. \begin{mma} becomes \begin{mathematica}
+ 3. \end{mma} becomes \end{mathematica}
+ 4. \input mma10pt becomes \input mathematica10pt
+ 5. \input mma12pt becomes \input mathematica12pt
+ 6. \documentstyle[mma,... becomes \documentstyle[mathematica,...]
+
+Related to this, the file mmacommon.tex has been changed to mathematica.tex.
+I hope these changes do not cause too much inconvenience.
+
+ An error encountered when using LaTeX later than 2 May 90 has been
+corrected. I had been using an older LaTeX. See comment in mathematica.sty
+if you are using an older LaTeX, as the default works only with LaTeX 2 May 90
+or later.
+
+
+
+3/5-6/1991
+----------
+ Startup commands plain-tex-mathematica and latex-mathematica added, to
+explicitly select mode.
+
+ Add commands C-c a and C-u C-c a to evaluate *all* cells of a document.
+
+
+3/10/1991
+---------
+ Add \mathematicafile{<...>} to print verbatim contents of file <...>.
+
+
+Version 1.2 -> 1.3 4/22/1991
+---------------------------
+ Don't start Mathematica until needed.
+ Bind tex-mma-recenter to C-c l.
+ Adapt/add code for generic TeX/Mathematica interface.
+ Renamed many functions.
+ Add tex-mma-assemble-package (C-c m) to assemble packages from cells.
+ Add shell command tex-mma-assemble-package to assemble packages in Emacs
+ batch mode.
+ Add tex-mma-assemble-cell (C-u C-c m) to assemble a single cell.
diff --git a/obsolete/macros/mathematica/README b/obsolete/macros/mathematica/README
new file mode 100644
index 0000000000..9b783e7ff6
--- /dev/null
+++ b/obsolete/macros/mathematica/README
@@ -0,0 +1,222 @@
+TeX/Mathematica is a set of tools that provide facilities of
+Mathematica Notebooks in a UNIX environment, under GNU Emacs. They
+permit interaction between a text and a Mathematica buffer and, if
+desired, the use of TeX/LaTeX to annotate Mathematica-based
+explorations and programs. Inclusion of Mathematica-generated
+graphics in TeX/LaTeX documents printed using PostScript is
+supported. The tools also support the automatic generation of
+Mathematica packages from Mathematica documents.
+
+With these tools one can interactively develop and refine teaching and
+research documents. The interactive nature of the tools encourages
+Mathematica-based exploration as a natural part of the writing
+process.
+
+
+Getting TeX/Mathematica
+***********************
+
+The TeX/Mathematica tools are available from Internet host
+`chem.bu.edu' [128.197.30.18] by anonymous `ftp' in directory
+`/pub/tex-mathematica'. The author can be reached at Internet address
+`dan@chem.bu.edu'.
+
+The `ftp' directory contains four files
+
+ * `README', which duplicates the information
+ in this node.
+
+ * `CHANGES', which describes changes that have been made.
+
+ * `tex-mma-j.ps.Z', the compressed PostScript documentation/example.
+
+ * `tex-mma.tar.Z', the TeX/Mathematica distribution kit (includes the
+ first three files).
+
+
+LaTeX description of TeX/Mathematica
+====================================
+
+The PostScript document `tex-mma-j.ps.Z' is derived from the LaTeX
+description of TeX/Mathematica. Transfer the document from the
+`ftp' directory in binary (image) mode and then print it with
+
+ zcat tex-mma-j.ps.Z | lpr
+
+The source for this document is the LaTeX file `tex-mma-j.tex' and
+the BibTeX file `tex-mma-j.bib'. You can use `tex-mma-j.tex'
+as a LaTeX example of a TeX/Mathematica document.
+
+
+Files in the distribution kit
+=============================
+
+The file `tex-mma.tar.Z' contains the TeX/Mathematica
+tools. These consist of the following:
+
+Documentation things:
+
+
+ * `tex-mma.texinfo', Texinfo documentation of TeX/Mathematica
+
+ * `tex-mma.ps.Z', compressed Texinfo document
+ formatted with TeX into PostScript
+
+ * `tex-mma.info', Info file
+ (this file)
+ for on-line Emacs documentation
+
+ * `tex-mma-j.tex', LaTeX description/example of TeX/Mathematica
+
+ * `tex-mma-j.bib', BibTeX file for `tex-mma-j.tex'
+
+ * `tex-mma-j.ps.Z', compressed LaTeX documentation formatted in
+ PostScript
+
+ * `sin3x.ps', Mathematica-generated figure included in
+ `tex-mma-j.tex'
+
+ * `tex-mma-tex.tex', TeX example of TeX/Mathematica
+
+ * `texinfo.tex', TeX macros used to format `tex-mma.texinfo'
+
+
+GNU Emacs things:
+
+ * `tex-mma.el', the `tex-mathematica' package
+
+ * `math.el', David Jacobson's Mathematica mode package (*Note math::)
+
+ * `unix-tex-mma.el', example implementation of cell-type `unix'
+
+
+TeX/LaTeX things:
+
+ * `mathematica10pt.tex', TeX 10 point TeX/Mathematica interface
+
+ * `mathematica12pt.tex', TeX 12 point TeX/Mathematica interface
+
+ * `mathematica.sty', LaTeX generic TeX/Mathematica interface
+
+ * `mathematica.tex', macros for formatting TeX/Mathematica
+ documents, used by the preceding files
+
+
+Shell scripts and Mathematica commands for processing graphics, and
+shell script and template file for Mathematica package assembly:
+
+ * `PSTeX.m', generates `psfig'-adapted graphics to a file, without
+ PostScript prolog
+
+ * `addBBox', shell script called by `PSTeX'
+
+ * `PSTeXpro.m', generates `psfig'-adapted graphics to a file, with
+ PostScript prolog
+
+ * `addBBoxpro', shell script called by `PSTeXpro'
+
+ * `addBBoxpro.awk', `awk' script called by `addBBoxpro'
+
+ * `PSFile.m', generates full-page graphics to a file, with PostScript
+ prolog
+
+ * `tex-mma-assemble-package', shell script for Mathematica package
+ assembly
+
+ * `tex-mma-assemble-package.tmplt', Emacs Lisp template used by
+ `tex-mma-assemble-package'
+
+
+This is from Cameron Smith (*Note addBBox::):
+
+ * `mma.pro.1.2', Mathematica Version 1.2 PostScript prolog. Note
+ that a different prolog will be needed for Mathematica Version 2.0.
+ This will be available from the author (*Note Getting tex-math::).
+
+These are from Trevor Darrell's `psfig/tex' distribution (*Note psfig::):
+
+ * `psfig.pro', `psfig' PostScript prolog.
+
+ * `psfig.sty', `psfig' for LaTeX.
+
+ * `psfig.tex', `psfig' for TeX.
+
+
+Installation procedure
+======================
+
+ 1. Transfer `tex-mma.tar.Z' in binary (image) mode into an empty
+ directory, and extract its contents, with (for example)
+
+ zcat tex-mma.tar.Z | tar xvf -
+
+ 2. Install the Info on-line documentation file `tex-mma.info' where
+ your Emacs looks for Info file. If desired, add a pointer to it to your
+ Info directory file so that it will appear in the Info top-level menu.
+ The source for `tex-mma.info' is `tex-mma.texinfo'. The file
+ `tex-mma.ps.Z' is the compressed TeX formatted version, made
+ using the `texinfo.tex' included in the distribution (see the
+ beginning of `tex-mma.texinfo' for directions). The formatted
+ version can be printed with
+
+ zcat tex-mma.ps.Z | lpr
+
+ It contains complete details of the TeX/Mathematica tools.
+
+ 3. Edit `tex-mma.el' to
+
+ * set `tex-mma-process-string' to the command
+ you use to start Mathematica (default is `math');
+
+ * set `tex-mma-info-file' to point to where you put the file
+ `tex-mma.info'
+
+ 4. Run `M-x byte-compile' on `tex-mma.el' and store the resulting
+ `tex-mma.elc' wherever your GNU Emacs looks for files.
+
+ 5. Add the following to the GNU Emacs initialization file
+
+ (autoload 'tex-mathematica "tex-mma"
+ "Major-mode for interaction with Mathematica from TeX." t)
+ (autoload 'plain-tex-mathematica "tex-mma"
+ "Major-mode for interaction with Mathematica from TeX." t)
+ (autoload 'latex-mathematica "tex-mma"
+ "Major-mode for interaction with Mathematica from TeX." t)
+
+ 6. If you do not have David Jacobson's Mathematica mode package
+ `math.el', install it following the instructions in `math.el'.
+ If you do have `math.el', make sure your version is at least as
+ current as the one here, which contains changes necessary for use with
+ `tex-mma.el'. Make sure you place the file `math.el' (or,
+ better, the byte-compiled file `math.elc') where your Emacs looks
+ for libraries, so that `tex-mma.elc' will be able to load it if it
+ is not already loaded.
+
+ 7. Edit `mathematica.tex' (at the end) to specify where the PostScript
+ prolog files `psfig.pro' and `mma.pro.1.2' will be, and put the
+ prolog files there.
+
+ 8. If you are using a LaTeX *earlier* than 2 May 90, edit
+ `mathematica.sty' according to the comments there.
+
+ 9. Put `mathematica.tex', `mathematica.sty', `mathematica12pt.tex',
+ `mathematica10pt.tex', `psfig.sty', and `psfig.tex' where your
+ TeX looks for macro files.
+
+ 10. Put `PSTeX.m', `PSTeXpro.m' and `PSFile.m' where your
+ Mathematica looks for packages.
+
+ 11. Edit `addBBoxpro' to specify which `awk' you use (default is GNU
+ awk, `gawk').
+
+ 12. Edit `tex-mma-assemble-package' to set the variables `bindir', `tmpdir'
+ and `tmpdirsed' for your system, as described in the comments there
+ and then place `tex-mma-assemble-package.tmplt' in `bindir'.
+
+ 13. Put `addBBox', `addBBoxpro', `addBBoxpro.awk' and
+ `tex-mma-assemble-package' on your system's binary search path, make sure
+ they have execute status, and then execute `rehash'.
+
+
+You should be ready to go: Startup emacs, run `M-x tex-mathematica'
+and have fun.
diff --git a/obsolete/macros/mathematica/tex-mma-j.ps.gz b/obsolete/macros/mathematica/tex-mma-j.ps.gz
new file mode 100644
index 0000000000..fc01316989
--- /dev/null
+++ b/obsolete/macros/mathematica/tex-mma-j.ps.gz
Binary files differ
diff --git a/obsolete/macros/mathematica/tex-mma.tar_z b/obsolete/macros/mathematica/tex-mma.tar_z
new file mode 100644
index 0000000000..b383cc805b
--- /dev/null
+++ b/obsolete/macros/mathematica/tex-mma.tar_z
Binary files differ