Google
 

Trailing-Edge - PDP-10 Archives - BB-M836A-BM - tools/sed/sedrno.rnm
There are 2 other files named sedrno.rnm in the archive. Click here to see a list.
.enable bar
.right margin 64
.variable subsup [ ]
.title RUNOFF
.center;RUNOFF
.skip 1
.center;December 1979
.skip 1
.center;The RUNOFF file that created this manual can be found as
.center;RNO:RUNOFF.RNM
.SKIP 1
.para 0
.begin bar
This manual was created with the purpose of being read using the
full 96 character set of ASCII.  Any attempts to read this manual
with less than the 96 character set will result in some sections
being unreadable.
.end bar
.skip 1
.begin bar
All changes to this manual (from the initial version) have change bars
(_! or _|) in the leftmost column of the line that contains changed
information.
This manual will always reflect the version of RUNOFF residing on NEW:
(if there is no version on NEW: then it reflects SYS:).
.end bar
.para 0
RUNOFF is a DECsystem-10 program that enables you to prepare documents easily
in conjunction with a text editor. The user prepares his material using a
text editor such as SOS or TECO. The user includes not only textual material,
but also case and formatting information. RUNOFF then takes the file and
reproduces it onto the line printer, teletype or other file to produce a
final copy or final file image. It performs the formatting and case shifting
as directed, and will also perform line justification, page numbering and
titling, etc., as desired.
.paragraph
The principal benefit of such a program is that files prepared for use with
it may be edited and corrected easily. Small or large amounts of material may
be added or deleted, and unchanged material need not be retyped. After a set
of changes, you run your file through RUNOFF to produce a new copy which is
properly paged and formatted. Documentation may thus be updated as necessary
without requiring extensive retyping.
.paragraph
.begin bar
This writeup is as complete a description of RUNOFF as can be found. The
UTILITIES manual can be consulted for a DEC description of RUNOFF (standard
DEC supplied RUNOFF without any of the fancy DIABLO, Hyphenation, and MACRO
features.).
.end bar
There are three HELP files which list all the switches and commands to RUNOFF.
"HELP RUNOFF" will type a list of all switches allowable in the
RUNOFF command string and a short description of each.
"HELP RUNINP" types a list of all commands allowable in the source
file and a short description of each.
"HELP RUNHYP" types a list of the additional commands available
from the latest version of RUNOFF.
.skip 2
.test page 20;
.chapter On-Line Operation
.INDEX ^ON-^LINE ^OPERATION
.paragraph
RUNOFF can be run in the following way:
.skip 1
####.R RUNOFF
.break
####*command-string
.skip 1
"command-string" has the following format:
.INDEX ^COMMAND STRING
.skip 1
####outfile/switches=infile
.skip 1
or just (for default outfile):
.skip 1
####infile/switches
.skip 1
.begin bar
Switches will be read from SWITCH.INI if a line of the form
.break
####RUNOFF<:NAME>/SWITCHES
.break
exists.  (<:NAME> is optional)
if :NAME is specified then the set of switches on that line
may be accessed by _/OPTION:NAME in the command string to
RUNOFF.
.end bar
.TEST PAGE 10
.paragraph
The default device is DSK:.
The default output name is  the  same  as the  input  name.
The  default output extension is a function of the input extension as follows:
.skip 1
.LITERAL
input ext ... output ext
  .RNO           .MEM
  .RND           .DOC
  .RNH           .HLP
  none           .MEM
  .FOR           .PLM
  .MAC           .PLM
  .F40           .PLM
  other          .MEM
.END LITERAL
.SKIP 1
If no input extension is supplied in the command, the standard extensions
will be tried.
.header level 1 Switches
Switches may appear most anywhere in the command.
The following are the more commonly used switches.
.skip 2
.index Switches
.flag index >
.left margin 5
.tab stop 5
.left -5
>/BAR:n######Specify character to be used to generate change bar.
The character is specified in octal
.begin bar
or it may be specified as a quoted character _(i.e. _"_!_" or 041
would enable exclamation as the change bar character).
.end bar
.skip 1
.left -5
>/CRETURN####Generate blank lines with carriage return - linefeed
sequences rather than just linefeed.
.skip 1
.left -5
>/DOWN:n#####Move the text on each page down n lines, leaving
n blank lines at the top of the page.
.skip 1
.left -5
>/DRAFT######Include all text and commands excluded by .IF and
related commands.
Also makes /SEQUENCE default.
.skip 1
.test page 7
.begin bar
.left -5
>/DEVICE: xxx
.break
This switch allows mode settings that are only useful when used
with an Anderson Jacobson (AJ) or DIABLO terminal.
It is necessary to use this switch to get true half-space up/down
on the DIABLO or AJ terminals.  This switch is also necessary if
MICROspacing is to be used (_/MICRO switch).
.skip 1
.break
xxx is one of the following:
.break
LPT - Default.  Normal RUNOFF mode for the line printer.
.skip 1
.break
AJ - 10 pitch for the AJ terminal.
.skip 1
.break
AJ12 - 12 pitch for the AJ terminal.
.skip 1
.break
AJP - AJ for the line printer.  Leaves out super- and subscripts
and replaces special characters with quoted spaces.  Useful for
quickly seeing the horizontal layout of a page.
.skip 1
.break
DIABLO - 10 pitch for the DIABLO terminal.
.skip 1
.break
D12 - 12 pitch for the DIABLO terminal.
.skip 1
.break
DP - same as AJP above except for the DIABLO.
.end bar

.skip 1
.left -5
.break
.begin bar
>/HEADER:SPACE
.break
The word "Page" is replaced by spaces in the header.
.end bar

.skip 1
.left -5
.break
.begin bar
>/HYPHENATE:xxx
.break
YES - Default
.skip 1
.break
NO - Overrides any .HYPHENATE commands in the file.
.skip 1
.break
NOQUERY - Normally, the hyphenation facility queries the user
when it cannot determine how to hyphenate a word
because it is not in the dictionary.  This switch
turns off the querying.
.skip 1
.break
NOUPDATE - Normally, the hyphenation facility updates the
dictionary with any user specified words that result
from the querying procedure.  This switch turns off the updating.
.skip 1
.break
COPY - If you create your own dictionary, then you may edit
using any text editor available.  If you do, however, you must
use this switch so that it can be formatted correctly by RUNOFF.
All entries to the dictionary MUST be made in alphabetical order
and have the following format:
.center
HYPHENATION,HY PHEN A TION
The first word is the word that will be matched (in UPPER, lower or
Mixed case.  The hyphenation routines do all comparisons in UPPER case,
so one must realize that it is impossible to hyphenate differently due
to case changes) and the second word (separated by a comma) is the actual
hyphenation of the word.  A space or hyphen show where hyphenation will
occur, but a hyphen may only (and must) be used when there is a hyphen
in the first word (match string).

.skip 2
.left -5
.break
>/HLENGTH:n##Defaults to 4.  Don't hyphenate words with n
characters or less.  This will keep the dictionary size smaller.
.skip 1
.left -5
.break
>/HSPACES:n##Defaults to 3.  Has the same purpose as the integer
argument used with the .HYPHENATE command.
.skip 1
.left -5
.break
>/HWORDS:n###Defaults to 20.  The number of user replies to
queries before the dictionary is updated.
.skip 1
.left -5
.break
>/HBUFFERS:n#Defaults to 20.  Number of dictionary blocks in core.
.end bar
.skip 1
.left -5
>/IRANGE:r###Only output pages resulting from input in specified range.
The range r is specified just as for /ORANGE.
.skip 1
.left -5
>/LINES:n####There are initially n lines per page.

.skip 1
.begin bar
.left -5
>/MICRO######This switch is used in conjunction with the Anderson Jacobson
(AJ) terminals and DIABLO terminals for making all inter-word spaces
on the same line the same size (to within 1_/60th of an inch).
This command has no affect on terminals other than the AJ or DIABLO.
This switch must be used in conjunction with the _/DEVICE:xxx switch
described above.
With MICROspacing specified, underlining is done with backspaces.
.note
Typing on an AJ or DIABLO with micro-spacing at 300 baud is considerably
slower than without.  (at 1200 baud speed is not a consideration)
.end bar
.end note
.skip 1

.skip 1
.left -5
>/NOBAR######Disable change bars (even though .ENABLE BAR specified in
input file).
.skip 1
.left -5
.begin bar
>/NONOTE#####Use default note indenting.
.end bar
.skip 1
.left -5
.begin bar
>/NOTE:n#####Set indent n for the .NOTE command.
.end bar
.skip 1
.left -5
>/NOUNDERLINE#Suppress underlining.
.skip 1
.left -5
>/ORANGE:r###Only output pages and lines in specified output range.
The range is specified as follows:
.skip 1
####"L1/P1:L2/P2"
.skip 1
Where L1 and L2 are optional initial and final line numbers.
L1 defaults to the beginning of the page, L2 defaults to the end.
P1 and P2 are the initial and final pages.
If the document uses the .CHAPTER RUNOFF command, the page numbers are
specified as C-P where C is the chapter number and P is the page number
within the chapter. The initial position defaults to the beginning of the file
document, the final position defaults to the end.
.paragraph
RUNOFF behaves kind of strange when line numbers are specified (a bug
perhaps?).
Only lines L1 through L2 on each of pages P1 through P2 are printed.
Fortunately, there is rarely a need to specify any line number at all.
.skip 1
For Example:
.break
####/ORANGE:"/5" prints page 5 through the end.
.break
####/ORANGE:"/3:/7" will print pages 3 through 7.
.break
####/ORANGE:"/3-1:/3-3" prints pages 3-1 through 3-3.
.skip 1
.left -5
>/PAUSE######Pause before the first page and after each page.
RUNOFF pauses by waiting for a character to be typed on the terminal.
Any character will do, it will not echo.
.skip 1
.left -5
>/RIGHT:n####Move text on each page to the right n spaces.
This is the preferred way to leave a left margin (over a .LEFT MARGIN in
the file). It allows the document to be prepared without right shifting
(to allow double column printing on a page, see LIST program)
and then right shifted for the final copy.
The document may be shifted right any number of spaces without
affecting the function of the .LEFT MARGIN and .RIGHT MARGIN
commands within the file.

.skip 1
.left -5
>/SELECT:"string"
.break
This switch, given in the command line to RUNOFF, is supposed
to set the selection string.
The string is enclosed in quotes, not "__" as is used in front of
special characters in _.SELECT.
Unfortunately, due to a communication problem between SCAN and
RUNOFF, this switch does not work.

.skip 1
.left -5
>/SEQUENCE###Include line and page numbers from the input file at the left
side of output. Line numbers will be line sequence numbers if present, else
absolute line numbers.
.skip 1
.left -5
>/SIMULATE###Simulate formfeeds with linefeeds.
RUNOFF will pause before printing the first page to allow paper adjustment.
Simulating formfeeds allows multipage text to be printed on a terminal
not supporting formfeeds.
.skip 1
.left -5
>/SPACING:n##Start with .SPACING n.
To double space text, /SPACING:2 can be used.
Don't double space an entire file until the (near) final copy.
.skip 1
.left -5
.begin bar
>/TYPESET:xxx
.
This switch causes RUNOFF to produce a file suitable for typesetting.
xxx is one of the following:
.skip 1
.left margin +5
.
CAT - typeset file to CAT
.skip 1
.
LPT - typeset file to LPT:
.skip 1
.
TXT - typeset file to TXT
.end bar
.left margin -5
.skip 1
.left -5
>/UNDERLINE:CHARACTER
.break
Underline by backspacing and overprint.
.break
.left -5
>/UNDERLINE:LINE
.break
Underline by overprinting line (Default).
.break
.left -5
>/UNDERLINE:NONE
.break
Suppress underlining.  Useful when printing
underlined text on a video terminal which erases on overprint.
.break
.left -5
>/UNDERLINE:ch
.break
Use specified character for underlining rather than usual
underline.
The character may be specified in octal or as a quoted string.
.skip 1
.left -5
>/VARIANT:(variable,variable,...)
.break
Enable listed variables.
Parentheses may be omitted if only one variable is specified.
See .VARIABLE and related commands for further information.
.skip 1
.left -5
>/WIDTH:n####Specify initial right margin.
.noflag index
.skip 4
.left margin 0
.test page 15
.header level 1 SOURCE FILE FORMAT
.INDEX ^SOURCE FILE FORMAT
.paragraph
As stated above, the source file contains the textual material
which will appear on the final copy in addition to information to specify
formatting. Upper and lower case information may also be supplied so that
text can be prepared on and upper case only terminal. All command information
consists of regular ASCII printing characters so that a listing of the
source file may be examined if the final copy is not exactly as desired.
.paragraph
All material in the source file is taken to be source text except those
lines beginning with a period. A line beginning with a period is assumed
to be a command,
.INDEX ^COMMAND FORMAT
and must match one of those listed below. The commands provide the formatting
information, and control various optional modes of operation.
.paragraph
Usually the text is filled
.INDEX ^FILLING OF TEXT
and justified
.INDEX ^JUSTIFICATION OF TEXT
as it is processed. That is, the program FILLS a line by adding successive
words from the source text until one more word would cause the right margin
to be exceeded. The line is then JUSTIFIED by making the word spacings larger
until the last word in the line exactly meets the right margin.
.paragraph
The user may occasionally wish to reproduce the source text exactly, which is
done by disabling filling and justification. The program may be set to fill
but not justify, in which case the output will be  normal except that lines
will not be justified to the right margin.
.paragraph
When the fill mode is on, spaces
.INDEX ^SPACE
.INDEX ^WORD SPACING
and carriage returns occurring in the source text are treated only as word
separators. Multiple separators are ignored.
.paragraph
Some of the commands cause a BREAK
.INDEX ^BREAK
in the output. A break means that the current line is output without
justification, and the next word goes at the beginning of the next line. This
occurs at the end of paragraphs.
.paragraph
The program will advance to new pages as necessary, placing
.INDEX ^PAGE ^NUMBERING
.INDEX ^TITLE
the title (if given) and the page number at the top of each page. The user
may explicitly call for a page advance where desired, and may inhibit the
occurrence of a page advance within specified material.
.skip 4
.test page 15;
.header level 1 CASE INFORMATION
.INDEX ^CASE SPECIFYING
.paragraph
RUNOFF normally preserves the case (upper or lower) used in the source file.
Text is most easily prepared on a terminal with lower case, if one is available.
If not, TECO and SOS have facilities for entering upper and lower case on
an upper case only terminal.
The following information is for users with an upper case only terminal and
not wishing to use their editor's facilities for upper/lower case.
.paragraph
Specification of case for files prepared on an upper case only teletype may
be done with two characters, up-arrow (_^), and back-slash (_\). The
appearance of an up-arrow causes the letter immediately following to be
transmitted in upper case. The appearance of a back-slash causes the letter
immediately following to be converted to lower case. Any letter not preceded
by one of these characters is transmitted in the current mode. The mode is
initially upper case, and is changed by the occurrence of two successive case
control characters. Two up-arrows (_^_^) cause the mode to be set to upper
case, and two back-slashes (_\_\) cause the mode to be set to lower case.
.paragraph
The use of the above corresponds to the use of the shift and shift-lock keys
on a typewriter. Usually, typing appears in lower case (begin the file with
_\_\). To type one letter in upper case, the shift key is used. The
shift-lock is set to type a series of upper case letters, after which it is
released.
.paragraph
If a .FLAG CAPITALIZE command appears in the input file, the character _<
preceding any word will cause that word to be capitalized.
.paragraph
The following shows the uses of the case control characters:
.skip 1
_\_\_^HERE IS A _^SAMPLE _^SENTENCE IN _^_^UPPER_\_\ <CASE AND LOWER CASE.
.skip 1
becomes:
.skip 1
Here is a Sample Sentence in UPPER CASE and lower case.
.skip 4
.test page 15
.header level 1 Special Characters
.INDEX ^SPECIAL ^CHARACTERS
.paragraph
The character ampersand (_&) is used to specify underscoring.
.INDEX ^UNDERSCORING
The ampersand will cause the character following it to be underscored,
e.g. _&f_&o_&o becomes ^&foo\&.
.paragraph
Underlining of a string of characters can also be specified, similar to the
use of the shift lock operations described above. An appearance of ampersand
preceded by up-arrow (_^_&) will cause underlining of all following
characters except space. An appearance of ampersand preceded by backslash
(_\_&) will disable this mode.
.paragraph
.INDEX ^SPACE
.INDEX ^QUOTED ^SPACE
It is occasionally necessary to include spaces in the text which should not
be treated as word separators. For this purpose, RUNOFF treats ^&numbersign\&
(_#) as a quoted space; i.e. it will print as exactly one space in the
output, will never be expanded nor changed to a carriage return.
.paragraph
To allow the appearance of the special characters (ampersand, number-sign,
up-arrow, or back-slash) in the output, the character left-arrow or
underscore (__) is used as a quote
.INDEX ^QUOTE CHARACTER
character. The character immediately following a left-arrow will be
transmitted to the output with no formatting effect. The left arrow itself is
thus another case requiring quoting. The following five cases occur: ___&,
___^, ___\, ____, and ___#.
.skip 4
.test page 15
.chapter COMMANDS
.paragraph
The following commands will be recognized if they are at the beginning of a
line started with a period.  Any line in the source file beginning with a
period is assumed to be one of these commands.  If it is not, an error
diagnostic will be typed and the line will be ignored.  Some commands take
one or more decimal numbers following. These are separated from the command
by a space.
.paragraph
Commands may be abbreviated. The standard abbreviation is listed below with
each command. Commands may also be shortened by leaving off letters from the
end, just so long as the command remains unique.
.paragraph
Commands may be placed one per line or several on a line if they are
separated with semicolon (";"). Commands which require a text argument must
be followed by the end of the line rather than ";".
.paragraph
Comments may be included after ".!" or ".;" commands.
.test page 5
.skip 1
#####.!This is a comment
.
#####.;Or it may be done this way.
.
#####.!One may string commands together as follows:
.
#####.skip 2;.test page 7;.indent -3

.skip 4
.tab stop 50
.test page 15
.header level 1 Formatting
.X ^COMMANDS>FORMATTING
.left margin 5

.skip 1
.indent -5
.test page 10
 .BREAK	.
.INDEX ^^BREAK\\
.paragraph
Causes a break, i.e. the current line will be output with no justification,
and the next word of the source text will be placed at the beginning of the
next line. Note: this command has the shortest abbreviation of any, only a
"." on a line by itself is required.

.skip 1
.indent -5
.test page 10
 .SKIP n	.S n
.INDEX ^^SKIP\\ N
.paragraph
Causes a break after which n*(line spacing) lines are left blank. If the skip
would leave room for less than two printed lines on the page (i.e. if there
are less than n+2*(line spacing) lines left), the output is advanced to the
top of the next page.

.skip 1
.indent -5
.test page 10
 .BLANK n	.B n
.INDEX ^^BLANK\\ N
.paragraph
Exactly like SKIP, except that n (rather than n*(line spacing)) lines are
specified. BLANK is used where space is to be left independent of the line
spacing; SKIP, where the space should be relative to the size of line space.

.skip 1
.indent -5
.test page 10
 .FIGURE n	.FG n
.INDEX ^^FIGURE\\ N
.paragraph
Like BLANK except that if less than n lines remain on the current page, the
page will be advanced, and n blank lines will be left at the top of the new
page. Principally used where it is desired to leave room for a figure to be
drawn in manually.

.skip 1
.indent -5
.test page 10
 .FIGURE DEFERRED n	.FG D n
.index ^^FIGURE DEFERRED\\ n
.paragraph
Leave n contiguous blank lines for a figure. If there is sufficient room left
on the page, cause a break and leave n blank lines. Otherwise, fill out rest
of page with text and leave n blank lines at the top of the next page.
Depending on which version of RUNOFF you use, a break may or may not be done
when the figure is put on the next page.

.skip 1
.indent -5
.test page 10
 .INDENT n	.I n
.INDEX ^^INDENT\\ N
.paragraph
See _.LEFT below.

.skip 1
.indent -5
.test page 10
 .LEFT n	.L n
.INDEX ^^LEFT\\ N
.paragraph
Causes a break and sets the next line to begin n spaces to the right of the
left margin.  n may be negative to cause the line to begin to the left of the
left margin (useful for numbered paragraphs).

.skip 1
.indent -5
.test page 10
 .CENTER n	.C n
.INDEX ^^CENTER\\ N
.paragraph
This command causes a break after which it centers the next line following
in the source file.  The centering is over the column n/2, independent of the
setting of the left and right margins. If n is missing, n is assumed to be
the paper width (initially 60) plus the leftmost column times two (initially
0)
.begin bar
(n = width + (2 * leftmost column)).
.end bar
(See PAPER SIZE command.)
The text to be centered may be included on the same line as the command if
separated with a semicolon, i.e.:
.skip 4
.left margin -5
.test page 15
.header level 1 Hyphenation
.begin bar
.X ^COMMANDS>HYPHENATION

.para
When an attempt is made by RUNOFF to hyphenate a word that is not
in its dictionary, a query will be made of the user requesting a
syllabication for the word.  The query will be in the form of
_<word_>_? where _< and _> are meta-symbols that do not appear
on the screen.  The user responds by typing the syllables of
the word, in order, separated by spaces, and terminated either
by a carriage return or a switch.  The user may respond by just hitting
carriage return to avoid typing syllabication if the word is not to be
hyphenated and is not to be put into the dictionary.  (Currently
RUNOFF will try to hyphenate words containing non-alphabetic characters.
Until this changes hitting a carriage return will suffice to ignore
the word.)  The switches have the following interpretations:
.left margin +5
.skip 1
.
/Q - Turn querying off from here on.
.
/U - Turn updating off from here on.
.
/Y - Turn updating back on.
.
/S - Skip; same as no syllabication.  Don't hyphenate this word.
.
/N - Turn hyphenation off.
.
/H - Hyphenate this word but don't update the dictionary.
.
no switch - Hyphenate the word and update the dictionary.
.skip 1
.
Example:
.break;        ^&indicate?\& in di cate/H
.break;        ^&computer?\&  user response
.skip 1
.left margin -5
The first word is the word being matched and the second word (separated by a
comma) is the actual hyphenation of the word (in UPPER, lower or Mixed case.
The hyphenation routines do all comparisons in UPPER case, so one must
realize that it is impossible to hyphenate differently due to case changes).
A space or hyphen shows where hyphenation will occur, but a hyphen may only
(and must) be used when there is a hyphen in the first word (match string).
.para
Hyphenation is invoked by the _.HYPHENATE command.  The default
is that RUNOFF will not try to hyphenate if there are only up to
3 extra spaces on the current line (_/HSPACES switch), or if
the word that would be hyphenated has a length less than or
equal to 4 (_/HLENGTH switch).
.left margin +5
.skip 1
.indent -5
 .HYPHENATE file n
.index ^^HYPHENATE\\ file n
.para
file is the name of a file containing syllabications for words.
The file name is specified in the usual TOPS10 format.  It defaults
to a system dictionary (RNO:HYPHEN.DIC).  n is an integer that defaults
to 5.  It is the maximum extra spaces on the line before hyphenation is
invoked.
.end bar
.left margin 0
.skip 4
.test page 15
.header level 1 Page Formatting
.x ^COMMANDS>PAGE FORMATTING
.left margin +5

.skip 1
.indent -5
.test page 10
 .PAGE	.PG
.INDEX ^^PAGE\\
.paragraph
Causes a break and an advance to a new page.  Does nothing if the current
page is empty.  Titling and numbering as for automatic page advance.

.skip 1
.indent -5
.test page 10
 .TEST PAGE n	.TP n
.INDEX ^^TEST PAGE\\ N
.paragraph
Causes a break followed by a conditional page advance.  If there are n or
more lines remaining on the current page, no advance is made and no lines are
skipped.  Otherwise, the page is advanced as for PAGE. This command should be
used to ensure that the following n lines are all output on the same page.

.skip 1
.indent -5
.test page 5
 .SUBPAGE	.SBP
.index ^^SUBPAGE\\
.paragraph
Begin a subpage. The subpage has same page number as original, except an "A"
is added to number the first time, then the rest of the letters are added for
each succeeding subpage.

.skip 1
.indent -5
.test page 5
 .END SUBPAGE	.ES
.index ^^END SUBPAGE\\
.paragraph
End a subpage. Page numbering returns to normal.

.SKIP 1
.INDENT -5
.TEST PAGE 10
 .NUMBER n	.NM n
.INDEX ^^NUMBER\\ N
.INDEX ^PAGE ^NUMBERING
.paragraph
Turns on page numbering (normal) and, if n is supplied, sets the current page
number to n.
.skip 1
.begin bar
.
n can also be one of the following:
.left margin +5
.skip 1
DECIMAL - Decimal page numbering.  (Default)
.skip 1
ROMAN - Lower case Roman numeral page numbering.
.skip 1
CHROMAN - Roman numeral uppercase chapter numbers
.skip 1
CHDECIMAL - Decimal chapter numbers. (Default)
.skip 1
CONSECUTIVE - Consecutive page numbers, regardless of chapters.
.end bar
.left margin -5

.SKIP 1
.INDENT -5
.TEST PAGE 5
 .NONUMBER	.NNM
.INDEX ^^NONUMBER\\
.paragraph
Turns off page numbering. Pages will continue to be counted,
so the normal page number will appear if numbering is re-enabled.

.skip 1
.indent -5
.test page 10
 .HEADER x	.HD x
.index ^^HEADER\\ x
.paragraph 0
Begin including headers at the top of each page (except page 1).
This is default.
.skip 1
.begin bar
.break
x can be one of the following:
.left margin +5
.skip 1
UPPER - "Page" is written in upper case.
.skip 1
LOWER - "Page" is written in lower case.
.skip 1
MIXED - "Page" is written in upper/lower case.  (This is default)
.skip 1
SPACE - "Page" is replaced by spaces.
.skip 1
BOTTOM - Page numbering is done on the bottom center.
.skip 1
CHBOTTOM - First page of chapters numbered on bottom center.
.skip 1
CENTER - Number on top center.  No titles.
.skip 1
TOP - no page numbering on bottom.
.skip 1
RIGHT - Page numbering on top right only.  (Normal mode)
.left margin -5
.end bar

.skip 1
.indent -5
.test page 5
 .NO HEADER	.NHD
.index ^^NO HEADER\\
.paragraph
Discontinue putting a header at the top of each page.

.skip 1
.indent -5
.test page 5
 .FIRST TITLE	.FT
.index ^^FIRST TITLE\\
.paragraph
Include title and page number on page 1 also.

.skip 1
.indent -5
.test page 5
 .PAGING	.PA
.index ^^PAGING\\
.paragraph
Begin breaking document into pages whenever a page is filled.
Default except when extension of input file is ".RNH" (Help file).

.skip 1
.indent -5
.test page 5
 .NO PAGING	.NPA
.index ^^NO PAGING\\
.paragraph
Stop automatic splitting of documents into pages.
Does not affect .PAGE commands.

.skip 1
.indent -5
.test page 10
 .TITLE text	.T text
.INDEX ^^TITLE\\ text
.paragraph
This command takes the remaining text on the line as the title. This text
will appear at the top of all subsequent pages, at position 0, on the top
line with the page number.  The title is initially blank.

.skip 1
.indent -5
.test page 10
 .SUBTITLE text	.ST text
.INDEX ^^SUBTITLE\\ text
.paragraph
This command takes the remaining text on the line as the subtitle. This text
will appear on the line immediately following the title and page number. The
subtitle is initially blank. The subtitle is not indented, but may contain
leading spaces to achieve the same effect, if desired.

.skip 1
.indent -5
.test page 5
 .NO SUBTITLE	.NST
.index ^^NO SUBTITLE\\
.paragraph
Clear any subtitle which was in effect.

.skip 1
.indent -5
.test page 10
 .CHAPTER text	.CH text
.INDEX ^^CHAPTER\\ TEXT
.paragraph
Starts a new chapter using text specified in command as the chapter title.
The chapter begins on a new page and centers "CHAPTER n" were n is
incremented by 1 for each chapter. A blank line is then skipped before
centering the chapter title. Three more blank lines are skipped before the
actual text of the chapter begins. The chapter title is set as the title
appearing at the top of each page.
.NOTE
The .CHAPTER command
.begin bar
no longer
.end bar
resets the case, margins, spacing, and justify/fill modes to their standard
settings.
.END NOTE

.skip 1
.indent -5
.test page 10
 .APPENDIX text	.AX text
.INDEX ^^APPENDIX\\ text
.paragraph
Starts next appendix using text specified as the appendix title.
The APPENDIX command functions just like the CHAPTER command except it
generates different words and numbering.
Appendices are numbered A, B,#....
Pages within an appendix are numbered A-2, A-3,#....

.skip 1
.indent -5
.test page 10
 .HEADER LEVEL n text	.HL n text
.INDEX ^^HEADER LEVEL\\ N TEXT
.paragraph
Starts a section at the level specified and takes the following text as the
header. n can be in the range from 1 to 5. The sections are numbered
automatically. Section numbers are of the form i.j.k.l.m. If this is a
chapter oriented document, then i is the chapter number, otherwise is the .HL
1 level. For header levels 1 and 2, the following line of text begins on a
new line. Header levels 3, 4, and 5 end with a space dash space and then the
text begins.
.left margin 0
.skip 4
.test page 15
.header level 1 Mode Setting
.X ^COMMANDS>MODE SETTING

.left margin +5
.skip 1
.indent -5
.test page 10
 .JUSTIFY	.J
.INDEX ^^JUSTIFY\\
.paragraph
Causes a break and sets subsequent output lines to be justified.
(Initial setting)

.skip 1
.indent -5
.test page 10
 .NOJUSTIFY	.NJ
.INDEX ^^NOJUSTIFY\\
.paragraph
Causes a break and prevents justification of subsequent output lines to
make a ragged right margin.

.skip 1
.indent -5
.test page 10
 .FILL	.F
.INDEX ^^FILL\\
.paragraph
Causes a break and specifies that subsequent output lines be filled.
Sets the justification mode to be that specified by the last appearance of
JUSTIFY or NOJUSTIFY. (Initial setting)

.skip 1
.indent -5
.test page 10
 .NOFILL	.NF
.INDEX ^^NOFILL\\
.paragraph
Causes a break and prevents filling of subsequent output lines.
Also turns off justification.
.note
.indent -3
1.#The nofill-nojustify mode need be used only where there
are several lines of material to be copied exactly.  A single
line example will not require using these commands if there
are breaks before and after.
.indent -3
2.#Normally FILL and NOFILL are used to turn both
filling and justification on and off.  It is usually
desirable to do both.  A subsequent appearance of a justification
command will override the fill command however.
.indent -3
3.#Because of the action of FILL, a single occurrence of
NOJUSTIFY will cause the remainder of the file to be
unjustified, with filling as specified.  In order to justify
but not fill (not recommended), a JUSTIFY command must
follow every NOFILL  command.
.end note
.skip 1
.indent -5
.test page 10
 .LITERAL	.LT
.index ^^LITERAL\\
.paragraph 0
Take the following text literally. No changes are made to it - line length
remains as is, even if beyond the right margin, and blank lines are left as
is. Text is still divided into pages and numbered. An .END LITERAL must follow
any .LITERAL.

.skip 1
.indent -5
.test page 10
 .END LITERAL	.EL
.index ^^END LITERAL\\
.paragraph
Ends literal text.
Follows every .LITERAL command after all text to be take literally.

.skip 1
.indent -5
.test page 10
 .AUTOPARAGRAPH	.AP
.INDEX ^^AUTOPARAGRAPH\\
.paragraph 0
Any blank lines in the input file or any line beginning with a space will
begin a new paragraph. Blank lines followed by a command to not begin a new
paragraph.

.skip 1
.indent -5
.test page 5
 .NOAUTOPARAGRAPH	.NAP
.INDEX ^^NOAUTOPARAGRAPH\\
.paragraph
Turns off AUTOPARAGRAPH mode. (Default)


.skip 1
.indent -5
.test page 5
 .PERIOD	.PR
.index ^^PERIOD\\
.paragraph
Leave two spaces after ".", "!", "?", ":", and ";". This is the default mode.
If you wish to treat these characters as regular text (i.e. don't leave two
spaces after each), precede the character with the quote character _(___).
Note: RUNOFF normally ignores multiple spaces between words or after
punctuation (they are treated like a single space).

.skip 1
.indent -5
.test page 5
 .NO PERIOD	.NPR
.index ^^NO PERIOD\\
.paragraph
Don't leave two spaces after ".", "!", "?", ":", and ";".
Only one space is left, unless justifying the right margin causes an extra
space.

.skip 1
.indent -5
.test page 10
 .CONTROL CHARACTERS	.CC
.index ^^CONTROL CHARACTERS\\
.paragraph
Allow control characters in the input file. A possible application for this
is inserting control characters in the file to set up or position the
carriage of terminals such as those using the QUME printer.

.skip 1
.indent -5
.test page 5
 .ENABLE BAR	.EBB
.index ^^ENABLE BAR\\
.paragraph
Set to allow change bars. All text will be shifted right to allow room for
the bars. No bar actually begins till the .BEGIN BAR command.

.skip 1
.indent -5
.test page 5
 .DISABLE BAR	.DBB
.index ^^DISABLE BAR\\
.paragraph
Ignore all following change bars. This is the default mode.
.skip 1
.indent -5
.test page 10
 .RIGHT n	.R n
.INDEX ^^RIGHT\\ n
.paragraph
Causes a break, then adjusts the horizontal position of the next line to
leave n spaces between the end of the line and the right margin.
The line length must not exceed _<right margin column number_> minus n.

.skip 1
.indent -5
.test page 10
 .PARAGRAPH n,v,t	.P n,v,t
.INDEX ^^PARAGRAPH\\ N,V,T
.paragraph
This command causes a break, skips v blank lines, indents n spaces, and tests
for t lines left on the page (if fewer lines it goes to the next page).
The numbers are optional, they are normally not specified.
v defaults to leave (m+1)/2 blank lines, where m is the regular line spacing.
n defaults to 5.

.skip 1
.indent -5
.test page 10
 .NOTE text	.NT text
.INDEX ^^NOTE\\ text
.paragraph
Starts an indented note.
Skips 2 blank lines, centers the text (or the word "NOTE" if no text given),
reduces both margins by 15.
.begin bar
If the left margin is zero then the indent for the note will be 4
rather than 15.  If this is undesirable then the _/NOTE:n switch may
be given where n specifies the indent for the left and right margins.
(The 4 and 15 indent must be there for a reason, so rather than change
a possible standard, an override facility was added).
.end bar
The text on the following lines will be formatted with these reduced margins.

.skip 1
.indent -5
.test page 10
 .END NOTE	.EN
.INDEX ^^END NOTE\\
.paragraph
Terminates the .NOTE command.
Skips 2 blank lines and resets the margins to their settings before the .NOTE
command.

.skip 1
.indent -5
.test page 10
 .LIST n	.LS n
.INDEX ^^LIST\\ N
.paragraph
.begin bar
Starts an indented list with spacing n (default is 1) between elements in the
list.
.end bar
The left margin is moved right 9 spaces for the first .LIST command, and 4
more spaces for each subsequent nested .LIST.
.skip 1
.indent -5
.test page 10
 .LIST ELEMENT;text	.LE;text
.INDEX ^^LIST ELEMENT\\;TEXT
.paragraph
Starts an item in the list, used in conjunction with the .LIST command.
.begin bar
The elements are numbered/lettered sequentially and the number/letter is
given a negative indent so the list lines up.
The number/letter is followed by a period and 2 spaces so the indent will
be -4. The list elements are separated by the standard paragraph spacing
and .TEST PAGE.
Nested lists will be alternately numbered/lettered.
.end bar
.skip 1
.indent -5
.test page 10
 .END LIST	.ELS
.INDEX ^^END LIST\\
.paragraph
Terminates the .LIST command and returns to settings before the last .LIST
command.

.skip 1
.indent -5
.test page 10
 .FOOTNOTE n	.FN n
.INDEX ^^FOOTNOTE\\ N
.paragraph
Allocates n*(line spacing) lines at the bottom of the current page for
a footnote [1].
.footnote 4
.left margin 0
[1] This is a footnote.
This text was specified by text and commands following a FOOTNOTE 4 command.
Some versions of RUNOFF draw a dividing line of dashes.
If your RUNOFF doesn't, you may include the dashes as part of the footnote.
!
If insufficient room remains on the current page, space will be allocated at
the bottom of the following page.  The text for the footnote begins on the
line following the command, and it may contain any appropriate commands (e.g.
CENTER, SKIP) necessary to format the footnote.  The footnote is terminated
by a line beginning with an exclamation point (the remainder of which is
ignored).
.INDEX ^EXCLAMATION POINT
The lines delimited by this line and the FOOTNOTE command
are put into a buffer to be processed when the output moves
to within the stated distance of the bottom of the page.
If a page has multiple footnotes, the allocated space is the
sum of the allocations for all footnotes assigned to the page.  The
user must include his choice of footnote-designating symbols
within the text.
.paragraph
The current values of left and right margin and line spacing
are saved and restored after processing of footnotes. Therefore,
a footnote may contain commands which change these parameters,
and the effect will be limited to the footnote text.
.paragraph
The actual space taken by the footnote may be more or less than
that specified by n. The n merely allocates space and should
be the user's best guess.  If it is considerably off,
the footnote lines may overflow the page, or extra space
may be left at the bottom.  The user may wish to adjust n after
examining a first draft printout.
.para
.begin bar
Several additions have been added to the footnote capability. The left
margin defaults to the minimum left margin that appeared on that page
but does reflect negative indentations.  A 2"-long horizontal line
will precede the first footnote on each page.  A blank line precedes
each footnote on a page.
.end bar

.skip 1
.indent -5
.test page 6
.begin bar
 .LEFT MARGIN FOOTNOTE n	.LMF n
.INDEX ^^LEFT MARGIN FOOTNOTE\\ n
.para
Sets left margin for footnotes to n.  (overrides the computed one)
.end bar

.skip 1
.indent -5
.test page 10
 .INDEX text
.INDEX ^^INDEX\\ text
.paragraph
This command takes the remaining text on the line as a key word or words and
adds it, along with the current page number, to the internal index buffer.
The command does not cause a break.  It should appear immediately before the
item to be indexed.  A key word or words may be indexed more than once. Words
are converted to lower case, except where _^, _^_^, _\, and _\_\ are included
in the text to modify the case.

.skip 1
.indent -5
.test page 3
 .SUBINDEX key1_>key2	.X key1_>key2
.index ^^SUBINDEX\\
.paragraph
Put key1 in the index with key2 as a subindex.

.skip 1
.indent -5
.test page 10
 .PRINT INDEX	.PX
.INDEX ^^PRINT INDEX\\ (text)
.paragraph
Causes a break after which it prints the entire contents of the index buffer.
Entries are printed in alphabetical order, and are set against the left
margin.  Regular line spacing is used, except that a blank line is left
between entries of different first letters.  The number of the first page on
which each entry appeared is put on the same line as the entry, beginning at
the middle of the line (midway between the left and right margins).
Additional page numbers for multiple entries follow, separated by commas. The
index buffer is left empty.

.skip 1
.indent -5
.test page 10
 .DO INDEX (text)	.DX (text)
.INDEX ^^DO INDEX\\ (text)
.paragraph
Forces a new page_, centers the text_, if given_, otherwise it centers the
word _"INDEX_".  _(A period _(_._) terminates this command unless the period
is quoted._) _(You do not type the parentheses._) This command causes a
_.BREAK and then prints the entire contents of the index buffer.  Entries are
printed in alphabetic order and are set against the left margin.

.skip 1
.indent -5
.test page 10
 .LOWER CASE	.LC
.index ^^LOWER CASE\\
.paragraph
Set the typeout mode to lower case.  This command acts the same as
typing two backslashes _(_\_\_).  NOTE:  two backslashes only set
lower case if a _.FLAG command has not redefined their function.

.skip 1
.indent -5
.test page 10
 .UPPER CASE	.UC
.index ^^UPPER CASE\\
.paragraph
Sets the output mode to uppercase.  This command acts the same as
typing two circumflexes _(_^_^_).  This mode is the default.  There
is no need for you to type in this command unless you previously
altered the mode to lower case.

.skip 1
.indent -5
.test page 10
 .BEGIN BAR	.BB
.index ^^BEGIN BAR\\
.paragraph
Begin a change bar. Change bars consist of a bar drawn vertically along the
left margin. The character used is normally vertical bar (|) but may be
changed with the /BAR switch. No bars will be generated unless first enabled
(see .ENABLE BAR).

.skip 1
.indent -5
.test page 10
 .END BAR	.EB
.paragraph
End a change bar begun with .BEGIN BAR.
.left margin 0
.skip 4
.test page 15
.header level 1 Flag Setting
.X ^COMMANDS>FLAG SETTING

.left margin +5
.skip 1
.indent -1
.test page 5
.begin bar
.indent -5
 .NOFLAG xxx
.index ^^NOFLAG\\
.para
This command will disable a previous _.FLAG xxx command.

.end bar
.skip 1
.indent -5
.test page 5
 .FLAG CAPITALIZE
.INDEX ^^FLAG CAPITALIZE\\
.paragraph
Enables the _< character to capitalize the entire word it precedes.
This mode is initially off.

.skip 1
.indent -5
.test page 10
 .FLAG INDEX
.INDEX ^^FLAG INDEX\\
.paragraph
Enables the _> character to place the following word into the index.
Serves same function as .INDEX command except the indexed word
is included in the output file. This mode is initially off.

.skip 1
.begin bar
.test page 5
.indent -5
 .FLAG HALFUP _|
.index ^^FLAG HALFUP\\
.paragraph
Indicates that in the future the vertical bar _(_|_) will indicate a
superscript.  The defaults are OFF and _|.  Any other character can be used.
When used in conjunction with the _/DEVICE:xx switch this will give true
half-space up_/down on the DIABLO and AJ terminals.  Whole lines will be used
when the _/DEVICE switch is omitted.

.skip 1
.indent -5
 .FLAG HALFDOWN _/
.index ^^FLAG HALFDOWN\\
.para
Same as HALFUP except for subscripting.

.skip 1
.test page 5
.indent -5
 .FLAG BACKSPACE
.index ^^FLAG BACKSPACE\\
.para
Allows definition of a character to stand for backspace.  There
is no default character, but OFF  is the default switch setting.
.skip 1
.test page 5
.indent -5
 .FLAG LEFTBRACE _{
.index ^^FLAG LEFTBRACE\\
.para
Left parenthesis for sub- and super- script groupings.
Defaults are ON and _{.

.skip 1
.test page 5
.indent -5
 .FLAG RIGHTBRACE _}
.index ^^FLAG RIGHTBRACE\\
.para
Right parenthesis for sub- and super- script groupings.
Defaults are ON and _}.

.skip 1
.test page 5
.indent -5
 .FLAG ALIGNMENT _~
.index ^^FLAG ALIGNMENT\\
.para
Allows alignment of a subscript under a superscript.
Defaults are ON and _~.  The use of the _~ must immediately follow
a sub- (super-) script and immediately precede a super- (sub-) script.

.end bar
.left margin 0
.skip 4
.test page 15
.header level 1 Parameter Settings
.X ^COMMANDS>PARAMETER

.left margin +5
.skip 1
.indent -5
.test page 10
 .LEFT MARGIN n	.LM n
.INDEX ^^LEFT MARGIN\\ N
.paragraph
Causes a break, after which the left margin is set to n.  N
must be less than the right margin but not less than 0. The
initial setting is 0.  The amount of any indent plus the
left margin must not be less than 0.

.skip 1
.indent -5
.test page 10
 .RIGHT MARGIN n	.RM n
.INDEX ^^RIGHT MARGIN\\ N
.paragraph
Causes a break after which the right margin is set to n. N must
be greater than the left margin.  The initial setting is 60.
.paragraph
The number of characters on a line will be equal to or less
than the right margin minus the left margin minus any indenting
which may be specified.  Even if filling has been disabled
lines will not be extended past the right margin.

.skip 1
.indent -5
.test page 10
 .SPACING n	.SP n
.INDEX ^^SPACING\\ N
.paragraph
Causes a break after which the line spacing will be set to n.
n must be within the range 1 to 5.  Single spacing
.INDEX ^SINGLE SPACING
.INDEX ^DOUBLE SPACING
 is 1,
double spacing is 2, etc.
The initial setting is 2.

.skip 1
.indent -5
.test page 10
 .PAPER SIZE n,m,o	.PS n,m,o
.INDEX ^^PAPER SIZE\\ N,M,O
.paragraph
This command sets _.PAGING. It also sets the number of lines per page to n. n
includes the top heading of 3 lines. It must be greater than 10. The initial
setting is 58. The page number and title appear on the top line. The second
argument, m, is optional. If present, it sets the paper width in columns
(initially 60). It must be greater than the left margin, and it is set into
the right margin as if a RIGHT MARGIN m command had also been typed.
.begin bar
The third argument, o, is optional.
If present, it sets the leftmost column to be used for centering
(default 0).  Centering is done between o and o+m.
.end bar
This command is usually used only at the beginning of a file,
but may be used throughout if needed.

.skip 1
.indent -5
.test page 10
 .TAB STOPS n ... n	.TS n ... n
.INDEX ^^TAB STOPS\\ N ... N
.paragraph
Clears all previous tab stops and sets new tab stops as specified.
The several n must be greater than zero and in increasing order.
They are the positions of tab stops independent of the setting of the left
margin,  although any which are less than the left margin will not be seen.
Tab stops are initially at 8-column intervals (9, 17, 25,
33, 41, 49, 57, 65).
.note
.begin bar
Tab stops, unlike margin setting commands, deal with the column number
rather than the horizontal page position.  The leftmost postion in
margins is 0 (zero) while the leftmost position for tabs is 1 (one).
.end bar
.end note
.paragraph
Tabs should be used only in lines which will be unjustified and unfilled,
i.e. where filling is disabled or a break immediately follows. Clearly, the
spaces specified by a tab character should not be expanded to justify the
line--this would defeat the effect of tab formatting. If a tab appears at a
point where no further tab stops have been set on a line, the tab will be
treated as though it had been a space.

.skip 1
.indent -5
.test page 10
 .NUMBER APPENDIX n
.index ^^NUMBER APPENDIX\\ n
.paragraph
Set chapter number to "Appendix n" where n is a letter specified by you.
.skip 1
.indent -5
 .NUMBER CHAPTER n
.index ^^NUMBER CHAPTER\\ n
.paragraph
Set chapter number to the decimal number n.
.skip 1
.indent -5
 .NUMBER INDEX
.index ^^NUMBER INDEX\\
.paragraph
Set chapter number to "INDEX".
Following pages will be "INDEX-2", ....
.skip 1
.indent -5
 .NUMBER LEVEL a,b,c...
.index ^^NUMBER LEVEL a,b,c...\\
.paragraph
Set next header level to a.b.c...
.skip 1
.indent -5
 .NUMBER LIST d,n
.index ^^NUMBER LIST\\ d,n
.paragraph
Set the list counter for depth d to n (For .LIST and friends).
.skip 1
.indent -5
 .NUMBER PAGE n
.index ^^NUMBER PAGE\\ n
.paragraph
Resume page numbering (if disabled with .NONUMBER) and set page number to n.
Also will set a page number within a chapter for chapter oriented
documents (includes appendix and index).
.skip 1
.indent -5
 .NUMBER SUBPAGE ch
.index ^^NUMBER SUBPAGE\\ ch
.paragraph
Set subpage number to ch (ch is a letter).
.skip 4
.left margin 0
.test page 15
.begin bar
.header level 1 Tables
.x Tables
.x ^Commands>tables
Tables, for example the table of contents, have been added to RUNOFF.
.left margin +5
.skip 1
.indent -5
 .TABLE  {<ID>} {<# of pages>} <NAME>	.TA ...
.break .s1
.index ^^TABLE\\ {<ID>} {<pages>} <NAME>
Starts a table.  The <ID> is a single digit number.  Table 0 is the
default and is used for the table of contents based on .HL information
but must still be started with a .TA command.  The number of pages
defaults to one and indicates how much space in pages should be left
for the table.  If only one number is given to the command, it is the
number of pages.  <NAME> is the title of the table.

.skip 1
.indent -5
 .TE {<ID>} {<LEVEL>} <ENTRY>
.break .s1
.index ^^TE\\ {<ID>} {<LEVEL>} <ENTRY>
Adds an entry to the table <ID>, which must have been previously started.
Field defaults to one.  The entry will be put into the table indented
according to its <LEVEL>.  The first entry must be made at the minimum
level.  That level will appear left justified and spaced around.
Entries at other levels are indented in multiples of (<LEVEL> - the
minimum level).  .CHAPTER and .HL commands automatically make entries
for table 0 after it has been started.  The level for .CHAPTER is 0;
for .HL is the given header level.

.skip 1
.indent -5
 .DO TABLE  {<ID>}	.DT {<ID>}
.break .s1
.index ^^DO TABLE\\  {<ID>}
Outputs the table with the given <ID>.  If no <ID> is given, it outputs
all tables that have been defined.
.end bar
.skip 4
.left margin 0
.test page 15
.begin bar
.header level 1 Macros
.x Macros
.x ^Commands>macros
.para
A new command and new flag allow the definition and expansion of
MACROS.  MACROS may be nested and have up to three arguments.
.note
Improper use of MACROS may result in obscure messages such as
"?Illegal Memory Reference at User PC xxxxxx".
These useless messages should be fixed in a future version, but
for now, if RUNOFF gives such messages and you are using MACROS,
be suspect.
.end note
.index ^^DEFINE\\ _<name_>
.skip 1
.literal
.DEFINE <name> <text> cr
.DEFINE <name> cr
  <text1> cr
  <text2> cr
    ...
  <text3> ! cr
.end literal
.skip 1
.literal
<, >, and cr are metasyntactic delimiters.
.end literal
.note
A multi-line MACRO must be ended with an "!" (exclamation) while a
single line MACRO needs only to be terminated with a cr (carriage return). If
an argument is seen past the MACRO name then the MACRO will be considered a
single line MACRO.
.end note
.left margin +5
.index ^^FLAG MACRO\\ _$
.indent -5
 .FLAG MACRO _$
.para
_$ is the default.  This flag is normally off.
_$name or _$name_$ will then give the expansion of the macro
named name.
.para
_$name(arg1, arg2) gives an expansion after argument substitution.
Other commas or parentheses in macros must be quoted.  Inside of the
macro, _$_$1, _$_$2, and _$_$3 refer to the arguments.  (_$ is the
flag character.)
.skip 1
Several special macros have been predefined.
.skip 1
.
_$FRACT(num, den) yields a fraction with a horizontal
dividing line and num as the numerator and den as the denominator.
.skip 1
.
_$TRIPLE(from, to, op) yields a three level configuration
such as a summation with limits given by _$triple(I-1, n, @s).  Each
line is centered.
.skip 1
.
_$UTRIP(from,to,op) yields a triple with each line left
justified.
.skip 1
_$HALFR(c) causes 'c' (a single character) to be printed half
a space to the right on the AJ or DIABLO.  (AJ12 or D12 must be
specified if 12-pitch is to be used.)
.skip 1
.
_$RTEDGE(text) places its text argument against the right
margin.  Does not cause a line break.
.end bar
.skip 4
.left margin -5
.test page 15
.begin bar
.header level 1 Counters
.x Counters
.x ^Commands>counters
.para
A part of the macro facility that can be used to count footnotes,
pages, etc.  A counter is 1-6 characters long, the first alphabetic, the
others alphanumeric.  A description is given below of how counters
can be defined, how they are used, and which counters are predefined.
.skip 1
.left margin +5
.indent -5
 .COUNTER <name> <value>	.CO <name> <value>
.index ^^COUNTER\\ <name> <value>
<value> is optional and defaults to 0.
<value> can be a decimal number, counter name, or counter name +/-
decimal number.
.skip 1
.indent -5
 .SET <name> <value>
.INDEX ^^SET\\ <name> <value>
.break
<value> is optional and defaults to 0.
.skip 1
.indent -5
 .INCREMENT <name> <value>	.INC ...
.index ^^INCREMENT\\ <name> <value>
.break
<value> is an optional increment and defaults to 1.
.skip 2

.center;Usage
.skip 1
.para
Counters are used as macros.  (Brackets denote optional choices.)
.literal
.FLAG MACRO $
$name{$}      - Counter value substituted in text.
$name+/-n{$}  - Counter value +/- n substituted in text.
.end literal
.skip 1
.
Predefined counters:
.skip 1
.skip 1
PAGE                    - Current page number.
.skip 1
CHAPTER                 - Current chapter number.
.skip 1
HL1                     - Section level 1.
...                     - ...
HL5                     - Section level 5.
.skip 1
FOOTNOTE                - Number of last footnote.
.skip 1
FIGURE                  - Number of last figure.
.skip 1
LMARG                   - Left Margin
.skip 1
TBLLVL                  - Maximum header level to be inserted in the table of
                          contents.
.skip 1
FRAUND                  - If this is non-zero, then fractions are done with
                          half-up underlining.
.skip 1
BOTNUM                  - Number of blank lines left below page numbers
                          when at page bottom (initialized to 8)
                          (set to 4 for thesis)
.skip 1
HWPLN                   - Number of lines that will fit on paper
                          (initialized to 66) (set to 64 to be accurate
                           for AJ or line printer)
.skip 1
CHPDWN                  - Number of lines to skip before chapter start
                          (initialized to 12)
.skip 1
HEADSP                  - Number of lines to skip before .HL
                          (initialized to 3)
.skip 1
IF and IFNOT can use counters for arguments with 0 meaning false and non-zero
meaning true.
.end bar
.skip 4
.left margin 0
.test page 15
.header level 1 Conditionals
.x ^Commands>conditional
.paragraph
Text and commands may be conditionally skipped or processed, depending on the
value of variables defined by the user. Variable names consist of up to 6
letters (no digits allowed). All variables to be used are declared at the
beginning of the input file with the .VARIABLE command. Variable values will
be false unless listed in the /VARIANT switch to RUNOFF (see list of switches
for format). Text and commands to be conditionally processed are bracketed
by .IF and .ENDIF (.IFNOT and .ELSE also).
.left margin 5

.skip 1
.indent -5
.test page 10
 .VARIABLE name ch ch	.VR name ch ch
.INDEX ^^VARIABLE\\ name ch ch
.paragraph
Declares variable specified (name).
Value will be false unless same name was also specified in /VARIANT switch.
.par
The two characters, ch and ch, are any two non-blank and non-comma
characters. They are used only with /DRAFT to indicate whether text would be
generated without the /DRAFT switch. This is because /DRAFT causes all text
to be generated whether or not conditional is true. The first character is
output at the beginning of each line if the text would not be, the second
character if it would be. No character is output on the last line if no break
was done before the ENDIF command occurs.
.skip 1
#####.VARIABLE EXTRAS [ ]

.skip 1
.indent -5
.test page 10
 .IF name
.INDEX ^^IF\\ name
.paragraph
Process the following text (up to .ENDIF or .ELSE) only if variable name was
specified with a /VARIANT switch.

.skip 1
.indent -5
.test page 10
 .IFNOT name
.INDEX ^^IFNOT\\ name
.paragraph
Process the following text (up to .ENDIF or .ELSE) only if variable name
was NOT specified with a /VARIANT switch.

.skip 1
.indent -5
.test page 10
 .ELSE name
.index ^^ELSE\\ name
.paragraph
Reverse sense of .IF or .IFNOT.
If input was being processed, quit till .ENDIF, otherwise begin processing.
Variable name must match name used in preceding .IF or .ENDIF.

.skip 1
.indent -5
.test page 10
 .ENDIF name	.EI name
.index ^^ENDIF\\ name
.paragraph
End conditional processing. If input was being skipped, resume processing.
Otherwise pretty much ignore .ENDIF.

.left margin 0
.!Thanks to the Catholic University of America newsletter v.9, no.2,
.!Dec 1978 for documenting Program Logic Manuals.
.skip 4
.left margin 0
.test page 15
.chapter Program Logic Manuals
.index ^P^rogram ^Logic ^Manuals
.par
RUNOFF can produce a Program Logic Manual (PLM) from a source code file
written in Fortran, Macro, or some other language. The comments in the
program are written to allow RUNOFF to process them selectively. Only
selected comments go into the PLM (comments may be either text or RUNOFF
commands). Special characters are used to indicate to RUNOFF which comments
are to be used.
.par
RUNOFF must know what comment character was used and what characters imbedded
in the comments enable or disable RUNOFF's processing of comments. There are
four of these special characters. Together they make up the SELECTION STRING.
RUNOFF assumes certain selection strings for each language it knows (language
determined by extension on file). If the default is not acceptable (which it
is not for F40), the selection string may be changed with the .SELECT
command. The four selection characters are as listed below.
.left margin 5
.skip 1
.indent -5
Comment character
.
This character defaults to ";" for Macro-10 and "!" for FORTRAN and most
other languages.
The F40 compiler does not accept "!" as a comment so it is necessary to
change the comment character to "C" or some other comment character.
Note that "c" is quite a different character from "C" as far as RUNOFF is
concerned.
.skip 1
.indent -5
Single command character
.
This character defaults to "_&". It immediately follows the comment character
to tell RUNOFF to read the rest of the line.
.skip 1
.indent -5
Block start character
.
This character defaults to "+". It immediately follows the comment character
to tell RUNOFF to read each comment following this line. The comment
characters themselves are not included in the PLM.
.skip 1
.indent -5
.tp 5
Block end character
.
This character defaults to "-". It immediately follows the comment character
to terminate a block begun with the begin block character ("+").

.skip 2
.indent -5
.test page 10
 .SELECT string	.SL string
.index ^^SELECT\\ string
.paragraph
Set the selection string.
String consists of four characters as described above (same order).
Any special characters in the string must be quoted with "__".
This command need not be used if the default selection string determined by
the file's extension is correct.
It must be used for a FORTRAN program using "C" for comments.
A sample program follows:
.skip 1
.left margin 10
.no fill
.test page 10
C Set comment character for RUNOFF
C!_&.SELECT C___&+-
C This line is ignored by RUNOFF, as is next statement.
######A=B*C-DEF
C+
C.RIGHT MARGIN 25
C This line is included due to the + beginning a block.
C Continues till next line.
C-
######END
.SKIP 1
.INDENT -5
This program (called file.F40 here) is processed:
.skip 1
&.R RUNOFF
&*file.F40
.skip 1
.indent -5
And the result in file file.PLM:
.skip 1
This line is included due
to   the  +  beginning  a
block.   Continues   till
next line.
.fill
.left margin 0
.number index
.number 0
.no header
.page
.spacing 1
.center;INDEX
.center;(Entries entirely in upper case are command names.)
.skip 2
.print index