mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-07 03:15:54 +00:00
2469 lines
58 KiB
Plaintext
2469 lines
58 KiB
Plaintext
< RUNOFF -- RUNOFF macros for ITPS-10 system
|
||
Robert D. Houk -- 30-Jul-77
|
||
|
||
These macros are intended for two purposes - one is to provide an
|
||
interface into ITPS for RUNOFF users to ease their conversion over
|
||
to ITPS; the second reason is to provide a prototype macro system
|
||
for general use, specifically that same area addressed by RUNOFF.
|
||
|
||
In general, these macros parallel RUNOFF in name and function -
|
||
wherever there is an applicable RUNOFF command there is an ITPS
|
||
macro of the same name (usually RUNOFF's abbreviated name) with
|
||
the same or similar functionality.
|
||
|
||
To use the RUNOFF macro system simply include in your text file:
|
||
|
||
[*setup macro]
|
||
[*RUNOFF][preliminary user commands][*BEGIN]
|
||
body of user text
|
||
[*END]
|
||
|
||
This command sequence must be followed in order to assure proper
|
||
functioning of the macro subsystem. The "preliminary user commands"
|
||
are any commands which merely set parameters - such as [*FT] or [*PS],
|
||
etc. The [*BEGIN] macro call must precede all user typeset text (in-
|
||
cluding all leading, tabbing, etc.)!!! The user should include the
|
||
[*END] macro call (to do any device-specific end of take functions)
|
||
as the very last piece of his text file.
|
||
|
||
Important system conventions:
|
||
|
||
1) All type faces are assumed to be setup (i.e., numbers are
|
||
assigned to faces) with the major face (as specifiec by the
|
||
[Fnnn] command) a multiple of 10 (decimal); the correspond-
|
||
ing italics face as "nnn" + 1; the corresponding bold face
|
||
as "nnn" + 2; the corresponding small caps face as "nnn" +3.
|
||
Consider the standard line-printer/ASCII setup: face 210 is
|
||
the standard face; face 211 is the italics face; face 212 is
|
||
the bold face; and face 213 is the small caps face.
|
||
|
||
2) The setup macro initializes the D-registers (see below) and
|
||
defines the incore macro END to be called at the end of the
|
||
take to do any device-dependent functions
|
||
|
||
3) If D1 is zero then +& character is form feed (octal 014); if
|
||
positive then D1 contains amount of leading to perform between
|
||
"pages".
|
||
|
||
4) Whenever a value "n" is specified as being "p.p's" then
|
||
the numeric value of picas must be followed by a "." character
|
||
to delimit the picas and another numeric value to represent the
|
||
points:
|
||
"50" is fifty points;
|
||
".50" is fifty points;
|
||
"4.2" is four picas two points (fifty points);
|
||
"42.0" is forty-two picas (five hundred and four points);
|
||
"42." is illegal (no points "fraction" specified).
|
||
|
||
Whenever a value is specified as being points then the numeric
|
||
value may be either just points or picas.points.
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*** WARNING ***
|
||
|
||
|
||
|
||
Following are general warnings concerning restrictions or bugs about
|
||
which the user should be aware:
|
||
|
||
1) In versions of JUSTIF before %301(373) the use of one-shot
|
||
face commands is not allowed (e.g., the [WB] command) since
|
||
JUSTIF does not properly reset the $F register at the end of
|
||
the one-shot.
|
||
|
||
2) The face modify facility ([FM] command) is not supported.
|
||
|
||
3) JUSTIF should be assembled to handle at least 128 incore mac-
|
||
ros with a minimum size of 48 words each.
|
||
|
||
In general tracking down errors can be very painful, as JUSTIF is very
|
||
sensitive (trusting) of user input. The best way to track down errors is
|
||
probably to get the .JH file and simply trace down what happened - char-
|
||
acter by character until the "obvious" error appears. Once an error has
|
||
occurred JUSTIF has a tendency to propagate the error - hundreds of errors
|
||
may happen just because the column width got set wrong for example. If an
|
||
error after the first error is not obvious (like illegal command) then try
|
||
the file again after having fixed the "obvious" leading errors. JUSTIF is
|
||
very trusting of user input and tends to just believe anything you tell it,
|
||
especially in macros, and gets correspondlingly confused when you tell it
|
||
something wrong.
|
||
|
||
Probably 99.9% of all errors are in the end attributed to user error, but
|
||
errors in the basic system software do happen, especially after a new re-
|
||
lease of some sort. If a problem defies solution, try to reduce the number
|
||
of variables involved to a minimum - try simple test cases to make sure you
|
||
understand the basic functionality being exercised, ask other people for help
|
||
(it is truly amazing how consistently one can misread a (e.g.) mis-spelled
|
||
word), even trace the .JH file character by character. If all else fails,
|
||
give up and try a different approach.
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*** PROGRAMMING ARCANA ***
|
||
|
||
|
||
A very important (and incredibly obscure) macro programming procedure
|
||
which can lead to "impossible" (to comprehend) bugs concerns the way
|
||
JUSTIF handles "page" breaks (really a vertical column break). JUSTIF
|
||
always processes text until a word break before trying to justify a
|
||
line of text (it has to go to the end of the word so it can properly
|
||
hyphenate the word). This means that any text which exceeds the line,
|
||
as finally "set" by the justification routines, must be "reprocessed"
|
||
a second time. JUSTIF does this by "re-executing" the input stream
|
||
from the point that the line break occured. The obscurity is that
|
||
the input stream can contain embedded commands which are also executed
|
||
a second time. This leads to some very bizarre (yea, even psychopathic)
|
||
cases. Consider a line which contains the following text stream:
|
||
|
||
. . . re[FB]stric[FR]tions/Z . . .
|
||
|
||
The usage of the face commands "[FB]" and "[FR]" illustrates why JUSTIF
|
||
must process until an unambiguous end of line is encountered - the com-
|
||
mands can affect the way the word itself is set. Now, if the line is
|
||
finally broken at "restric-" then the "tions" will appear on the next
|
||
line. But to JUSTIF, the next line will start "[FR]tions/Z". It is the
|
||
"/Z" which causes the grief - it was seen once whilst looking for an
|
||
end of word condition, and then again when the end of word was finally
|
||
set. The net effect is that the "tions" is overlaid across the begining
|
||
of the line which hyphenated "restric-". This trivial (yet still pain-
|
||
fully obscure) example can be sidestepped by putting a space between
|
||
the "tions" and the "/Z" as so:
|
||
|
||
. . . re[FB]stric[FR]tions /Z . . .
|
||
|
||
Since JUSTIF will not set the line until the column which has been
|
||
EXCEEDED the "/Z" will only be executed if the "tions" can be guaranteed
|
||
to fit the line, and the "/Z" will also be guaranteed to affect only
|
||
the final typeset line which contains the "tions" text. (The case cited
|
||
above has actually been fixed in JUSTIF, but still serves to illustrate
|
||
my point).
|
||
|
||
The real complications arise when the line break coincides with the page
|
||
(or column) break - for in this case the "excess" text must be saved
|
||
across any page-break information (which is to say the [VH macro). The
|
||
penultimate headache arises when it is a macro itself (such as the [*ELS]
|
||
macro herein defined) which finally trips the page break mechanism at
|
||
some intermediate point within the macro itself. Since the macro is just
|
||
a string of commands (and//or text) itself, these commands are subject
|
||
to the same treatment as the "/Z" in the example above. This can lead to
|
||
non-obvious (to say the least) behaviour for commands which modify data
|
||
such as one of the user registers (e.g., a [ZS command) since the command
|
||
can be executed twice! Therefore macros must written in such a manner
|
||
that any line break caused by the macro will not doubly-execute any
|
||
such commands.
|
||
|
||
As a real-life example (which took an hour DDT'ing my way through JUSTIF
|
||
to initially comprehend), consider the [*ELS] macro below. It starts out
|
||
with a call to the [*TBOL] macro - to ensure that any previous text is
|
||
set and a new line is started (since [*ELS] by definition terminates
|
||
any [*LE] currently being processed). This [*TBOL] macro also has the
|
||
effect of guaranteeing that any impending page break that might occur
|
||
will occur at the [*TBOL] execution - ensuring that following commands
|
||
up to the "[ZET1,TLE0]" command are safe. Now the [*TLE0] macro, if
|
||
called (i.e., register T1 contains 0) can cause a page break since it
|
||
calls the [*TTP] macro, which in turn . . . If the [*ELS] macro did
|
||
not start out with a [*TBOL] call (which it didn't for a long time)
|
||
and if the [*ELS] macro was called at the end of a line of text which
|
||
EXACTLY fit the page, then the initial commands in the [*ELS] macro
|
||
would get executed twice (in particular, the "[ZSI5,1]" command, which
|
||
caused I5 to go negative, which lead in turn to calculating negative
|
||
indents since the indents are calculated as the product of the [*LS]
|
||
nesting level, which . . .)!
|
||
|
||
Another example is the set of [*HLn] macros below. In the HLn macros
|
||
I must save the HLn text body away (in a TTHLn "scratch" macro) before
|
||
a possible page break occurs. This is required for running headers
|
||
which want to include in the running head the HL level and/or text
|
||
for that page. The problem lies with HLn macros which are the very first
|
||
text on a page - the HLn macro must be seen and executed before the
|
||
page break in order to provide the header information. This requires
|
||
that the TTHLn macro be defined and the Hn register be incremented
|
||
before the [*TBOL] call (which is what may well force a page break
|
||
if there is no more room in the current page). Unfortunately (as de-
|
||
scribed above) if the [*TBOL] causes the page break all preceding
|
||
commands will be re-executed - leaving the Hn register incremented
|
||
twice (it's ok for the TTHLn macro to be redefined since it is re-
|
||
defined to be the same thing). Therefore I use register H0 as a sort
|
||
of "reeentrancy" counter to indicate how many times the [ZIHn] com-
|
||
mand was executed, and to adjust the Hn register accordingly. (As a
|
||
corollary, this mean that a running head macro must subtract H0 from
|
||
Hn iff H0 .GT. 0 in order to find the correct header level, and fur-
|
||
ther, that running feet can't reliably access the current header level
|
||
counters.)
|
||
|
||
So if you encounter problems which seem to arise at page, or even line
|
||
boundries (easy to check - add leading text to shift everything down
|
||
a word/line or two) look for this case arising - the [VH macro being
|
||
called.
|
||
|
||
Good Luck.
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Register Usage Conventions
|
||
|
||
(Unless otherwise specified, all
|
||
applicable values are in points)
|
||
|
||
|
||
A group Not Used.
|
||
|
||
B group Not used
|
||
|
||
C group Multi-column work
|
||
C Scratch column counter for [*THVCL]
|
||
C0 Column (as opposed to page) width
|
||
C1 Column gutter (space between columns)
|
||
C2 Number of columns
|
||
C3 Total leading ($U) at top of text column(s)
|
||
C4 Not used
|
||
C5 Not used
|
||
C6 Not used
|
||
C7 Not used
|
||
C8 Not used
|
||
C9 Not used
|
||
|
||
D group Device (setup) specific information
|
||
D Not used
|
||
D0 Base face
|
||
D1 If .EQ. 0 device does form feed'ss (+& char)
|
||
If .GT. 0 do [VA!D1] to split pages
|
||
D2 If .EQ. 0 no super/subscript (instead do (nn))
|
||
If .GT. 0 D2 is percent stored leading for [EJ]
|
||
D3 Width of average character (in percent) re em space
|
||
D4 Not used
|
||
D5 Not used
|
||
D6 Not used
|
||
D7 Not used
|
||
D8 Not used
|
||
D9 Not used
|
||
|
||
E group Not used
|
||
|
||
F group Reserved for footnoting
|
||
|
||
G group Running head/foot control
|
||
G Not used
|
||
G0 .GT. 0 if have seen [*CH] or [*AX]
|
||
G1 [*FT] setting for running head
|
||
G2 If .LT. 0 then no running head at all
|
||
If .EQ. 0 then blank running head
|
||
If .GT. 0 then normal running heads
|
||
G3 [*FT] setting for running foot
|
||
G4 If .LT. 0 then no running foot at all
|
||
If .EQ. 0 then blank running foot
|
||
If .GT. 0 then normal running foot
|
||
G5 Not used
|
||
G6 Not used
|
||
G7 .NE. 0 then print page number on page header
|
||
G8 .NE. 0 then print subtitle on page header
|
||
G9 .NE. 0 then print title on page header
|
||
|
||
H group Header level information
|
||
H Not used
|
||
H0 Interlock on Hn level increments
|
||
H1 Header level 1
|
||
H2 Header level 2
|
||
H3 Header level 3
|
||
H4 Header level 4
|
||
H5 Header level 5
|
||
H6 Not used
|
||
H7 Not used
|
||
H8 Not used
|
||
H9 Not used
|
||
|
||
I group Indent information
|
||
I Not used
|
||
I0 Right margin (effectively the column width)
|
||
I1 Left margin (indent from 0)
|
||
I2 Indent (both margins) for each [*NOTE]
|
||
I3 Nesting level for [*NOTE]
|
||
I4 Indent (left margin) for each [*LE]
|
||
I5 Nesting level for [*LIST]
|
||
I6 Not used
|
||
I7 Not used
|
||
I8 Not used
|
||
I9 Not used
|
||
|
||
J group Tables information [*TABLE?]
|
||
J $U for bottom of longest table sub-column
|
||
J0 Total indent from table sub-columns
|
||
J1 Width of sub-column 1 (points)
|
||
J2 Width of sub-column 2
|
||
J3 Width of sub-column 3
|
||
J4 Width of sub-column 4
|
||
J5 Width of sub-column 5
|
||
J6 Space (gutter) between table sub-columns
|
||
J7 Space (leading) 'tween table entries
|
||
J8 Test page value for start of new table entry
|
||
J9 Table indent
|
||
|
||
K group Not used
|
||
|
||
L group Listing control and lists
|
||
L .GE. 0 then list all ([MJ] command)
|
||
.LT. 0 then suppress macro & commands ([MJ%])
|
||
L0 .EQ. 0 then L8 leading else L9 leading
|
||
L1 List level 1 number
|
||
L2 List level 2 number
|
||
L3 List level 3 number
|
||
L4 List level 4 number
|
||
L5 List level 5 number
|
||
L6 Extra leading (points) between [*LS]'s
|
||
L7 T.P. (lines) after L6 for [*LS]
|
||
L8 Extra leading (points) between [*LE]'s
|
||
L9 T.P. (lines) after L8 for [*LE]
|
||
|
||
M group Not used
|
||
|
||
N group Not used
|
||
|
||
O group Not used
|
||
|
||
P group Page formating information
|
||
P Page number of current page
|
||
P0 Page width
|
||
P1 Page depth
|
||
P2 Pointsize (regular text)
|
||
P3 Leading (regular text)
|
||
P4 Pointsize (running head)
|
||
P5 Leading (running head)
|
||
P6 Pointsize (chapter header)
|
||
P7 Leading (chapter header)
|
||
P8 Pointsize (running foot)
|
||
P9 Leading (running foot)
|
||
|
||
Q group Paragraphing and other random info
|
||
Q Total leading ($U register) at top of page text
|
||
Q0 Paragraph indent
|
||
Q1 Paragraph leading (extra between paragraphs)
|
||
Q2 Paragraph test page
|
||
Q3 Not used
|
||
Q4 Not used
|
||
Q5 Not used
|
||
Q6 Not used
|
||
Q7 Not used
|
||
Q8 Not used
|
||
Q9 Not used
|
||
|
||
R group Scratch and Temporary work registers
|
||
|
||
S group Scratch and Temporary work registers
|
||
|
||
T group Scratch and Temporary work registers
|
||
|
||
U group Not used
|
||
|
||
V group Not used
|
||
|
||
W group Not used
|
||
|
||
X group Not used
|
||
|
||
Y group Not used
|
||
|
||
Z group Not used
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Vertical Mark Point usage
|
||
|
||
|
||
|
||
0 Not used
|
||
|
||
1 Not used
|
||
|
||
2 Not used
|
||
|
||
3 Not used
|
||
|
||
4 Not used
|
||
|
||
5 Not used
|
||
|
||
6 Not used
|
||
|
||
7 Temp used by [*THV] and friends
|
||
|
||
8 Top of current table entry ([*TEn]) column
|
||
|
||
9 Bottom of longest (so far) table entry column
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Command Macros Listing
|
||
|
||
|
||
|
||
(tbs)
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Internal macros Listing
|
||
|
||
|
||
|
||
(tbs)
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Command Macros
|
||
|
||
|
||
|
||
AX n,title Set appendix number "n", title "title"
|
||
|
||
|
||
|
||
>[*COR:AX=[*TBOL]< Make sure previous line is ended
|
||
>[ZXG0,1]< Flag in chapter/appendix
|
||
>[*COR:TCNUM=@=]< Set text of chapter/appendix number
|
||
>[*TITLE]< Define new title
|
||
>[*COR:TSUBTT==]< Clear subtitle
|
||
>[*THL0]< Clear all header-level information
|
||
>[ZGG2,TZXG2]< Get [*FT] setting for running head
|
||
>[ZZP][*PGI]< Advance to new page
|
||
>< This may unfortunately cause a blank page
|
||
>< if the [*TBOL] above terminated the pre-
|
||
>< ceding page, but it must be done this way
|
||
>[ZGG4,TZXG4]< Get [*FT] setting for running foot
|
||
>[ZZG1][ZZG3]< Reset [*FT]
|
||
>[*TSAVE][PR!P6,!P7][C.!P0]< Set up for Chapter heading text
|
||
>[FB]Appendix [*TCNUM][FR]/C< Print "Appendix n"
|
||
>[FB][*TTITLE][FR]/C< And the title beneath it
|
||
>[*TRSTR][VA36]/L< Reset for normal text
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
BEGIN Start typeset output
|
||
|
||
|
||
|
||
>[*COR:BEGIN=[ZSG4,1]< Set running foot back
|
||
>[ZUD1][ZXD1,-1]< Suppress initial page feed
|
||
>[*THV]< First title, etc.
|
||
>[ZVD1]< Restore page feed value
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
BL n Skip "n" * 12 points
|
||
|
||
|
||
|
||
>[*COR:BL=[*TBOL]< Make sure at start of line
|
||
>[ZXT1,@]< Read "number" of lines
|
||
>[ZMT1,12][VA!T1]< Advance that far
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
CH n,title Set chapter number "n" with title "title"
|
||
|
||
|
||
|
||
>[*COR:CH=[*TBOL]< Make sure line is ended
|
||
>[ZXG0,1]< Flag in chapter/appendix
|
||
>[*COR:TCNUM=@=]< Set text of chapter/appendix number
|
||
>[*TITLE]< Define new title
|
||
>[*COR:TSUBTT==]< Clear subtitle
|
||
>[*THL0]< Clear all header-level information
|
||
>[ZGG2,TZXG2]< Get [*FT] setting for running head
|
||
>[ZZP][*PGI]< Advance to new page
|
||
>< This may unfortunately cause a blank page
|
||
>< if the [*TBOL] above terminated the pre-
|
||
>< ceding page, but it must be done this way
|
||
>[ZGG4,TZXG4]< Get [*FT] setting for running foot
|
||
>[ZZG1][ZZG3]< Reset [*FT]
|
||
>[*TSAVE][PR!P6,!P7][C.!P0]< Set up for Chapter heading text
|
||
>[FB]Chapter [*TCNUM][FR]/C< Print "Chapter n"
|
||
>[FB][*TTITLE][FR]/C< Print title beneath that
|
||
>[*TRSTR][VA36]/L< Reset for normal text
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
COL n,g Set multiple columns (note this command
|
||
resets both the left and right margins)
|
||
n = Number of columns
|
||
g = Gutter (p.p's) between columns
|
||
|
||
|
||
|
||
>[*COR:COL=[ZXC2,@]< Pickup number of columns
|
||
>[ZXC1,@]< Pickup column gutter
|
||
>[*TCOLST][*TCOLSX]< Setup for text columns
|
||
>[ZXI0,C0][ZZI1]< Reset left and right margins ([*TCALIR] etc.)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
ELS End list
|
||
|
||
|
||
|
||
>[*COR:ELS=[*TBOL]< Insure at begining of a line
|
||
>[ZZL0]< Flag between lists leading
|
||
>[ZSI5,1][ZXT1,I5]< Decrement lists nesting level
|
||
>[ZET1,TLE0]< Set [*LE] for level 0 (illegal)
|
||
>[ZST1,1][ZET1,TLE1]< Set [*LE] for level 1
|
||
>[ZST1,1][ZET1,TLE2]< Set [*LE] for level 2
|
||
>[ZST1,1][ZET1,TLE3]< Set [*LE] for level 3
|
||
>[ZST1,1][ZET1,TLE4]< Set [*LE] for level 4
|
||
>[*TCALIL][IL.!T1]< Set new left indent as appropriate
|
||
>[*TCALIR][IR.!T1]< Set new right indent as appropriate
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
END End of typeset text, clean up
|
||
|
||
|
||
|
||
>[*COR:END=[*TBOL]< Ensure at begining of line
|
||
>[VC%][C.!P0][I%]< Clear world
|
||
>[ZGG4,TFOOTD]< Do a running foot if enabled
|
||
>[*TDEND]< Do any device-specific end of take clean up
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
ERROR Increment error counter, print "?"
|
||
|
||
|
||
|
||
>[*COR:ERROR=[*TBOL]< Make sure at start of line
|
||
>[ZXS9,$E][ZIS9][ME!S9]< Increment JUSTIF error counter
|
||
>/L? < Prefix error text
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
FT Put running head on first page
|
||
|
||
|
||
|
||
>[*COR:FT=[ZXG1,1]< Notify [*CH] & [*AX]
|
||
>[ZXG2,1]< Notify [*THV]
|
||
>=]/z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
HL1 Header Header level 1 text with header "Header"
|
||
|
||
|
||
|
||
>[*COR:HL1=[ZIH0]< Count times reentered
|
||
>[*THL1]< Stuff too big to fit in definition here
|
||
>[*TBOL]< Now, make sure on a new line
|
||
>[ZSH1,H0]< Allow for reentrancy
|
||
>[ZXT1,5][ZMT1,P3]< TP of 5 lines with a
|
||
>[ZXT2,2][ZMT2,P3]< Skip of 2 lines
|
||
>[*TTP]< Make sure have room on page
|
||
>[FB][ZNG0,TCNUM][ZNG0,TDOT]< Chapter number if in chapter/appendix
|
||
>[ZAH1].0< Header level one numbering
|
||
> [*TTHL1][FR]/L/L< Now print the header (in bold face)
|
||
>[ZXH0,-1]=]/Z< HL command now processed
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
HL2 Header Header level 2 text
|
||
|
||
|
||
|
||
>[*COR:HL2=[ZIH0]< Count times reentered
|
||
>[*COR:TTHL2=@=]< Save the HL2 text
|
||
>[ZIH2]< Increment header level
|
||
>[ZZH3][*COR:TTHL3==]< Clear header level 3
|
||
>[ZZH4][*COR:TTHL4==]< Clear header level 4
|
||
>[ZZH5][*COR:TTHL5==]< Clear header level 5
|
||
>[*TBOL]< Now, make sure at begining of line
|
||
>[ZSH2,H0]< Allow for reentrancy
|
||
>[ZXT1,4][ZMT1,P3]< TP of 4 lines with a
|
||
>[ZXT2,1][ZMT2,P3]< Skip of 1 line
|
||
>[*TTP]< Make sure have room on pages
|
||
>[ZNG0,TCNUM][ZNG0,TDOT]< Chapter number if in chapter/appendix
|
||
>[ZAH1].[ZAH2]< Header level 2 numbering
|
||
> [*TTHL2]/L/L< List the text body
|
||
>[ZXH0,-1]=]/Z< HL2 command finished
|
||
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
HL3 Header Header level 3 text
|
||
|
||
|
||
|
||
>[*COR:HL3=[ZIH0]< Count times reentered
|
||
>[*COR:TTHL3=@=]< Save the HL3 text
|
||
>[ZIH3]< Increment header level
|
||
>[ZZH4][*COR:TTHL4==]< Clear header level 4
|
||
>[ZZH5][*COR:TTHL5==]< Clear header level 5
|
||
>[*TBOL]< Now, make sure at begining of line
|
||
>[ZSH3,H0]< Allow for reentrancy
|
||
>[ZXT1,3][ZMT1,P3]< TP of 3 lines with a
|
||
>[ZXT2,P3]< Skip of only 1 line
|
||
>[*TTP]< Make sure room on page
|
||
>[ZNG0,TCNUM][ZNG0,TDOT]< Chapter number if in chapter/appendix
|
||
>[ZAH1].[ZAH2].[ZAH3]< Header level 3 numbering
|
||
> [*TTHL3]/L< Issue the text body
|
||
>[ZXH0,-1]=]/Z< HL3 command finished
|
||
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
HL4 Header Header level 4 text
|
||
|
||
|
||
|
||
>[*COR:HL4=[ZIH0]< Count times reentered
|
||
>[*COR:TTHL4=@=]< Save the HL4 text
|
||
>[ZIH4]< Increment header level
|
||
>[ZZH5][*COR:TTHL5==]< Clear header level 5
|
||
>[*TBOL]< Now, make sure at begining of line
|
||
>[ZSH4,H0]< Allow for reentrancy
|
||
>[ZXT1,2][ZMT1,P3]< TP of 2 lines with a
|
||
>[ZXT2,P3]< Skip of 1 line
|
||
>[*TTP]< Make sure room on page
|
||
>[ZNG0,TCNUM][ZNG0,TDOT]< Chapter number if in chapter/appendix
|
||
>[ZAH1].[ZAH2].[ZAH3].[ZAH4]< Header level 4 numbering
|
||
> [*TTHL4] - < Issue text body
|
||
>[ZXH0,-1]=]/Z< HL4 command finished
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
HL5 Header Header level 5 text
|
||
|
||
|
||
|
||
>[*COR:HL5=[ZIH0]< Count times reentered
|
||
>[*COR:TTHL5=@=]< Save the HL5 text
|
||
>[ZIH5]< Increment header level
|
||
>[*TBOL]< Now, make sure at begining of line
|
||
>[ZSH5,H0]< Adjust header level around reentrancy
|
||
>[ZXT1,2][ZMT1,P3]< TP of 2 lines with a
|
||
>[ZXT2,P3]< Skip of 1 line
|
||
>[*TTP]< Make sure room on page
|
||
>[ZNG0,TCNUM][ZNG0,TDOT]< Chapter number if in chapter/appendix
|
||
>[ZAH1].[ZAH2].[ZAH3].[ZAH4].< Higher level numbering
|
||
>[ZAH5]< Header level 5 numbering
|
||
> [*TTHL5] - < Issue text body
|
||
>[ZXH0,-1]=]/Z< HL5 command finished
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
I n Indent "n" p.p's from left (one-shot)
|
||
|
||
|
||
|
||
>[*COR:I=[*TBOL][ZXT1,@]< Read indent amount
|
||
>[HL.!T1,0,1]< Indent one line
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
IVLS i,j,k,l,m Set list parameters
|
||
i p.p's indent for each [*LS]
|
||
j inter-list extra leading
|
||
k inter-list t.p. (lines after "j")
|
||
l intra-list extra leading
|
||
m intra-list t.p. (lines after "l")
|
||
|
||
|
||
|
||
>[*COR:IVLS=[ZXI4,@]< Indent value in p.p's for each [*LS] nesting
|
||
>[ZXL6,@]< Inter-list (between lists) extra leading
|
||
>[ZXL7,@]< Inter-list test page (in addition to L6)
|
||
>[ZXL8,@]< Intra-list (between list items) extra leading
|
||
>[ZXL9,@]< Intra-list test page (in addition to L8)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
IVTB i, t, v, g Set table sub-column parameters
|
||
i indent p.p's
|
||
t test page p.p's
|
||
v leading between entries
|
||
g gutter between sub-columns
|
||
|
||
|
||
|
||
>[*COR:IVTB=[ZXJ9,@]< Pickup table indent
|
||
>[ZXJ8,@]< Pickup test page value
|
||
>[ZXJ7,@]< Pickup (extra) leading between entries
|
||
>[ZXJ6,@]< Pickup sub-column gutter
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
LALL List macro and command expansions
|
||
|
||
|
||
|
||
>[*COR:LALL=[ZPL,2]< Bump nesting count of [*LALL]'s
|
||
>[ZGL,TMJON]< If .GE. 0 then turn on listing ([MJ])
|
||
>[ZSL,1]< Make register "L" contain true value
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
LE List entry item follows
|
||
|
||
|
||
|
||
>[*COR:LE=< Not legal till see [*LS]
|
||
>[*ERROR]Not in a "List"/L/L< Issue error message
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
LM n Set left margin to "n" p.p's from 0
|
||
|
||
|
||
|
||
>[*COR:LM=[ZXI1,@]< Remember new left margin
|
||
>[*TCALIL][IL.!T1]< Set new left indent
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
LS Start a new list (recurses)
|
||
|
||
|
||
|
||
>[*COR:LS=[*TBOL]< Ensure at begining of a line
|
||
>[ZZL0]< Flag between lists leading
|
||
>[ZII5][ZXT1,I5]< Increment list level
|
||
>[ZST1,1][ZET1,TLE1]< Set for list level 1
|
||
>[ZST1,1][ZET1,TLE2]< Set for list level 2
|
||
>[ZST1,1][ZET1,TLE3]< Set for list level 3
|
||
>[ZST1,1][ZET1,TLE4]< Set for list level 4
|
||
>[ZST1,1][ZET1,TLE5]< Set for list level 5
|
||
>[*TCALIL][IL.!T1]< Set new left indent as appropriate
|
||
>[*TCALIR][IR.!T1]< Set new right indent as appropriate
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NHD No running head (but keep paging)
|
||
|
||
|
||
|
||
>[*COR:NHD=[ZXG2,-9999999999]< No running head (but keep paging)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NLV n,m,o,p,q Set header level to "n.m.o.p.q"
|
||
|
||
|
||
|
||
>[*COR:NLV=[ZXH1,@]< Load header level 1
|
||
>[ZXH2,@]< Load header level 2
|
||
>[ZXH3,@]< Load header level 3
|
||
>[ZXH4,@]< Load header level 4
|
||
>[ZXH5,@]< Load header level 5
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NM n Set page number to "n", enable paging
|
||
|
||
|
||
|
||
>[*COR:NM=[ZXP,@]< Set new page number
|
||
>[*PAGING]< Enable paging
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NNM Turn off page numbering
|
||
|
||
|
||
|
||
>[*COR:NNM=[ZZG7]< No page numbers on running head
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NOTE note,text Print "note" bold centered, text
|
||
|
||
|
||
|
||
>[*COR:NOTE=[*TBOL]< Make sure at nice place
|
||
>[ZII3]< Increment [*NOTE] nesting level
|
||
>[*TCALIL][IL.!T1]< New left indent
|
||
>[*TCALIR][IR.!T1]< New right indent
|
||
>[ZXT1,P3][ZMT1,5]< Test page of 5 lines
|
||
>[ZXT2,P3][*TTP]< With one blank line before "note"
|
||
>[FB]@[FR]/C/L< Print "NOTE" or whatever in centered bold
|
||
>@< The note text itself
|
||
>[*TBOL]< Make sure last line terminated
|
||
>[ZSI3,1]< Decrement nesting level
|
||
>[*TCALIL][IL.!T1]< Reset left indent
|
||
>[*TCALIR][IR.!T1]< Reset right indent
|
||
>[ZXT1,P3][ZMT1,3]< Test page to make sure not too close
|
||
>[ZXT2,P3][*TTP]< To bottom of page
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NPA Turn off paging completely
|
||
Note that [*AX] and [*CH] reset this
|
||
|
||
|
||
|
||
>[*COR:NPA=[VC9999999999]< Set [FB]HUGE[FR] page
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NRFOOT Turn off running feet
|
||
|
||
|
||
|
||
>[*COR:NRFOOT=[ZXG4,-999999999]<Turn off running feet
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NRHEAD Turn off running head(s)
|
||
|
||
|
||
|
||
>[*COR:NRHEAD=[ZXG2,-999999999]<Turn off running head(s)
|
||
>=]/z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NST Turn off subtitles in running head(s)
|
||
|
||
|
||
|
||
>[*COR:NST=[ZZG8]< No subtitles on running head(s)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
NTI Turn off titles, subtitles in running head(s)
|
||
|
||
|
||
|
||
>[*COR:NTI=[ZZG8][ZZG9]< No titles, subtitles on running head(s)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PARA i, s, t Set paragraphing parameters:
|
||
Indent "i" p.p's;
|
||
Skip "s" points;
|
||
Test Page "t" points.
|
||
|
||
|
||
|
||
>[*COR:PARA=[ZXQ0,@]< Read in paragraph indent
|
||
>[ZXQ1,@]< Read in skip value
|
||
>[ZXQ2,@]< Get test page values
|
||
>[IP.!Q0,.!Q1]< Tell JUSTIF (TP not yet implemented)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PG Force a new page
|
||
|
||
|
||
|
||
>[*COR:PG=[ZXC,1][VB]< Force premature page break at next line
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PGI Force a new page immediately
|
||
(this defeats allowing following [*HLn]
|
||
to provide running header information)
|
||
|
||
|
||
|
||
>[*COR:PGI=[ZXC,1][VB]/L< Force premature page break immediately
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PGCOL Force a new column
|
||
|
||
|
||
|
||
>[*COR:PGCOL=[VB]< Force premature column break
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PLCHAP points,leading Pointsize & leading for chap/app
|
||
(Must be issued from regular text)
|
||
|
||
|
||
|
||
>[*COR:PLCHAP=[ZXP6,@]< Read in pointsize for chapter titles
|
||
>[ZXP7,@]< And read in leading
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PLFOOT points,leading Pointsize & leading for running feet
|
||
(Must be issued from regular text)
|
||
|
||
|
||
|
||
>[*COR:PLFOOT=[ZXP8,@]< Read in pointsize for running feet
|
||
>[ZXP9,@]< And read in leading
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PLHEAD points,leading Pointsize & leading for running head(s)
|
||
(Must be issued from regular text)
|
||
|
||
|
||
>[*COR:PLHEAD=[ZXP4,@]< Read in pointsize for running head(s)
|
||
>[ZXP5,@]< And read in leading
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PLTEXT points,leading Pointsize & leading for regular text
|
||
(Must be issued from regular text)
|
||
|
||
|
||
|
||
>[*COR:PLTEXT=[ZXP2,@]< Read in pointsize for regular text
|
||
>[ZXP3,@]< And read in leading
|
||
>[PR!P2,!P3]< Set regular text parameters
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
PS h, w Set page size "w" p.p's by "h" p.p's
|
||
(Does not include space for any running feet,
|
||
resets both left and right margins)
|
||
|
||
|
||
|
||
>[*COR:PS=[*TBOL]< Insure at begining of fresh line
|
||
>[ZXS1,P1]< Old height of page
|
||
>[ZXP1,@]< New height of page
|
||
>[ZXS2,$M][ZDS2,$Y]< Remainder of old page
|
||
>[ZXT1,P1][ZPT1,S2][ZST1,S1]< Current difference of old and new page
|
||
>[ZXP0,@][CM.!P0]< Set new width of page
|
||
>[ZGT1,TVC]< If .GT. 0 then still room left on page
|
||
>[ZET1,PG]< If .EQ. 0 then time for a new page
|
||
>[ZLT1,PG]< If .LT. 0 then time for a new page
|
||
>[ZGT1,TCOLST]< If not new page, set columns
|
||
>[ZXI0,C0][ZZI1]< Reset left and right margin
|
||
>< (Necessary for multi-columning)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
RFOOT Turn on running feet
|
||
|
||
|
||
|
||
>[*COR:RFOOT=[ZXG4,1]< Turn on running feet
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
RHEAD Turn on running head(s)
|
||
|
||
|
||
|
||
>[*COR:RHEAD=[ZXG2,1]< Turn on running head(s)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
RM n Set right margin to "n" p.p's from 0
|
||
|
||
|
||
|
||
>[*COR:RM=[ZXI0,@]< Read in indent amount
|
||
>[*TCALIR][IR.!T1]< Set new right indent
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
SK n Skip "n" lines
|
||
|
||
|
||
|
||
>[*COR:SK=[*TBOL]< Start fresh line
|
||
>[AR@][*TEOL]< Skip "n" lines
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
SP v Set vertical leading to "v" points
|
||
|
||
|
||
|
||
>[*COR:SP=[ZXP3,@][V!P3]< Set and remember new stored leading
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
SUB n Print "n" as subscript
|
||
|
||
|
||
|
||
>[*COR:SUB=[ZXT5,$P][ZXT6,$V]< Get current pointsize and leading
|
||
>[ZU$P]< Save pointsize for moment
|
||
>[ZMT5,60][ZDT5,10000]< T5:=60% of current pointsize
|
||
>[ZMT6,D2][ZDT6,10000]< T6:=(D2)% of current leading
|
||
>[PR!T5][EJ-!T6]< Smaller print, lower baseline
|
||
>[ZET6,TLPRN]< If no baseline then type "(" instead
|
||
>@< The subscript itself
|
||
>[ZET6,TRPRN]< If no baseline then type ")" instead
|
||
>[EJ%][ZVT5][ZDT5,100][PR!T5]< Restore world
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
SUBTTL text Set page header subtitle to "text"
|
||
|
||
|
||
|
||
>[*COR:SUBTTL=<
|
||
>[*COR:TSUBTT=@=]< Define new subtitle text
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
SUP n Print "n" as superscript
|
||
|
||
|
||
|
||
>[*COR:SUB=[ZXT5,$P][ZXT6,$V]< Get current pointsize and leading
|
||
>[ZU$P]< Save pointsize for moment
|
||
>[ZMT5,60][ZDT5,10000]< T5:=60% of current pointsize
|
||
>[ZMT6,D2][ZDT6,10000]< T6:=(D2)% of current leading
|
||
>[PR!T5][EJ-!T6]< Smaller print, lower baseline
|
||
>[ZET6,TLPRN]< If no baseline then type "(" instead
|
||
>@< The superscript itself
|
||
>[ZET6,TRPRN]< If no baseline then type ")" instead
|
||
>[EJ%][ZVT5][ZDT5,100][PR!T5]< Restore world
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TABLE2 w1, w2 Set for two column table
|
||
w1 width of sub-column 1
|
||
w2 width of sub-column 2
|
||
|
||
|
||
>[*COR:TABLE2=[ZXJ1,@]< Pickup width of sub-column 1
|
||
>[ZXJ2,@]< Pickup width of sub-column 2
|
||
>[ZZJ3][ZZJ4][ZZJ5]< Clear others
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TABLE3 w1, w2, w3 Set for three column table
|
||
w1 width of sub-column 1
|
||
w2 width of sub-column 2
|
||
w3 width of sub-column 3
|
||
|
||
|
||
|
||
>[*COR:TABLE3=[ZXJ1,@]< Pickup width of sub-column 1
|
||
>[ZXJ2,@][ZXJ3,@]< Pickup widths of subcolumns 2 and 3
|
||
>[ZZJ4][ZZJ5]< Clear the rest
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TABLE4 w1, w2, w3, w4 Set for four column table
|
||
w1 width of sub-column 1
|
||
w2 width of sub-column 2
|
||
w3 width of sub-column 3
|
||
w4 width of sub-column 4
|
||
|
||
|
||
|
||
>[*COR:TABLE4=[ZXJ1,@]< Pickup width of sub-column 1
|
||
>[ZXJ2,@][ZXJ3,@][ZXJ4,@]<Pickup widths of subcolumns 2, 3, and 4
|
||
>[ZZJ5]< Clear the rest
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TABLE5 w1, w2, w3, w4, w5 Set for four column table
|
||
w1 width of sub-column 1
|
||
w2 width of sub-column 2
|
||
w3 width of sub-column 3
|
||
w4 width of sub-column 4
|
||
|
||
|
||
|
||
>[*COR:TABLE5=[ZXJ1,@]< Pickup width of subcolumn 1
|
||
>[ZXJ2,@][ZXJ3,@][ZXJ4,@]<Pickup widths of subcolumns 2, 3, and 4
|
||
>[ZXJ5,@]< Pickup width of subcolumn 5
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TABS8 Set Tab stops every 8 "spaces"
|
||
|
||
|
||
|
||
>[*COR:TABS8=[T%]< First clear old tab stops
|
||
>[TS4.10,9.7,14.5,19.2,24.0,28.10,33.7,38.5,43.2,48.0,52.10,57.7,62.5,67.2,72.0,76.10]<
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TE2 t1, t2 Text entry for 2-sub-column table
|
||
t1 text for sub-column 1
|
||
t2 text for sub-column 2
|
||
|
||
|
||
|
||
>[*COR:TE2=[*TTEI]< Setup for table entry
|
||
>@< Text body of sub-column 1
|
||
>[ZXS1,J1][ZXS2,J2][*TTBLTE]< Set for table sub-column 2
|
||
>@< Text body of sub-column 2
|
||
>[*TTEND]< End of table entry, position past longest
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TE3 t1, t2, t3 Text entry for 3-sub-column table
|
||
t1 text for sub-column 1
|
||
t2 text for sub-column 2
|
||
t3 text for sub-column 3
|
||
|
||
|
||
>[*COR:TE3=[*TTEI]< Setup for table entry
|
||
>@< Text body of sub-column 1
|
||
>[ZXS1,J1][ZXS2,J2][*TTBLTE]< Set for table sub-column 2
|
||
>@< Text body of sub-column 2
|
||
>[ZXS1,J2][ZXS2,J3][*TTBLTE]< Set for table sub-column 3
|
||
>@< Text body of sub-column 3
|
||
>[*TTEND]< End of table entry, position past longest
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TE4 t1, t2, t3, t4 Text entry for 4-sub-column table
|
||
t1 text for sub-column 1
|
||
t2 text for sub-column 2
|
||
t3 text for sub-column 3
|
||
t4 text for sub-column 4
|
||
|
||
|
||
|
||
>[*COR:TE4=[*TTEI]< Setup for table entry
|
||
>@< Text body of sub-column 1
|
||
>[ZXS1,J1][ZXS2,J2][*TTBLTE]< Set for table sub-column 2
|
||
>@< Text body of sub-column 2
|
||
>[ZXS1,J2][ZXS2,J3][*TTBLTE]< Set for table sub-column 3
|
||
>@< Text body of sub-column 3
|
||
>[ZXS1,J3][ZXS2,J4][*TTBLTE]< Set for table sub-column 4
|
||
>@< Text body of sub-column 4
|
||
>[*TTEND]< End of table entry, position past longest
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TE5 t1, t2, t3, t4, t5 Text entry for 5-sub-column table
|
||
t1 text for sub-column 1
|
||
t2 text for sub-column 2
|
||
t3 text for sub-column 3
|
||
t4 text for sub-column 4
|
||
|
||
|
||
|
||
>[*COR:TE5=[*TTEI]< Setup for table entry
|
||
>@< Text body of sub-column 1
|
||
>[ZXS1,J1][ZXS2,J2][*TTBLTE]< Set for table sub-column 2
|
||
>@< Text body of sub-column 2
|
||
>[ZXS1,J2][ZXS2,J3][*TTBLTE]< Set for table sub-column 3
|
||
>@< Text body of sub-column 3
|
||
>[ZXS1,J3][ZXS2,J4][*TTBLTE]< Set for table sub-column 4
|
||
>@< Text body of sub-column 4
|
||
>[ZXS1,J4][ZXS2,J5][*TTBLTE]< Set for table sub-column 5
|
||
>@< Text body of sub-column 5
|
||
>[*TTEND]< End of table entry, position past longest
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TITLE text Set page header title to "text"
|
||
|
||
|
||
|
||
>[*COR:TITLE=<
|
||
>[*COR:TTITLE=@=]< Define new title text
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TP n, s Test column for at least "n" lines left
|
||
if no new column skip "s" lines
|
||
|
||
|
||
|
||
>[*COR:TP=[*TBOL]< Make sure at begining of line
|
||
>[ZXT1,@][ZMT1,P3]< T1:=t.p. value in points
|
||
>[ZXT2,@][ZMT2,P3]< T2:=skip value in points
|
||
>[*TTP]< Do the actual test page (column) work
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TPV v, s Test column for at least "v" points left
|
||
if no new column skip "s" points
|
||
|
||
|
||
|
||
>[*COR:TPV=[*TBOL]< Make sure at begining of line
|
||
>[ZXT1,@]< T1:=t.p. value in points
|
||
>[ZXT2,@]< T2:=skip value in points
|
||
>[*TTP]< Do the actual test page (column) work
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
XALL Turn off macro and command listing
|
||
|
||
|
||
|
||
>[*COR:XALL=[ZSL,1]< Bump nesting count of [*SALL]'s
|
||
>[ZLL,TMJOFF]< If .LT. 0 then turn off listing ([MJ%])
|
||
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Internal usage macros
|
||
|
||
|
||
|
||
|
||
|
||
|
||
TBOL Make sure at begining of line
|
||
|
||
|
||
|
||
>[*COR:TBOL=/?< Make sure at begining of line
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TCALIL Calculate total left indent into T1
|
||
|
||
|
||
|
||
>[*COR:TCALIL=[ZXT1,I1]< Get left margin
|
||
>[ZXT2,I2][ZMT2,I3][ZPT1,T2]< Left indent for [*NOTE]
|
||
>[ZXT2,I4][ZMT2,I5][ZPT1,T2]< Left indent for [*LE]
|
||
>[ZPT1,J0]< Indent for table sub-column(s)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TCALIR Calculate total right indent into T1
|
||
|
||
|
||
|
||
>[*COR:TCALIR=[ZXT1,C0]< Get column width
|
||
>[ZST1,I0]< Get indent to right margin
|
||
>[ZXT2,I2][ZMT2,I3][ZPT1,T2]< Right indent for [*NOTE]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TCOLST Setup parameters for multi-columns
|
||
|
||
|
||
|
||
>[*COR:TCOLST=[ZXT1,C1]< Column gutter
|
||
>[ZMT1,C2][ZST1,C1]< T1 := total space devoted to gutter
|
||
>[ZXT2,P0][ZST2,T1]< T2 := total space available to text
|
||
>[ZDT2,C2][ZXC0,T2]< C0 := width of each column
|
||
>[C.!C0][VG.!C1]< Set column width and gutter
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TCOLSX Set column parameters
|
||
|
||
|
||
|
||
>[*COR:TCOLSX=<
|
||
>[ZXC,C2][C.!C0]< Set column width for text column(s)
|
||
>< (Must set column width before [VC] com-
|
||
>< mand; [VC] remembers widest column set,
|
||
>< which otherwise would be [C.!P0] above)
|
||
>[ZXT1,$M][ZDT1,$Y]< Calculate column length for text column(s)
|
||
>[VM7][VC%][VP7][VC!T1]< Set column length for text column(s)
|
||
>< (Must reset [VC%] so [VC] returns here;
|
||
>< [VC] remembers longest column set, which
|
||
>< otherwise would be from [VC!P1] above)
|
||
>[ZXC3,$U]< Remember total leading at start of column
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TCNUM Text for chapter/appendix level
|
||
|
||
|
||
|
||
>[*COR:TCNUM=< Initially blank
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TDASH Print "-"
|
||
|
||
|
||
|
||
>[*COR:TDASH=-< "-"
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TDOT Print "."
|
||
|
||
|
||
|
||
>[*COR:TDOT=.< "."
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TEOL Give forced end of line
|
||
|
||
|
||
|
||
>[*COR:TEOL=/L< Quad left will do for now
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFACE Set to proper face in T1
|
||
|
||
|
||
>[*COR:TFACE=[ZCT1,10000]< Reduce to font number (ignore [FM])
|
||
>[ZXT2,T1][ZCT2,10]< T2:=subface index (1=italics, etc.)
|
||
>[ZST1,T2][F!T1]< T1:=master face font number
|
||
>[ZST2,1][ZET2,TFI]< If subface 1 then italics face
|
||
>[ZST2,1][ZET2,TFB]< If subface 2 then bold face
|
||
>[ZST2,1][ZET2,TFS]< If subface 3 then small caps face
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFB Set bold face
|
||
|
||
|
||
|
||
>[*COR:TFB=[FB]< Bold face command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFFEED Do a logical page feed (seperation)
|
||
|
||
|
||
|
||
>[*COR:TFFEED=[ZED1,TLPFF]< Do form feed if available
|
||
>[ZXT2,D1][ZGT2,TVAT2]< Else do immediate lead 'tween pages
|
||
>[ZXQ,$U]/Z< Leading at start of page (text)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFI Set italics face
|
||
|
||
|
||
|
||
>[*COR:TFI=[FI]< Italics face command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFM Set face modify(ed)
|
||
|
||
|
||
|
||
>[*COR:TFM=[FM]< Face modify command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFOOTD Do a running foot
|
||
|
||
|
||
|
||
>[*COR:TFOOTD=<
|
||
>[F!D0][PR!P8,!P9]< Set for running foot text
|
||
>[ZXT1,$U][ZST1,Q][ZDT1,$Y]< T1:=total points so far this page
|
||
>[ZXT2,P1][ZST2,T1][VA!T2]< Position for running foot
|
||
>[*TFOOTR]< Print the running foot
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFS Set small caps face
|
||
|
||
|
||
|
||
>[*COR:TFS=[FS]< Small caps face command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TFU Set face underline(d)
|
||
|
||
|
||
|
||
>[*COR:TFU=[FU]< Face underline command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THEADB Force immediate blank running head
|
||
|
||
|
||
|
||
>[*COR:THEADB=<
|
||
>[ZUG7][ZUG8][ZUG9]< Save current header setting
|
||
>[ZZG7][ZZG8][ZZG9]< Turn off all parts of head
|
||
>[*THEADD]< Do the running head
|
||
>[ZVG9][ZVG8][ZVG7]< Now restore header settings
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THEADD Do a running head
|
||
|
||
|
||
|
||
>[*COR:THEADD=<
|
||
>[F!D0][PR!P4,!P5]< Set for page header text
|
||
>[*THEADR]< Print the running head
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THEADR Print the running head text
|
||
|
||
|
||
|
||
>[*COR:THEADR=[ZNG9,TTITLE]/Q< Print title if titling
|
||
>[ZNG7,TPAGE][ZNG7,TPAGNO]/R< Print page number if numbering
|
||
>[ZNG8,TSUBTT]/L/L/L< Print subtitle if subtitling
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THL0 Reset all header level information
|
||
|
||
|
||
|
||
>[*COR:THL0=[ZXH0,-1]< Just to make sure . . .
|
||
>[ZZH1][*COR:TTHL1==]< Clear header level 1
|
||
>[ZZH2][*COR:TTHL2==]< Clear header level 2
|
||
>[ZZH3][*COR:TTHL3==]< Clear header level 3
|
||
>[ZZH4][*COR:TTHL4==]< Clear header level 4
|
||
>[ZZH5][*COR:TTHL5==]< Clear header level 5
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THL1 Helper for HL1
|
||
|
||
|
||
|
||
>[*COR:THL1=[*COR:TTHL1=@=]< Save the HL1 text
|
||
>[*COR:TSUBTT=[*TTHL1]=]< And give a free [*SUBTTL] a la RUNOFF
|
||
>[ZIH1]< Increment header level
|
||
>[ZZH2][*COR:TTHL2==]< Clear header level 2
|
||
>[ZZH3][*COR:TTHL3==]< Clear header level 3
|
||
>[ZZH4][*COR:TTHL4==]< Clear header level 4
|
||
>[ZZH5][*COR:TTHL5==]< Clear header level 5
|
||
>< The levels are advanced before the [*TBOL]
|
||
>< in case the last command was a [*PG]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THV Paging macro (set by [VH command)
|
||
|
||
|
||
|
||
>[*COR:THV=[*TSAVE]< Save the state of the world
|
||
>[VM7][VC%][VP7][I%][C.!P0]< Turn off all columning or paging
|
||
>[ZGG4,TFOOTD]< Do running foot if set
|
||
>[*TFFEED]< Advance to "top of next page"
|
||
>[VC!P1]< Set size (length) of this page
|
||
>[ZIP]< Increment the page number
|
||
>[ZEG2,THEADB]< Do blank header if (e.g.) [*CH]
|
||
>[ZGG2,THEADD]< Otherwise do a normal running header
|
||
>[ZZG1][ZZG3]< Reset [*FT] anti-blanker
|
||
>[ZIG2][ZIG4]< Bump [*CH] blanker
|
||
>[*TRSTR]< Restore the state of the world
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
THVCL End of column macro (calls THV)
|
||
|
||
|
||
|
||
>[*COR:THVCL=[ZSC,1][ZEC,THV]< Call THV macro if end of page
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLE0 Define [*LE] for list level 0 (illegal)
|
||
|
||
|
||
|
||
>[*COR:TLE0=[*COR:LE=< Define the [*LE] macro
|
||
>[*ERROR]Not in a "List"/L/L< Issue error message
|
||
>=]< End of [*LE] macro definition
|
||
>[ZZL1]< Reset list level 1 counter
|
||
>[ZXT1,P3][ZMT1,L7][ZPT1,L6]< Test page value
|
||
>[ZXT2,L6][*TTP]< And skip value
|
||
>[ZZT1]< Clear T1 for [*LS]/[*ELS]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLE1 Define [*LE] macro for list level 1
|
||
|
||
|
||
|
||
>[*COR:TLE1=[*COR:LE=< Define [*LE] macro
|
||
>[*TBOL]< Insure at start of a new line
|
||
>[ZXT1,P3][ZMT1,L7][ZPT1,L6]< Inter-list test page value
|
||
>[ZXT2,L6][ZEL0,TTP]< Do inter-list leading if first item
|
||
>[ZXT1,P3][ZMT1,L9][ZPT1,L8]< Intra-list test page value
|
||
>[ZXT2,L8][ZGL0,TTP]< Do intra-list leading if otherwise
|
||
>[ZIL0]< Note we are now "otherwise" until [*LS]/[*ELS]
|
||
>[HL-3,0,1]< Put list item number out 3 picas
|
||
>[ZIL1][ZAL1]./Z< Number this list item
|
||
>=]< End of [*LE] macro definition
|
||
>[ZZL2]< Reset next lower level's counter
|
||
>[ZZT1]< Clear T1 for [*LS]/[*ELS]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLE2 Define [*LE] macro for list level 2
|
||
|
||
|
||
|
||
>[*COR:TLE2=[*COR:LE=< Define [*LE] macro
|
||
>[*TBOL]< Insure at start of a new line
|
||
>[ZXT1,P3][ZMT1,L7][ZPT1,L6]< Inter-list test page value
|
||
>[ZXT2,L6][ZEL0,TTP]< Do inter-list leading if first item
|
||
>[ZXT1,P3][ZMT1,L9][ZPT1,L8]< Intra-list test page value
|
||
>[ZXT2,L8][ZGL0,TTP]< Do intra-list leading if otherwise
|
||
>[ZIL0]< Note we are now "otherwise" until [*LS]/[*ELS]
|
||
>[HL-3,0,1]< Put list item number out 3 picas
|
||
>[ZIL2][ZAL2]./Z< Number this list item
|
||
>=]< End of [*LE] macro definition
|
||
>[ZZL3]< Reset next lower level's counter
|
||
>[ZZT1]< Clear T1 for [*LS]/[*ELS]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLE3 Define [*LE] macro for list level 3
|
||
|
||
|
||
|
||
>[*COR:TLE3=[*COR:LE=< Define [*LE] macro
|
||
>[*TBOL]< Insure at start of a new line
|
||
>[ZXT1,P3][ZMT1,L7][ZPT1,L6]< Inter-list test page value
|
||
>[ZXT2,L6][ZEL0,TTP]< Do inter-list leading if first item
|
||
>[ZXT1,P3][ZMT1,L9][ZPT1,L8]< Intra-list test page value
|
||
>[ZXT2,L8][ZGL0,TTP]< Do intra-list leading if otherwise
|
||
>[ZIL0]< Note we are now "otherwise" until [*LS]/[*ELS]
|
||
>[HL-3,0,1]< Put list item number out 3 picas
|
||
>[ZIL3][ZAL3]./Z< Number this list item
|
||
>=]< End of [*LE] macro definition
|
||
>[ZZL4]< Reset next lower level's counter
|
||
>[ZZT1]< Clear T1 for [*LS]/[*ELS]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLE4 Define [*LE] macro for list level 4
|
||
|
||
|
||
|
||
>[*COR:TLE4=[*COR:LE=< Define [*LE] macro
|
||
>[*TBOL]< Insure at start of a new line
|
||
>[ZXT1,P3][ZMT1,L7][ZPT1,L6]< Inter-list test page value
|
||
>[ZXT2,L6][ZEL0,TTP]< Do inter-list leading if first item
|
||
>[ZXT1,P3][ZMT1,L9][ZPT1,L8]< Intra-list test page value
|
||
>[ZXT2,L8][ZGL0,TTP]< Do intra-list leading if otherwise
|
||
>[ZIL0]< Note we are now "otherwise" until [*LS]/[*ELS]
|
||
>[HL-3,0,1]< Put list item number out 3 picas
|
||
>[ZIL4][ZAL4]./Z< Number this list item
|
||
>=]< End of [*LE] macro definition
|
||
>[ZZL5]< Reset next lower level's counter
|
||
>[ZZT1]< Clear T1 for [*LS]/[*ELS]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLE5 Define [*LE] macro for list level 5
|
||
|
||
|
||
|
||
>[*COR:TLE5=[*COR:LE=< Define [*LE] macro
|
||
>[*TBOL]< Insure at start of a new line
|
||
>[ZXT1,P3][ZMT1,L7][ZPT1,L6]< Inter-list test page value
|
||
>[ZXT2,L6][ZEL0,TTP]< Do inter-list leading if first item
|
||
>[ZXT1,P3][ZMT1,L9][ZPT1,L8]< Intra-list test page value
|
||
>[ZXT2,L8][ZGL0,TTP]< Do intra-list leading if otherwise
|
||
>[ZIL0]< Note we are now "otherwise" until [*LS]/[*ELS]
|
||
>[HL-3,0,1]< Put list item number out 3 picas
|
||
>[ZIL5][ZAL5]./Z< Number this list item
|
||
>=]< End of [*LE] macro definition
|
||
>[ZZT1]< Clear T1 for [*LS]/[*ELS]
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLPFF Do a line-printer (ASCII) form feed
|
||
|
||
|
||
|
||
>[*COR:TLPFF=+&< Print form feed character
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TLPRN Print "("
|
||
|
||
|
||
|
||
>[*COR:TLPRN=(< "(" CHARACTER
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TMJOFF Do [MJ%]
|
||
|
||
|
||
|
||
>[*COR:TMJOFF=[MJ%]< Turn off command and macro listing
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TMJON Do [MJ]
|
||
|
||
|
||
|
||
>[*COR:TMJON=[MJ]< Turn on command and macro listing
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TNPGVA Do a skip ([VA!T2]) if not at top of page
|
||
|
||
|
||
|
||
>[*COR:TNPGVA=[ZXT1,C3]< Leading at start of this text column(s)
|
||
>[ZST1,$U]< Less leading at current position
|
||
>[ZLT1,TVAT2]< If .LT. 0 then not at top of column(s)
|
||
>[ZXT1,-1]< Insure T1 negative (e.g., [*TTP])
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TPAGE Print "Page"
|
||
|
||
|
||
|
||
>[*COR:TPAGE=Page < "Page"
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TPAGNO Print page number
|
||
|
||
|
||
|
||
>[*COR:TPAGNO=[ZGG0,TCNUM]< If chapter/appendix then chapter number
|
||
>[ZGG0,TDASH][ZAP]< Print current page number
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TPOSB Position to bottom of page (running foot)
|
||
|
||
|
||
|
||
>[*COR:TPOSB=[ZXT1,P1]< Total page depth
|
||
>[ZPT1,Q]< Total leading at end of page
|
||
>[ZST1,$U]< T1 := amount of leading left this page
|
||
>[VA!T1]/Z< Position to bottom of [*PS] page
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TRPRN Print ")"
|
||
|
||
|
||
|
||
>[*COR:TRPRN=)< ")"
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TRSTR Restore state of world to normal
|
||
(Called only after [*TSAVE])
|
||
|
||
|
||
|
||
>[*COR:TRSTR=[ZVT1][*TFACE]< Restore face to user-specified
|
||
>[PR!P2,!P3]< Re-set pointsize and leading
|
||
>[*TCOLSX]< Re-set column parameters
|
||
>[*TCALIL][IL.!T1]< Re-set left indent
|
||
>[*TCALIR][IR.!T1]< Re-set right indent
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TSAVE Save state of world
|
||
|
||
|
||
|
||
>[*COR:TSAVE=[ZU$F]< Save current face
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TSUBTT Text body of subtitle
|
||
|
||
|
||
|
||
>[*COR:TSUBTT=< Initially null (no subtitle seen yet)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTBLTE Advance to next table sub-column
|
||
|
||
|
||
|
||
>[*COR:TTBLTE=[*TBOL]< Ensure at start of new line
|
||
>[*TTBLTV]< Check for longest sub-column
|
||
>[ZPJ0,S1][ZPJ0,J6]< Advance sub-column indent measure
|
||
>[*TCALIL][IL.!T1]< Set new sub-column indent
|
||
>[ZPT1,S2][C.!T1]< Set width for table sub-column
|
||
>[VP8]< Position for next table sub-column
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTBLTV Test for longest table sub-column
|
||
|
||
|
||
|
||
>[*COR:TTBLTV=[ZXT1,$U]< Total leading so far
|
||
>[ZST1,J][ZGT1,TTBLVM]< Mark longest table sub-column
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTBLVM Mark longest table sub-column
|
||
|
||
|
||
|
||
>[*COR:TTBLVM=[ZXJ,$U]< Remember leading at longest point
|
||
>[VM9]< And markpoint so we can [VP] later
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTEI Internal [*TE?] initializer
|
||
|
||
|
||
|
||
>[*COR:TTEI=[*TBOL]< Ensure at start of line
|
||
>[ZXT1,J8][ZZT2][ZGT1,TTP]< Do test page
|
||
>[VM8]< Mark vertical start of sub-column
|
||
>[ZXJ,$U]< Longest sub-column so far
|
||
>[ZXJ0,J9][*TCALIL][IL.!T1]< Set initial table indent
|
||
>[ZPT1,J1][C.!T1]< Set sub-column 1 column width
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTEND End of TE? commands
|
||
|
||
|
||
|
||
>[*COR:TTEND=< Common commands to end TE? commands
|
||
>[*TBOL][*TTBLTV][VP9]< Check and position to longest sub-column
|
||
>[ZXT1,J8][ZXT2,J7][ZGT1,TTP]< Do any between-entry leading
|
||
>[ZZJ0][*TCALIL][IL.!T1]< Reset left margin for normal text
|
||
>[C.!C0]< Reset text column width
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTHL1 Text body of HL1
|
||
|
||
|
||
|
||
>[*COR:TTHL1=< Initially null
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTHL2 Text body of HL2
|
||
|
||
|
||
|
||
>[*COR:TTHL2=< Initially null
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTHL3 Text body of HL3
|
||
|
||
|
||
|
||
>[*COR:TTHL3=< Initially null
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTHL4 Text body of HL4
|
||
|
||
|
||
|
||
>[*COR:TTHL4=< Initially null
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTHL5 Text body of HL5
|
||
|
||
|
||
|
||
>[*COR:TTHL5=< Initially null
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTSDS Print " - "
|
||
|
||
|
||
|
||
>[*COR:TTSDS= - < The advertised " - "
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTITLE Text body of title
|
||
|
||
|
||
|
||
>[*COR:TTITLE=< Initially null (no title seen yet)
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TTP Internal test page (column) worker
|
||
T1:=t.p. value in points
|
||
T2:=skip value in points
|
||
|
||
|
||
|
||
>[*COR:TTP=[ZMT1,$Y][ZST1,$M]< T1:=negative of room left
|
||
>[ZLT1,TNPGVA][ZET1,TNPGVA]< If .LE. 0 then room on column, do SKIP
|
||
>[ZGT1,PGCOL]< If .GT. 0 then new column, no SKIP
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TVAT2 Do [VA!T2]
|
||
|
||
|
||
|
||
>[*COR:TVAT2=[VA!T2]< Do [VA!T2] command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TVC Do [VC!T1]
|
||
|
||
|
||
|
||
>[*COR:TVC=[VC!T1]< Set new rest of page
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TZXG2 Do [ZXG2,G1]
|
||
|
||
|
||
|
||
>[*COR:TZXG2=[ZXG2,G1]< Do the [ZXG2,G1] command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
TZXG4 Do [ZXG4,G3]
|
||
|
||
|
||
|
||
>[*COR:TZXG4=[ZXG4,G3]< Do the [ZXG4,G3] command
|
||
>=]/Z<
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
|
||
|
||
Initialization
|
||
|
||
|
||
|
||
>[ZXG2,0]< Default is no first title
|
||
>[*THL0]< Initialize header-level counters
|
||
>[ZXG0,0]< No chapter or appendices yet
|
||
>[ZXG7,1][ZXG8,1][ZXG9,1]< Print page number, title, subtitles
|
||
>[ZXI0,42.0]< Right margin of 42 picas (7 inches)
|
||
>[ZXI1,0]< Left margin of 0 picas
|
||
>[ZXI2,3.0][ZXI3,0]< [*NOTE] indent of 3 picas, none yet seen
|
||
>[ZXI4,3.0][ZXI5,0]< [*LE] indent of 3 picas, none yet seen
|
||
>[ZXL6,1.0][ZXL7,2]< Default inter-list leading and t.p.
|
||
>[ZXL8,0.0][ZXL9,1]< Default intra-list leading and t.p.
|
||
>[ZXP,0]< Initial page number
|
||
>[ZXP0,42.0]< Page size of 42 picas wide
|
||
>[ZXP1,60.0]< By 60 picas (10 inches, 60 lines) long
|
||
>[ZXP2,10][ZXP3,12]< Regular text at 10 on 12
|
||
>[ZXP4,10][ZXP5,12]< Page headers at 10 on 12
|
||
>[ZXP6,16][ZXP7,18]< Chapter/appendix titles at 16 on 18
|
||
>[ZXP8,10][ZXP9,12]< Footnotes at 10 on 12
|
||
>[ZXC0,P0][ZXC1,3.0][ZXC2,1]< Initially one column as wide as page size
|
||
>[ZXQ0,3.0]< Paragraph indent of 3 picas
|
||
>[ZXQ1,12]< With one blank line between paragraphs
|
||
>[ZXQ2,36]< And a test page of at least 36 points
|
||
>[ZXJ6,3.0]< Table "gutter" of 3 picas
|
||
>[ZXJ7,0]< No extra spacing between table entries
|
||
>[ZXJ8,3.0]< Table entry test page of 3 picas
|
||
>[ZXJ9,0]< No special table indent
|
||
|
||
|
||
>[*TABS8]< Setup "normal" tab stops
|
||
>[*RHEAD][*NRFOOT]< Default is running head, no running foot
|
||
>[PR!P2,!P3]< Set pointsize and leading
|
||
>[CM.!P0][*TCOLST]< Set column width information
|
||
>[VC!P1]< Set column depth
|
||
>[*TCALIL][IL.!T1]< Set any left indent
|
||
>[*TCALIR][IR.!T1]< Set any right indent
|
||
>[VHTHVCL]< Start of column macro
|
||
> |