diff options
author | Norbert Preining <norbert@preining.info> | 2024-01-30 03:00:44 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-01-30 03:00:44 +0000 |
commit | 084f5d8435744b7ea7ef487ec111a7bfd100ed62 (patch) | |
tree | d4e91f6ef6d075509a2b33942f57337725089951 /macros/hptex | |
parent | 6c43653052d016d5913aabb728c484f0e62b4754 (diff) |
CTAN sync 202401300300
Diffstat (limited to 'macros/hptex')
-rw-r--r-- | macros/hptex/dochc.tex | 827 | ||||
-rw-r--r-- | macros/hptex/hpmanual.tex | 1240 | ||||
-rw-r--r-- | macros/hptex/hptex.doc | 751 | ||||
-rw-r--r-- | macros/hptex/hptex.tex | 836 | ||||
-rw-r--r-- | macros/hptex/macroshc.tex | 897 |
5 files changed, 0 insertions, 4551 deletions
diff --git a/macros/hptex/dochc.tex b/macros/hptex/dochc.tex deleted file mode 100644 index 1b287b14e5..0000000000 --- a/macros/hptex/dochc.tex +++ /dev/null @@ -1,827 +0,0 @@ -% 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/macros/hptex/hpmanual.tex b/macros/hptex/hpmanual.tex deleted file mode 100644 index b776529494..0000000000 --- a/macros/hptex/hpmanual.tex +++ /dev/null @@ -1,1240 +0,0 @@ -% 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/macros/hptex/hptex.doc b/macros/hptex/hptex.doc deleted file mode 100644 index 4611efaa45..0000000000 --- a/macros/hptex/hptex.doc +++ /dev/null @@ -1,751 +0,0 @@ -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/macros/hptex/hptex.tex b/macros/hptex/hptex.tex deleted file mode 100644 index 3a3c21f6db..0000000000 --- a/macros/hptex/hptex.tex +++ /dev/null @@ -1,836 +0,0 @@ -% 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/macros/hptex/macroshc.tex b/macros/hptex/macroshc.tex deleted file mode 100644 index 706a8c3439..0000000000 --- a/macros/hptex/macroshc.tex +++ /dev/null @@ -1,897 +0,0 @@ -% 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 |