especially if sub or superscripted expressions are to be underlined. /U:L is also necessary if alternate fonts substitute other characters for the underscore. 6. If a font switch results in a pitch change that is not an even multiple of the normal font, you must handle this CHAPTER: RUNOFF COMMANDS - RUNOFF - 70 - SECTION: DEFINE, DELETE, AND RESET - 27 OCT 1986 change manually. If such a change is defined as a lock/unlock pair, RUNOFF will be able to print headers in the old pitch while using the new one for text. New mar- gins should be set for the new pitch, while the old per- manent margins are maintained to control the headers. Underlining will not work properly in the new pitch unless /U:B is used. 7. If a single font is used throughout, then no attributes need be defined for the font change. 8. Never use letters after ^ or when defining escape sequence labels. Combinations like ^A will defeat the uppercase flag for the letter "A", and /A defeats the lowercase flag for "A". 9. Escape sequences can be used inside substitutions, but you should be careful to use the proper options. 10. Escape sequences can interact badly with the equation for- matting if you are not careful. Each partial line advance is noted, and the equation formatting will shift the equa- tions to allow for subscripts and superscripts. If characters are moved up or down by less than 1/2 line, you should probably not specify the actual vertical movement (VSP). 11. Some sequences may conflict with DEC device handler conventions. In particular XON(17) or XOFF(19) will be intercepted by the device handler on RSX or VMS. These codes should be avoided in escape sequence definitions. If they must be used, then the terminal should be in pas- sall mode or the output must be sent directly to the device with the /TT option. Other control codes, such as TAB(9), can be passed directly to the device by setting the characteristics of the device. NOTE Failure to use these suggestions can cause unpredictable _______ __ ___ _____ ___________ ___ _____ _____________ results. ________ EXAMPLES 1. The following example shows the definition of an escape sequence to turn on and off bolding. DIABLO compatible printer. .DEFINE ESCAPE '^*',CHR,LCK,27,'W' .DEFINE ESCAPE '\*',CHR,LCK,27,'&' .FLAGS SPECIAL * Bolding for an LA-50: .DEFINE ESCAPE '^*',CHR,LCK,27,'[1m' .DEFINE ESCAPE '\*',CHR,LCK,27,'[22m' .FLAGS SPECIAL * CHAPTER: RUNOFF COMMANDS - RUNOFF - 71 - SECTION: DEFINE, DELETE, AND RESET - 27 OCT 1986 The net effect of these definitions is to have ^* turn on bolding, \* turn off bolding, and * bold a single character following it. Bolding will never occur for ti- tles, page numbers and subtitles. 2. The following example shows how to define escape sequences to produce special symbols on a DIABLO compatible printer. The extra font is enabled by SO(14) and disabled by SI(15). .FLAGS ESCAPE ` .DEFINE ESCAPE "`A",HSP,1,14,"A",15 .DEFINE ESCAPE "`a",HSP,1,14,"q",15 .DEFINE ESCAPE "`^",HSP,1,14,1,15 The 3 symbols are invoked by `A, `B, and `^. The following defines a "pi" for an LA-50 or VT-100: .DEFINE ESCAPE '`p',HSP,1,27,"(0{",27,"(B" 3. The following example shows how to enable and disable dou- ble width characters for an LA-50. It is assumed that the normal pitch is 10 characters/inch. .DEFINE ESCAPE "^=",HSP,2,PSP,LCK,27,"[5w" .DEFINE ESCAPE "\=",HSP,1,PSP,LCK,27,"[1w" ^= turns on elongated characters. (5 pitch) \= turns off elongated chars. (10 pitch) NOTE Some examples of escape sequence definitions and substi- tutions are provided in the files VT100.RNO, LA50.RNO and CIT161.RNO on the distribution kit. .DEFINE ITEM /name/ [format],[n] defines a numbered item that can be included in your text. "name" is a substitution label for the item, and "format" is the format used to display the item; see .DISPLAY PAGE. The initial value for the item, n, must be specified in the range 0 to 4095 or as a series of letters from A to FAM. If letters are used for n, then the format must not be omitted. When an item is defined, it is in- cluded in the SUBSTITUTE table. The value can be incremented or changed by .NUMBER ITEM. For example, the following commands will define, increment and display a number: .DEFINE ITEM /FIG$/ .NUMBER ITEM /FIG$/ +1 $FIG$ DEFAULT: .DEFINE ITEM /item/ D 1 CHAPTER: RUNOFF COMMANDS - RUNOFF - 72 - SECTION: DEFINE, DELETE, AND RESET - 27 OCT 1986 .DEFINE NUMBER parameter /label/ defines a numeric substitution. The parameter determines what number is used in the substitution. Normally the number must be defined before you use the label. You can reference the label be- fore the .DEFINE NUMBER statement if you use the /2 option. Parameters are: Param. Number substituted APPENDIX Current Appendix or chapter CHAPTER Current Chapter or appendix LIST Current List element LEVEL Current Header level PAGE Current Page-subpage number ITEM /name/ Item named The LEVEL cannot be defined inside a footnote or text section. You should be careful mixing these commands with .TEXT DEFERRED. The text deferred command can cause the output text to appear on another page, or in another section of your text. If you use .DEFINE NUMBER PAGE, it will only work properly in 2 pass mode. In particular, definitions inside text deferred will only give the correct page number after the text has been output. The ac- tual page number may be off by 1 page even in 2 pass mode if the definition appears after the symbol is used. For this to always work correctly, an infinite pass mode would be necessary. As a practical matter, you can help RUNOFF by defining the label to be approximately the same length as the anticipated number. .DEFINE NUMBER LEVEL should not follow .NUMBER LEVEL or precede .HEADER LEVEL. If it does, it may not give the correct level number. EXAMPLE If you want to refer to a section in your document with the label SECA$, then in that section place the command: .DEFINE NUMBER LEVEL 'SECA$' Later in your document you can refer to the section with See section $SECA$ . . . The following command will print the current chapter number: .DEFINE NUMBER CHAPTER /CHAPA$/ ; $CHAPA$ To define a label with the same number as an item: .DEFINE NUMBER ITEM /item/ /label/ For further examples, see test files: ITEM.TST and DEFNUM.TST .DEFINE SUBSTITUTE /label/ text defines a substitution to be made in the text. The label is pre- ceded and followed by a delimiter of your choice. The label must be no more than 20 characters long, and should not contain spaces or tabs. The command and the first delimiter must be separated by one or more spaces or tabs, but no spaces are necessary after the second delimiter unless you wish to include them in the text. When a substitute flag is followed by a defined label, the specified text will be substituted for the flag+label. The text can contain another substitution. Up to 3 levels of substitution can be nested. The rules for multiple definitions of escape sequences CHAPTER: RUNOFF COMMANDS - RUNOFF - 73 - SECTION: DEFINE, DELETE, AND RESET - 27 OCT 1986 also apply to substitutions. .DEFINE SUBSTITUTE must be the last command on the line. All text following this command is treated as the substitution definition. EXAMPLE: If you wish to abbreviate the phrase The party of the first part define and enable substitution with .DEFINE SUBSTITUTE /P1$/The party of the first part .FLAGS SUBSTITUTE Then every time you type $P1$ you will get instead the substitute phrase The party of the first part This example of define substitute could have used different delimiters if you needed to used the delimiters in the text. For example, it could be done as follows: .DEFINE SUBSTITUTE :P1$:The party of the first part ... or .DEFINE SUBSTITUTE "P1$"The party of the first part The substitution label or name can consist of any printable character. Upper case or lowercase letters can be used, but the case of the letter will be ignored except for the first character. In other words, the following commands are equivalent: .DEFINE SUBSTITUTE /ABC/ .DEFINE SUBSTITUTE /Abc/ .DEFINE SUBSTITUTE /AbC/ But the following are not equivalent: .DEFINE SUBSTITUTE /aBC/ .DEFINE SUBSTITUTE /ABC/ A special convention is used to define DSR compatible substitutions. If the first character of the substitution name is a dollar sign, the dollar sign stands for the substitute flag. If the substitute flag is changed to a character other than the dollar sign, then the defined substitution is considered to begin with the new substitute flag. When the substitution is searched for, the case of the input characters is ignored. An example of such a substitution is the $$DATE permanently defined substitution. For example, the following input: .FLAGS SUBSTITUTE @ .DEFINE SUBSTITUTE /$TEST/This is a test @@test !! will produce the following line: This is a test !! Substitution is an invaluable aid for defining complicated mathematical symbols. All you need to enter in the text is the simple abbreviation and the complicated symbol will be substituted. The substitution can contain all kinds of escape CHAPTER: RUNOFF COMMANDS - RUNOFF - 74 - SECTION: DEFINE, DELETE, AND RESET - 27 OCT 1986 sequences, overstrike symbols, and so forth to construct the special symbol needed. WARNING You should always define substitutions with labels that do not contain other substitute labels. For example, the labels ABC and A, while unique, will cause you no ends of problems. The first label ABC contains the second label. As a result, the construction $ABC could be ambiguous. Did you intend the substitution $A fol- lowed by the letters BC or the substitutions $ABC? The easy way around this problem is to always terminate each substitution with a terminal character. It is suggested that the substitute flag character be used. You would then define A$ and ABC$ as the labels. You would then type $ABC$ for one substitution and $A$BC for the other. .DEFINE SUBSCRIPT [parameters] allows the user to define the subscript escape sequence, which is an escape sequence that moves the text down 1/2 space on the page. The sequence must not exceed a maximum of 10 numbers or characters. The parameters can be either numbers or literals. The default is: .DEFINE SUBSCRIPT 27,"U" The subscript sequence be properly defined for equations of half spacing to work. For an LA-50 the sequence would be: .DEFINE SUBSCRIPT 27,"K" .DEFINE SUPERSCRIPT [parameters] allows the user to define the superscript escape sequences, which is an escape sequence that moves the text down 1/2 space on the page. The sequence must not exceed a maximum of 10 numbers or characters. The parameters can be either numbers or literals. The default is: .DEFINE SUPERSCRIPT 27,"D" This must be properly defined for equations of half spacing to work. For an LA-50 it would be: .DEFINE SUPERSCRIPT 27,"L" .DEFINE VARIABLE SPACE n,[parameters] defines a micro space value, n, in microspaces/unit, for implement- ing variable spacing between words. Normally 1 unit is 1 space. The parameters define the escape sequence that produces a microspace. The escape sequence can have up to 20 numbers or characters. The default is: .DEFINE VARIABLE SPACE 6,27,31,3," ",27,31,13 This defines 6 microspaces/space for a DIABLO style printer at 10 pitch. .DEFINE VARIABLE SPACE 5,27,31,3," ",27,31,11 CHAPTER: RUNOFF COMMANDS - RUNOFF - 75 - SECTION: DEFINE, DELETE, AND RESET - 27 OCT 1986 Defines 12 pitch Diablo. This available as an option in RNPRE when you build RUNOFF. To do the same for an LA-50 in 10 pitch with 180 dots/inch graphics: .DEFINE VARIABLE SPACE 6,27,"Pq",62,62,62,27,"" For proportional fonts, the micro space definition will probably be equal to the minimum movement of the carriage, and n=1. This must be properly defined for justification of proportional fonts. (Not available in DSR) .DELETE COMMAND /label/ deletes an already defined command. Only commands defined by .DEFINE COMMAND can be removed. Neither this command nor .DELETE SUBSTITUTE reclaim the space in the substitution tables, so exten- sive useage of defines and deletes can cause the tables to overflow. .DELETE COMMAND is illegal in 2 pass mode. .DELETE SUBSTITUTE /label/ deletes an already defined substitution. Only commands defined by .DEFINE SUBSTITUTE can be removed. This command is illegal in 2 pass mode. (Not available in DSR) .RESET ESCAPE resets all escape sequences. The internal table of all escape se- quences is cleared so that you can enter new ones with the .DEFINE ESCAPE command. After giving this command no escape sequences are any longer defined. If you need to reset escape sequences, this should be done only once at the beginning of your input file. .RESET SUBSTITUTE resets the table of substitutions so that all the previously de- fined substitutions and commands are no longer available. The per- manently defined substitutions ($$DATE...) and defined commands are also no longer defined. To remove a single entry, use .DELETE SUB- STITUTE or .DELETE COMMAND. This command can be dangerous, so use with caution. It should done only once at the beginning of your input file. This command is illegal in 2 pass mode. V.16 MISC COMMANDS .COMMENT text .; text .! text causes the line to be ignored. The text is not printed in the output. Comments may contain useful information that you need when re-editing the file. For example, you might wish to add comments CHAPTER: RUNOFF COMMANDS - RUNOFF - 76 - SECTION: MISC COMMANDS - 27 OCT 1986 to a string of .DEFINE ESCAPE and .DEFINE SUBSTITUTE to remind you what each escape sequence and substitution does. .NO SPACE .NSP joins 2 filled lines without the normal space between them. If .FILL is engaged and you issue .NO SPACE after a line, a space will not be automatically generated in the output .DOC file. The end of a line may still cause a break. This condition could be forced by ending the previous line with a break flag. For example, Dis .NO SPACE;combobulate Will be printed as: Discombobulate .REQUIRE 'filespec' .REQ 'filespec' allows input text to be taken from the specified file. A .REQUIRE command can be imbedded in files that have been required. Required files can be nested in this fashion to a depth of 7 input files all open at once. An attempt to require a eighth level of input will cause an error. The default filetype for a required file is .RNO. The filename can be enclosed in either single (') or double (") quotes. If any commands follow the .REQUIRE command on the same, they will be ignored. DEFAULT: file type=.RNO (DSR allows 10 levels of nesting) The .REQUIRE command allows a document to be easily broken up into reasonable chunks. For example, each section of a document could be put in a separate file and a master file that requires each sec- tion in order could be used to create the complete document. If the order of the sections needed to be rearranged, all that must be done is to change the order of the .REQUIRE statements in the mas- ter file. Overall formatting commands such as .PAGE SIZE, .DISPLAY, .HEADER ... could also be put into a separate that could be required at the beginning of each section. Commonly used substitutions and escape sequences can be put in a file that is required at the beginning of any file that needs them. The .REQUIRE statement can be used to simplify the generation of a series of letters with the same body but different inside addresses and salutations. Make a master file that contains the inside ad- dresses and salutations and put the line .REQUIRE "LETTER" after each salutation. Create a file LETTER.RNO with the actual text of the letter. Running the master file through RUNOFF will then produce a string of personalized letters. Later you can change the contents of LETTER.RNO to get another set of personal- ized letters for mass mailings. The .REQUIRE statement can be used to get input from a terminal. For example, CHAPTER: RUNOFF COMMANDS - RUNOFF - 77 - SECTION: MISC COMMANDS - 27 OCT 1986 .REQUIRE "TT:" can be combined with the .TYPE command to prompt the user for input that RUNOFF will accept from the terminal. The input must be ter- minated by CTRL-Z. .REQUIRE BINARY [spacing] 'file-specification' .REQ BIN 'file-spec' transfers input from the specified file directly to the .DOC output file with no interpretation. Before the transfer, a break is per- formed and a test page is executed with the specified spacing. The .REQUIRE BINARY is useful for inserting diagrams and other graphi- cal input into the text file. "Spacing" tells RUNOFF how much space to allow for the binary input file. .REQUIRE BINARY is ille- gal during a note, footnote, or text section. It is your responsi- bility to make sure enough space is available on the current page for the output by specifying the correct spacing. If the input file contains more than a fraction of a page, you may need to in- crement the current page number with .NUMBER PAGE +n. V.17 SAVE/RESTORE COMMANDS These commands save and restore the current status of various variables. The status is restored automatically under certain con- ditions, or can be restored on demand with the RESTORE command. There are some similar commands in DSR, but they currently do not do the same thing. List of commands saved as part of the status: ____ __ ________ _____ __ ____ __ ___ _______ .AUTOBREAK .AUTOHYPHENATE .AUTOPARAGRAPH .LOWERCASE .FILL .JUSTIFY .PERIOD .UPPERCASE .ENABLE/DISABLE BAR CONTINUE ESCAPE EQUATION FLAGS HYPHENATION INDEXING OVERSTRIKING SUBSTITUTION TABS UNDERLINING The options specified in the .PERIOD and .AUTOHYPHENATE commands are not saved or restored. .SAVE APPENDIX saves the status. Restored automatically by an .APPENDIX command. .SAVE CHAPTER saves the status. Restored automatically by a .CHAPTER command. .SAVE HEADERS saves the status. Restored automatically whenever a page header or page number are printed. Normally the page header is produced us- ing the status at the last .TITLE, .SUBTITLE, or any command that automatically generates titles and subtitles. This is useful for CHAPTER: RUNOFF COMMANDS - RUNOFF - 78 - SECTION: SAVE/RESTORE COMMANDS - 27 OCT 1986 preventing or allowing features as underlining to appear in the page header. In particular, the .FILL mode is saved, and applies to the title, subtitle, and page number. .SAVE LEVELS saves the status. Restored automatically by a .HEADER LEVEL command. The status is only restored if the header level number is printed. Non-numbered levels do not restore status. For example, you can restore .FILL, .JUSTIFY etc for each section of the document. .SAVE STATUS saves the status. Restored automatically by the .RESTORE STATUS command. .RESTORE STATUS immediately restores the status saved by the last SAVE STATUS command. .SETUP escape sequences sends the specified escape sequence to the output file without in- terpretation before any other text. The escape sequence can con- sist of numbers and literals. This command is designed to set up the printer, and must precede all text. For examples of escape se- quences see .DEFINE ESCAPE. (Not available in DSR) .TRACE generates an error message to aid in debugging your .RNO file. An output error message informs you whenever a footnote, note, or text section is being formatted, if fill, justify, or lock modes are on. The current flags characters (except for special flags) are listed. In addition, the current margins and spacing are printed. The page size and spacing are specified in half lines. (Not available in DSR) .TYPE text causes the "text" to be typed on your terminal. The text must not be longer than 72 characters. This command is useful in tracing the progress of RUNOFF, for issuing a prompt before .REQUIRE "TT:" for user input. (Not available in DSR) V.18 INDEXING You can have RUNOFF produce an index for your document by indicating each keyword you wish to appear in the index with the .INDEX command. The index can be printed with the .PRINT INDEX or .DO INDEX command. Indexing does not automatically cause all occurences of a keyword to be CHAPTER: RUNOFF COMMANDS - RUNOFF - 79 - SECTION: INDEXING - 27 OCT 1986 included in the index; the index facility is intended for produce in- dexes, not concordances. .INDEX [text] .X [text] adds an index entry along with the current page number to the in- ternal index buffer. The command does not cause a break. If in FILL mode, the index command must appear immediately after the item to be indexed. If in NO FILL mode, the index command must appear immediately after the line containing the index item. If RUNOFF breaks the line because it is too long, the index page number may be incorrect. Underlining, overstriking, and escape sequences are not recognized in index keywords because there is no rational way to alphabetize keywords if they are used. A given keyword can be indexed more than once. If a keyword is indexed more than one time on a given page, only one entry appears for that page in the index. SEE also the commands .ENABLE INDEXING and .DISABLE INDEXING. .ENTRY index term .Y index term puts an index term into the index, but doesn't include the current page number. This command requests optimization for subindex entries. .DO INDEX [;][text] .DX [;][text] clears the title and subtitle, uses the text as a header, and starts a new page. The entire contents of the internal index buffer is printed and the buffer is reset. The .DO INDEX command is equivalent to: .TITLE .SUBTITLE .FLUSH .PAGE .C; [text] .S 4 .PRINT INDEX If no text is specified, the word INDEX is used as the header text. .PRINT INDEX ["entry"] .PX ["entry"] prints the specified entry in the internal index buffer. If no entry is specified, the entire index buffer is printed and the buffer is reset. (If an entry is specified, the internal index buffer is not reset.) The "entry" must be a previously specified index term. This term and all of its subindex terms will be printed. Entries are printed in alphabetic order and are set against the left margin. Chapter and subpage numbers are printed in the same format as specified by the .DISPLAY CHAPTER or .DISPLAY SUBPAGE commands. Regular line spacing is used, except that a new CHAPTER: RUNOFF COMMANDS - RUNOFF - 80 - SECTION: INDEXING - 27 OCT 1986 paragraph is formed between entries with different first letter. Orphan lines at the end of the page are prevented by the paragraph test page value. Paragraph indentation is used to indent extra page numbers that cannot fit on the line with the index entry. If both FILL and JUSTIFY are enabled, the entry is followed by el- lipses ( . . . ) and the page numbers are printed right justified with respect to the current right margin. If FILL is disabled, the ellipses are omitted. If JUSTIFY is disabled, the page numbers will start 2 spaces after the index entry, and no justification will occur. (This use of FILL and JUSTIFY as well as the paragraph spacing is not the same as in DSR) .DELETE INDEX "entry" deletes an index entry from the internal index buffer. (The buffer is not shortened, so no space is saved.) This command is useful for breaking the index into several parts. Each part can be printed separately by .PRINT INDEX and the deleted. Finally, all of the remaining parts can be printed and the internal index buffer reset. .RESET INDEX resets the internal index buffer so that it contains no entries. This is done automatically by .DO INDEX or an unqualified .PRINT INDEX. SUBINDEX Terms can be subindexed by issuing the command .FLAGS SUBINDEX. Each subindex item is marked by a subindex flag. Subindex items will appear indented by 2 spaces more than the previous item when a .PRINT INDEX command or .DO INDEX is issued. For example, the fol- lowing text: .FLAGS SUBINDEX .INDEX flags>substitute .INDEX flags>index .PRINT INDEX produces: flags index 1 substitute 1 AUTOINDEX Index terms can be generated automatically without using the .INDEX command if the .FLAGS INDEX command has been issued. Any term pre- ceded by an index flag (>) will be automatically indexed. For further information see: FLAGS INDEX. Autoindexing cannot be done inside a .TITLE, .SUBTITLE, .CHAPTER, .APPENDIX, or .HEADER LEVEL command. The index facility can optimize the speed of index processing by keeping internal quick reference tables in dynamic memory. A table is always kept for the main entries. You can control whether CHAPTER: RUNOFF COMMANDS - RUNOFF - 81 - SECTION: INDEXING - 27 OCT 1986 tables are kept for subentries by using the .ENTRY statement. For example, if you know that a large set of subindex entries will be made under the entry NAMES, then you should request subindex optim- ization with the following command: .ENTRY NAMES> This command must precede any .INDEX commands with the main entry NAMES. If you do not wish optimization for the subentries of NAMES, then use the command: .ENTRY NAMES The optimization applies to all levels of subindex entries. For example, .ENTRY NAMES>Authors>British .ENTRY NAMES>Authors>American .X NAMES>Authors>French will optimize all subentries under NAMES,Authors,British, and American. Subentries under French will not be optimized. The number of subindex entries must be greater than 26 for optimization to improve the execution speed. V.19 TABLE OF CONTENTS RUNOFF can produce a table of contents (TOC) for your document that in- cludes all chapters and and section headers at level 1. The .ENABLE LEVELS command can be used to include other header levels in the TOC. The addition of items to the TOC can be enabled or disabled by the .ENABLE TOC and .DISABLE TOC commands. The resulting TOC is not quite the same as that produced by DSR in that the header levels are not in- dented by the same amount. (This may be changed in future versions.) A TOC file is produced if you have specified a second output filespec when envoking RUNOFF. The default extension of the TOC file is .RNT. For example, to get a TOC file and a regular runoff file, type RUN RUNOFF *EXAMPLE,EXAMPLE=EXAMPLE The two files EXAMPLE.DOC and EXAMPLE.RNT will be produced from the input EXAMPLE.RNO. EXAMPLE.RNT file must then be passed through RUNOFF to get the final TOC file. If the .RNT is not satisfactory, you can edit it before this final step. For example, RUN RUNOFF *EXAMPLE.TOC=EXAMPLE.RNT The final EXAMPLE.DOC and EXAMPLE.TOC files can be printed separately or a new composite file can be created: COPY/CONCATENATE EXAMPLE.TOC,EXAMPLE.DOC EXAMPLE.TXT The composite file EXAMPLE.TXT is now a complete document to be printed. The following commands control the TOC output. CHAPTER: RUNOFF COMMANDS - RUNOFF - 82 - SECTION: TABLE OF CONTENTS - 27 OCT 1986 .SEND TOC [;]text .STC text sends the "text" to the .RNT file. The text can be used to control the TOC output. The text can actually be a set of commands. For example, .REQUIRE "FORMAT" might be used to insert a set of com- mands to control the format of the TOC. If the same command ap- pears in the text, you insure that the TOC and documentation all have the same format. .SEND PAGE TOC [n] [;text] sends text and the current page number to the .RNT file. If n is specified, the text is preceded by .IF TOCn and followed by .ENDIF TOCn. The parameter n must be in the range 1 to 9. This command facilitates multiple indices. You can use the .DISABLE UN- CONDITIONAL command to turn off regular index entries, and pick up and print the conditional entries in a second or third pass. .TOC .END TOC are not normally used. They are automatically placed in the .RNT file by RUNOFF. .TOC enables formatting for the table of contents. It does the following: 1. New pages for each chapter are inhibited. 2. The .CHAPTER command uses the paragraph test page to check the number of lines available. 3. All tab stops are cleared. 4. .NO NUMBER CHAPTER 5. .STYLE CHAPTER 1,-1,-1,0,2 6. .STYLE HEADERS ,,,,,0,0,0 This sets "skips" and "test page for levels" to zero. 7. .INDENT LEVELS 8,8 .END TOC is the complement to .TOC. It ends the table of contents and allows normal text processing. It does the following: 1. New pages are allowed at the start of each chapter. 2. Tab stops are NOT changed. ___ 3. .NUMBER CHAPTER 4. .STYLE CHAPTER 12,1,3,-1,-1 5. .STYLE HEADERS ,,,,,2,1,7 6. .INDENT LEVELS 0,0 The format of the final table of contents can be altered either by edit- ing the .RNT file or by using .STC to add extra commands. The following hints may help you in designing your own format. 1. The .RNT file needs .FILL to operate properly so do not edit a .NO FILL command into it. 2. The page numbers are right justified using tabs without el- lipses enabled. If you want ellipses, use the .SEND TOC .ELLIPSES command. 3. .ENABLE LEVELS n1,n2 can be used to automatically determine which header levels are printed in the table of contents. The CHAPTER: RUNOFF COMMANDS - RUNOFF - 83 - SECTION: TABLE OF CONTENTS - 27 OCT 1986 parameter n2 is the maximum header level to output to the .RNT file and hence the maximum to appear in the table of contents. 4. A title page can be placed in front of the table of contents by putting it into a separate file called TITLE and inserting .STC .REQUIRE "TITLE" at the front of the .RNO file. 5. You can number the table of contents in lower roman numerals with the command .STC .DISPLAY NUMBER RL. 6. The .STYLE commands can be inserted into the .RNT file to con- trol the actual format of the final table. By doing this you can vary the spacing between the entries, the spacing between items in the entries, the capitalization of the header levels and so on. 7. .INDENT LEVELS can be used to change the HEADER LEVEL indentation. 8. A foreword or preface can be inserted into the table of con- tents file by .STC .REQUIRE "PREFACE". The same numbering as the table of contents will be used. You may wish to .END TOC at the beginning of the PREFACE.RNO file if the preface con- tains section headers. FIGURES Separate tables of contents can be generated for figures and tables. To do this, use the .SEND PAGE TOC to send the figure names to the .RNT file, specifying n=1 for figures, n=2 for tables. For example, assume you are creating a document called BUILDING for which you want a separate TOC of figures. At the beginning of the BUILDING.RNO file use the commands: .SEND TOC .IF TOC0 .DUNC .SEND TOC .ENDIF TOC0 And at the end of BUILDING.RNO: .SEND TOC .EUNC To send a figure title to a separate TOC you could use a command such as .SEND PAGE TOC 1;Figure 5 - TOP VIEW OF BUILDING Then create the following .RNO file that requires 3 passes through BUILDING.RNT: .REQ "BUILDING.RNT" .VARIANT TOC0 .VARIANT TOC1 .PAGE .C;FIGURES .REQ "BUILDING.RNT" .NO VARIANT TOC1 .VARIANT TOC2 .PAGE .C;TABLES .REQ "BUILDING.RNT" Up to 9 different tables of contents can be created in this fashion. V.20 EQUATION FORMATTING An equation formatting routine designed to format multiple nested frac- tions has been added to RUNOFF (not available in DSR). To use this facility, the equation flag must be enabled with the .FLAGS EQUATION command. Braces { } are used as flags to describe how an equation is to be formatted. If a brace must appear in the text of the equation, it CHAPTER: RUNOFF COMMANDS - RUNOFF - 84 - SECTION: EQUATION FORMATTING - 27 OCT 1986 must be preceded by the underscore _. Subscripts or superscripts are handled properly in formatting fractions, but you may wish to add extra space between the fraction line and the numerator or denominator. This can be done with the command .ENABLE EQUATION 1 to add 1/2 line, or .ENABLE EQUATION 2 to add 1 whole line. Fractions are formatted in the following manner: express the fraction as {NUMERATOR}/{DENOMINATOR} and RUNOFF will output: NUMERATOR ___________ DENOMINATOR Some operating systems modify text before sending it to the output file. In particular, VMS swallows some backspaces! This can cause equations not to appear properly. If you are having problems formatting equa- tions, try having RUNOFF send the output directly to your terminal or to the printer rather than to a file. Inside an equation, the following features are disabled: 1. Underline flags 2. Fill 3. Underlining 4. Break flags - No break is caused; the line is continued. 5. Hyphenation - Hyphenation flags can be used to continue a line. 6. Autobreak 7. Tabs If an equation will not fit on a single line, it will be continued on the next line. Fractions can be nested inside each other. For example {{A}/{B} + {C}/{D}}/{DENOMINATOR}. A/B and C/D are both nested to the second level. The maximum nesting is about 6 deep. If the nesting is all in numera- tors, then it is limited to a depth of 12. If it is all in denomina- tors, it is limited to a depth of 6. Example of 4 levels of nesting in numerators: {1+{2+{3+{4}/{D}}/{C}}/{B}}/{A} Example of 6 levels of nesting in denominators: {1}/{A+ {2}/{B+{3}/{C+{4}/{D+{5}/{E+{6}/{F}}}}}} Spaces or tabs can be freely used between numerators and denominators outside the braces for clarity; they will not appear in the final output. For example, {A}/{B} will format the same as {A} / {B}. In ad- dition, tabs and spaces are treated as non-expandable spaces. As a result, fractions are never expanded to right justify the text. If an equation is imbedded inside a normal line of text and FILL is enabled, only the text outside the equation is filled. The commands .CENTER and .RIGHT will center or right justify equations. In addition, centered and right justified tab stops can be used to line up equations. CHAPTER: RUNOFF COMMANDS - RUNOFF - 85 - SECTION: EQUATION FORMATTING - 27 OCT 1986 If a fraction occupies too much space to fit within the current line spacing, the .SEPARATED FRACTION command can be used to automatically generate enough space to separate fractions. If you prefer to manually adjust the spacing, then the .FIGURE command should be used. You may wish to put equation numbers along the right margin opposite the equation. This can be done by by resetting the tab stops, and setting tab right. A single tab should precede the number to be justified. The following example shows the commands necessary to do this: .TAB STOPS .TAB RIGHT {A + B}/{C + D} eq._#5 Is printed as: A + B _____ eq.#5 C + D WARNING A fraction cannot be split between 2 lines. If a fraction im- bedded in text is too big to fit on the current line, it is moved down to the next line. If the fraction is still too big, then RUNOFF will try to break it. The break will prob- ably result in the error message: RNO -- Missing right brace in equation A string of other error messages will probably follow the first one and the output text will usually look very strange. The extra error messages should be ignored. The solution to this problem is to break the fraction up into 2 separate fractions. The commands used to control equation formatting are: 1. .FLAGS EQUATION 2. .NO FLAGS EQUATION 3. .ENABLE EQUATION n 4. .DISABLE EQUATION 5. .SEPARATED EQUATION 6. .END SEPARATED EQUATION NOTE The equation formatting routine will only work properly with word processing style hard copy printers that support sub/su- perscript escape sequences and backspacing. If the sub/super- scripting escape sequences are not the same as used by DIABLO printers, they must be defined first by the .DEFINE SUBSCRIPT and .DEFINE SUPERSCRIPT commands. Care must also be taken with some printers to see that the paper doesn't slip, as this will produce unacceptable output. If the top margin is not large enough, equations inside titles or subtitles can cause problems. CHAPTER: RUNOFF COMMANDS - RUNOFF - 86 - SECTION: CONDITIONAL TEXT - 27 OCT 1986 V.21 CONDITIONAL TEXT Sometimes you might want similar but different versions of the same document. Here are three ways that might be accomplished: 1. If the document is broken up into small sections, then master files that contain nothing but .REQUIRE commands could be used to build the individual versions of the document from the con- stituent pieces by including only the appropriate sections. 2. Define SUBSTITUTIONS that can take on different meanings for each version of the document. 3. Use the .IF, .IF NOT, .ELSE, .ENDIF, .VARIANT, and .NO VARIANT statements to conditionalize sections of the document. These commands are discussed in this section. NOTE On multiple command lines, the .IF, .IF NOT, .ELSE, and .ENDIF commands must be first. .IF aaa [bbb] ... causes the following text down to the next .END aaa or .ELSE aaa to be processed only if one or more of the labels aaa, bbb, ... have been defined by a .VARIANT command. Otherwise the text is ignored. Each label can be up to 10 numbers or letters in length in either upper or lower case. The label case is ignored, so ABC or abc are | equivalent labels. The only special symbols allowed in labels are | the underscore "_" and the asterisk "*". Other special symbols or | blanks are not allowed. If the labels have not been defined, text processing is suppressed until the next .ENDIF or .ELSE is encountered. (DSR supports only single labels) .IF NOT aaa [bbb] ... causes the following text down to the next .END aaa or .ELSE aaa to be ignored if one or more of the labels aaa, bbb, ... have been defined by a .VARIANT command. Otherwise the text is processed. .ELSE aaa | changes true conditionals to false and false to true. After an | .IF, the action is the same as if an .IF NOT were issued with the | same label. After an .IF NOT the action is the same as if an .IF | were issued with the same label. Only a single .ELSE should follow | an .IF or .IF NOT. The label aaa must either be the same as the | label for the previous .IF or .IF NOT, or it must be "*". CHAPTER: RUNOFF COMMANDS - RUNOFF - 87 - SECTION: CONDITIONAL TEXT - 27 OCT 1986 .ENDIF aaa | terminates the range of an .IF or .IF NOT statement. The label aaa | must either be the same as the label for the previous .IF or .IF | NOT, or it must be *. The .ENDIF command must not be used inside a defined command, or RUNOFF will not recognize it. If conditional text containing .REQUIRE commands is not processed, any .ENDIF in- side one of the required files will not be seen. NOTE If a literal command is used inside an IF and the text is not processed, an .ENDIF will still be recognized after the .LITERAL because the literal command is not recog- nized, so the text following it will be treated as normal text. .VARIANT aaa [bbb] ... .NO VARIANT aaa [bbb] ... defines a label aaa that is used to control the action of sub- sequent .IF commands. If the label is present in the VARIANT statement, then .IF aaa will cause text to be printed and .IF NOT aaa will suppress text. .NO VARIANT undefines the label aaa. The .VARIANT command only affects subsequent IF/IFNOT commands, and has | no affect on previous IF/IFNOT commands. Multiple labels can be | specified with one variant command. A label can contain a "*" as | the last character to indicate that the rest of the label is wild. | If a label is wild, only the characters up to the "*" are matched; | the rest of the label is ignored. For example, "A*" will define | all labels beginning with A as variants. | .IMMEDIATE IF label | .IIF label | .IMMEDIATE IFNOT label | .IIFNOT label | are similar to .IF and .IFNOT except that they apply only to the | rest of the current line and they are not followed by .ELSE or | .ENDIF. This command can be used inside a defined command, and | need not be the first command on a line. | Warning | If IF/ELSE/ENDIF commands are not the first command on a line, | or if they are inside a defined command, they will be ignored | and an error message will result. CHAPTER: RUNOFF COMMANDS - RUNOFF - 88 - SECTION: CONDITIONAL TEXT - 27 OCT 1986 Example: .VARIANT NOTES1 .IF NOTES1 This line is printed .ELSE NOTES1 This line is not printed .ENDIF NOTES1 .IF NOT NOTES1 This line is not printed .ENDIF NOTES1 .IF undefined This line is not printed .ENDIF undefined .IFNOT undefined This line is printed .ELSE undefined This line is not printed .ENDIF undefined Example: Consider the following problem: You have used a .REQUIRE at the top of several .RNO files to define some commonly used substitutions and escapes. You now make up a main .RNO file that requires several of these .RNO files. Unfortunately, the main file will cause the prefix file to be required several times, and each time it is required, a string of error messages will be generated: RNO -- Substitution already defined The way to avoid this problem is to execute the prefix file only once. This can be guaranteed by putting the statement .IFNOT prefix at the top of the prefix file, and the statements .VARIANT prefix .ENDIF prefix at the bottom of the prefix file. Example: Here is an example of the .NO VARIANT command: .VARIANT abc .IF abc This line will appear .ENDIF abc .NO VARIANT abc .IF abc This line will not appear .ELSE abc This line will appear .ENDIF abc CHAPTER: RUNOFF COMMANDS - RUNOFF - 89 - SECTION: CONDITIONAL TEXT - 27 OCT 1986 Example: Here is an example of multiple labels: .Variant abc .IF abc def This line appears .ENDIF * .IF abc This line appears .ENDIF * .IF def This line will not appear .ENDIF * IMMEDIATE example: The following illustrates the use of the IMMEDIATE IF command: .VARIANT A .IIF A;This line appears. .IIFNOT A;This line will not appear. .IIF B;This line will appear. .IIFNOT B;This line will not appear. Nesting IF statements can be nested one inside another. Remember, however, that once an .IF aaa or .IFNOT aaa causes text to be skipped, no further text will be processed until .ENDIF aaa. RUNOFF allows up to levels of nesting. Here is a nesting example: .VARIANT B .IF B This line is processed .IF C This line is not .ELSE C .IF B This line is processed .ELSE B This line is not .ENDIF B .ENDIF C .ELSE B This line is not .IFNOT C This line is not .ENDIF C .ENDIF B CHAPTER: RUNOFF COMMANDS - RUNOFF - 90 - SECTION: CONDITIONAL TEXT - 27 OCT 1986 Here is an example of improper nesting: .IF B .IF C .ENDIF B .ENDIF C RESTRICTIONS Each time you use IF/IFNOT/VARIANT commands, a label is added to the internal symbol table. If you have defined too many labels, RUNOFF will run out of dynamic memory. If multiple labels are used with an IF command, only the last one is added to the symbol table, so if you always use the same last label, you can safely have a large variety of labels before the last one. APPENDIX A RUNOFF LIMITATIONS RUNOFF has some limitations as a general text formatting program. The foremost is its inability to look ahead for formatting text based on what will be happening in the next few lines. Here is a partial list of some other problems with some suggestions as to what you can do to al- leviate them. 1. Sometimes a word can be hyphenated between pages. This can happen, for example, on a page with a footnote, or if .IMMEDIATE TEST is used to prevent dangling lines on the next page. Hyphenation is usually inhibited for the last line of a page, but RUNOFF can sometimes get confused when dealing with several commands at the same time. A solution to this problem is to .DISABLE HYPHENATION, or use the hyphenation flag to declare the offending word ineligible for hyphenation. If the problem occurs in a footnote, an alternate solution is to place the footnote between paragraphs, and break the line before the footnote command. 2. Similarly, RUNOFF can hyphenate the last word of a paragraph. This is easily fixed by using the hyphenate flag in front of the last word of each paragraph. An alternate method is to disable hyphenation for any word ending with a period. This has the unfortunate side effect of preventing hyphenation at the end of every sentence. 3. Footnotes sometimes appear on the page before the line that refers to them. This problem can be avoided by starting the footnote about 1 line after the reference. However, this may make the footnote appear on the next page after the reference, if the reference is too near to the bottom of the page. If this occurs, the .IMMEDIATE TEST TEXT command can be used be- fore the reference to force both the reference and footnote onto the same page. - 91 - APPENDIX B RUNOFF ERROR MESSAGES RUNOFF produces error messages in the following format: RNO -- error message Most of the error messages are self-explanatory. In some cases, RUNOFF prints the line in which the error has occured, so that the user can ex- amine the problem and correct it. Following the source line is the line number and file name in which that source line appears. If the error occured in a substitution, the substitution label is printed followed by the section in error inside brackets. 1. RNO -- Bad parameters A command parameter is not "correct". The command listed is listed up to the point where the bad parameter appears. An ex- ample of a bad parameter would be .INDENT 25 when you only have 20 characters per line. (Remember that the minimum number of characters per line is 16 and the minimum number of lines/page is also 16.) The following is a partial list of commands that generate this error: (A) .DEFINE ESCAPE when input is not decimal or literal. (B) .DEFINE SUBSTITUTE without delimiters around the label, or with blanks or tabs in the label. (C) .DISPLAY with a format that is not one of the following: D, LU, LL, LM, RU, RL, or RM. (D) Commands that take literals as input when the apostrophe (') or quotes (") are missing. (E) Commands with input numbers that are too big or too small. For example, .HEADER LEVEL 7 is nonsensical and is flagged as an error. 2. RNO -- Can't indent list element The user has nested lists that cause RNO to attempt indenting beyond the right margin. 3. RNO -- Can't justify line: A line of text was found containing no spaces (other than quoted spaces), so the line could not be justified. 4. RNO -- Can't reduce margins A .NOTE command occured after the margins were set to values that prevent the .NOTE command from reducing margins by 5. The margins cannot be reduced to less than 16 characters/line. - 92 - APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 93 - 5. RNO -- Character already defined as flag In attempting to enable a character as a flag, it was dis- covered that the same character is already being used for another flag. You should decide which flag you want and either disable the previous flag with a .NO FLAGS command, or use a different character for the second flag. 6. RNO -- Character specified is not special flag In attempting to disable an individual special flag, it was found that the flag character was not previously defined as a special flag in a .FLAGS SPECIAL command. 7. RNO -- Command string syntax error The command string cannot be deciphered. The general form of the RUNOFF command string is: Documentfile,Tocfile=Inputfile/Options The Options or the Tocfile can be omitted, but the other items must be specified. See the COMMAND STRING section. 8. RNO -- Command illegal inside user defined command The IF/IFNOT/ELSE and ENDIF commands cannot be used inside user defined commands. 9. RNO -- Conflicting command The indicated command conflicts with a previous command. Some possibilities are: (A) The current command is .RIGHT, but a .CENTER has also been specified for the current line. (B) The current command is .CENTER, but .RIGHT or .INDENT has already been specified. (C) The current command is .INDENT, but .RIGHT has been specified. 10. RNO -- Deferred page overflow The number of lines of text after the .TEXT DEFERRED command take up more space than is available on a page. You must ei- ther reduce the amount of text or increase the page size. This error will also occur if you forget to end the section of text with either .END TEXT, .TEXT, .TEXT DEFERRED, or .PAGE. 11. RNO -- Definition too long The definition of subscripts, superscripts must not exceed 10 numbers and characters. The definition of variable spacing must not exceed 20 numbers and characters. 12. RNO -- Extraneous chars after legal command One or more extraneous characters appear after a legal command and before the next command. These are either typographical APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 94 - errors or you used the command improperly. The command is exe- cuted in either case. 13. RNO -- IF - too many nestings Nesting of more than 31 IF statements was attempted. The max- imum nesting depth is 31. 14. RNO -- Illegal command This message encompasses a large range of errors. The follow- ing is a partial list of commands that will generate this message: (A) .END FOOTNOTE, if no .FOOTNOTE command precedes it. (B) .END LIST, if no .LIST command precedes it, or if the spac- ing is greater than 5 or less than 0. (C) .END LITERAL, if no .LITERAL command precedes it. (D) .END NOTE, if no .NOTE command precedes it. 15. RNO -- Illegal command after .LOCK command You used .LOCK at the head of the document and subsequent ille- gal commands were encountered. You can probably ignore this error message if your document is satisfactory. The inclusion of the .LOCK command was designed to exclude the statements that are now illegal. 16. RNO -- Illegal command after a .TEXT command A text section was probably not ended with an .END TEXT command. 17. RNO -- Illegal command during footnote An .END FOOTNOTE statement is probably missing at the end of a footnote. Statements that change the overall page format are forbidden during footnotes. 18. RNO -- Illegal command during note A note is probably not ended with an .END NOTE command. 19. RNO -- Illegal command on subpage A .TEXT DEFERRED, .PAGE EVEN, or .PAGE ODD command might have been used after a .SUBPAGE command, or a subpage was not ended with an .END SUBPAGE command. 20. RNO -- Illegal flag character Only special characters can be used as flags. They are: ^ ! " # $ % & ' ( ) * = [ ] { } ~ + ` | < > ? _ \ / , . Numbers or letters cannot be used as flag characters. APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 95 - 21. RNO -- Improperly nested IF, ENDIF, or ELSE Either: (A) An .ELSE or .ENDIF was not preceded by an .IF or .IFNOT with the same label. (B) An .ELSE was preceded by another .ELSE with the same label. Only one .ELSE per .IF is allowed. (C) The current .IF statement was preceded by another .IF with the same label. Each .IF must be followed by an .ENDIF with the same label. (D) The end of the document was reached and the .ENDIF cor- responding to the current .IF was not found. 22. RNO -- Input file error A read error has occured on an input file. One of the follow- ing conditions may exist: (A) The file contains a line of text with more than 512 characters. You should edit the file and shorten all such long lines to less than 512 characters. (B) A problem exists with a physical device (e.g. device cycled down). (C) The file is corrupted, or the format is wrong. (D) The file is a nonsource file. (Object file, etc.) 23. RNO -- Input file open error The file system, while attempting to open an input file, has detected an error. One of the following conditions may exist: (A) The user directory file is protected against an open. (B) A problem exists with the physical device. (C) The volume is not mounted. (D) The specified file directory does not exist. (E) The file does not exist as specified. 24. RNO -- Input file specification error An error exists in the input file specification. Correct the specification and re-enter the command. 25. RNO -- Insufficient dynamic memory One of the following commands filled up the dynamic memory: (A) .FOOTNOTE (B) .TEXT (C) .DEFINE ESCAPE - permanent (D) .DEFINE Command - permanent (E) .DEFINE ITEM - permanent (F) .DEFINE SUBSTITUTE - permanent (G) .DEFINE NUMBER - permanent (H) .INDEX - permanent (I) .IF,.IFNOT,.VARIANT - permanent All IF labels,index entries, escape sequences, and substitu- tions reduce dynamic memory permanently until the end of the current document, while footnotes and .TEXT only use it temporarily. If you define many substitutions or use .INDEX APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 96 - frequently, you must cut down on these statements. If the er- ror occured during a footnote or .TEXT, you can reduce the amount of text before the .END statement. Instead of .TEXT and .END TEXT, use .TEST PAGE or .TEST TEXT. If you are currently using the non-overlaid version of RUNOFF, switch to the over- laid version. If using the overlaid version, you should switch to a smaller overlaid version. On RT-11 try the virtual version. This message is fatal, and you may not get any output if RUNOFF is in 2 pass mode. 26. RNO -- Internal error - Contact your system manager This message is caused by an internal program error. You should never get this message. If you do, contact the system manager, unless you are already that person. This error indi- cates that RUNOFF is not working properly and should be fixed. It is also possible that you have had a hardware malfunction if the same version of RUNOFF used to work on the same identical text. Identical means no changes at all!! This is a fatal message, and you may not get any output as a result. 27. RNO -- Literal or label too long The length of the literal or label exceeds the maximum allowed. Several commands cause this error: (A) .IF commands - the maximum label is 10 characters. (B) .DEFINE commands - the maximum label is 20 characters. (C) .DISPLAY commands - the maximum literal length is 10 characters. (D) .DISPLAY ELEMENTS or .LIST command - the maximum literal length is 1 character. 28. RNO -- Maximum list level exceeded More than 5 lists were attempted to be created. That is, the command .LIST was issued more than 5 times without any .END LIST statements. Subsequent .LIST statements are ignored. 29. RNO -- Maximum subindex levels exceeded An attempt was made to subindex more than 6 times. The index terms are ignored. You can only use the subindex flag 6 times inside an .INDEX command. | 30. RNO -- Missing END FOOTNOTE | At the end of the document an END FOOTNOTE command is missing. | 31. RNO -- Missing END LIST | At the end of the document one or more END LIST commands are | missing. | 32. RNO -- Missing END LITERAL | At the end of the document an END LITERAL command is missing. | 33. RNO -- Missing END NOTE | At the end of the document an END NOTE command is missing. APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 97 - | 34. RNO -- Missing END TEXT | At the end of the document an END TEXT command is missing. 35. RNO -- Missing parameter The command requires a parameter. Look up the command descrip- tion to determine the missing parameter. 36. RNO -- Missing denominator in equation At the end of the line, the end of a numerator was not found. You forgot to: (A) close the numerator with a right brace }, and you did not supply a denominator, or (B) put an underscore "_" in front of a left brace "{" that you wanted to print. 37. RNO -- Missing right braces (}) in equation One of the following errors have been made: (A) You forgot to close a fraction with a right brace }. The number of right braces must be the same as the number of left braces in all fractions. (B) The fraction was too wide to fit on the current line and it overflowed to the next one. Normally this mistake will result in a whole string of error messages following the Missing right brace message. 38. RNO -- Output file error A write error has occured on the output file. One of the fol- lowing conditions exists: (A) The device is full or is write protected. (B) The hardware has failed. (C) The user does not have write access privileges to the file. 39. RNO -- Output file open failure The file system, while attempting to open the output file, has detected an error. One of the following conditions may exist: (A) The user's directory file is protected against an open. (B) A problem exists with the physical device. (C) The volume is not mounted. (D) The specified file directory does not exist. (E) The device is full of write protected. 40. RNO -- Output file specification error An error exists in the output file specification. Correct the specification and re-enter the command. 41. RNO -- Permanent footnote error A permanent footnote was specified while a footnote was pending for the current output page. You must specify the permanent footnote first. APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 98 - 42. RNO -- Permanent footnote too long A permanent footnote longer than 6 lines was specified. The footnote is ignored. 43. RNO (WARNING) -- Substitution is not unique The substitution has been defined, but you might have trouble using it because it is not unique. You have done one of the following: (A) The label is contained within an existing label. For exam- ple, you defined the label "ABC" but you previously defined "ABCD". (B) The label contains a previously defined label. For exam- ple, you attempted to define the label "Sigma", but you previously defined "Sig". This message can be turn off by the /R:N option. 44. RNO -- Symbol already defined One of the following errors occured: (A) .DEFINE ESCAPE - The escape sequence you are attempting to define is already defined. Either change the sequence name, or .RESET ESCAPE. (B) .DEFINE SUBSTITUTE - The substitution name or abbreviation has already been defined. You must change the name or .RESET SUBSTITUTE. 45. RNO -- Syntax error in equation An equation is incorrectly formatted. Fractions are formatted as: {Numerator}/{Denominator} You have made one of the following mistakes: (A) There are extraneous characters between the numerator and denominator. For example, the following is an error: }/Denominator (B) You have started a numerator or denominator with a right brace } when you should have used a left brace {. (C) You have omitted the slash / between the numerator and denominator. The following expression is an example of this error: {Numerator}{Denominator} Many times this error will be followed by other error messages. These extra messages can probably be ignored. Usually syntax errors will also cause the Missing right braces message. 46. RNO -- Too many nested fractions While the equation flag is engaged, an attempt was made to format fractions using the braces { } and too many fractions have been nested on top of one another. For example, if you input the following expression: {{A}/{B}}/{Denominator} you have nested fractions up to a depth of 2. When the nesting exceeds a depth of 6, the equation formatting may fail. See APPENDIX: RUNOFF ERROR MESSAGES - RUNOFF - 99 - the section on EQUATION FORMATTING. 47. RNO -- Too many nested .REQ More than 7 nested levels of .REQUIRE have been found. This means that the original file contained a .REQ for a second file, which contained a .REQ for a third file, and so on. When the .REQ for an eighth file was issued, it was ignored and this error message was issued. To fix this error you must rearrange your files to prevent more than 7 input files being in use at one time. 48. RNO -- Too many nested substitutions More than 3 levels of substitution have been attempted. This means that the first substitution contained a second, the second contained a third and the third contained a fourth. The fourth level is ignored. 49. RNO -- Too many tabs specified The maximum number of tabs stops you may specify is 32. Any more are ignored. 50. RNO -- Undefined escape seq. An escape flag or a special flag was used and the escape se- quence corresponding to the flag was not been defined. You must define it with the .DEFINE ESCAPE command. 51. RNO -- Undefined substitution (A) The substitution flag ($) was followed by an unrecognized label. Either you made a typographical error in the label, or you wished to print the substitute flag character in the text, but forgot to precede it with an Accept flag character(_). (B) The item used in .NUMBER ITEM, .DISPLAY ITEM, or .DEFINE NUMBER ITEM is undefined. You must define it via .DEFINE ITEM. 52. RNO -- Unrecognized command A command or abbreviation was probably misspelled. Any input line is considered to begin with a command if the first character in column 1 is a decimal point. If you wish to begin a line of text with a decimal point, insert a space before it to prevent it from being confused with a command. APPENDIX C BUILDING RUNOFF This appendix describes in detail how to build RUNOFF, and how to modify it for your specific needs. An executable RUNOFF file (called RNO on most systems) should be built first. It then can be used to build the documentation and help files. The documentation and help files come in big, small, and microscopic versions. All three are generated for your convenience. The instructions in this appendix should work on your sys- tem, but you may find that you will have to modify them slightly since it was not possible to anticipate all possible system configurations. RSX-11M mapped systems _______ ______ _______ Procedure: 1. It is assumed that the default CLI is MCR. 2. The assembly and task build steps can be executed by: @RNORSX _______ This will build a standard RSX version of RNO. It is assumed that you are using MCR rather than DCL. If you wish to cus- tomize your version of RNO, perform the following steps. (A) Select the proper task build file: (a) RNOBLD.CMD Overlayed (b) FCSBLD.CMD Overlayed, resident library (c) MEMBLD.CMD Overlayed, memory resident overlays (d) SMLBLD.CMD Overlayed, smallest size (e) SMLFCS.CMD Overlayed, small size, resident library (f) BIGBLD.CMD Non overlayed (B) Select the options you require by editing the RNPRE.MAC. This step is only necessary if you wish to have a different set of defaults. (See the section on CUSTOMIZATION.) (C) Edit the Task Build command file to reflect your individual system needs. The Task Build command file contains parame- ters to set the default options, default paper size (for /-FF) and default underline mode. The underline mode is currently set as UL:L. If you use lots of index terms or otherwise make heavy demands on dynamic memory, RUNOFF will run faster if you increase the EXTSK parameter. The over- layed version has lots of room for dynamic memory exten- sion, and runs nearly as fast as the non-overlayed version. (D) Assemble MAC @RNOASM (E) Build the task TKB @RNOBLD .....or TKB @BLDFCS ..or TKB @BIGBLD - 100 - APPENDIX: BUILDING RUNOFF - RUNOFF - 101 - SECTION: RSX-11M - 27 Oct 1986 3. The final RNO.TSK should be copied to LB:[1,54], and installed. 4. Finally, to generate RSX documentation: @DOCRSX This command builds both a document and a help file. To in- stall the help file on your system, follow these steps: (A) Copy the help RUNOFF.HLP to uic [1,2] (B) Set the protection W:R (C) Add an entry to the main HELP.HLP that references @RUNOFF.HLP (D) It may be necessary to remove the first line in the RUNOFF.HLP file. RSX-11M+ ________ The mapped RSX procedure should be used. It is possible to separate the code into data and code using I/D space. The .psects have all been properly defined and M+ users may wish to experiment with various methods of reducing the program size to make more dynamic memory available. RSX-11M UNMAPPED SYSTEMS _______ ________ _______ Users of unmapped systems should follow the procedure outlined for mapped systems, selecting UICs as appropriate. File RNOBLD.CMD will have to be edited to delete the /MM option and to change the PAR direc- tive to match system requirements. The final RNO.TSK should be copied to LB:[1,50]. RSX-11D systems _______ _______ Users of RSX-11D should follow the procedure outlined for RSX-11M Mapped systems. Since the conventions for source and object files are instal- lation dependent, all .CMD and .ODL files should be edited accordingly. Additionally, RSX-11D users should alter RNOBLD.CMD to change the /MM option to /MU and to change the PAR directive as needed. IAS systems ___ _______ To build a standard version of RUNOFF: @RNOIAS _______ The command file IASBLD.CMD can be used to build just RUNOFF. The com- mand file contains parameters to set the default options, default paper size (for /-FF), and default underline mode. NOTE Indirect command files will not work with heavily overlayed versions under IAS. IAS users must use only IASBLD or BIGBLD. APPENDIX: BUILDING RUNOFF - RUNOFF - 102 - SECTION: IAS - 27 Oct 1986 To generate IAS documentation: @DOCIAS Unfortunately, an IAS help file is not generated. IAS users may be able to adapt the RSX help file created by @DOCRSX. P/OS on PRO ____ __ ___ Building for P/OS is essentially the same as for RSX-11m except that the build commands have been customized for the PRO. To build RUNOFF, PRO users use the command: @RNOPRO After installing RUNOFF, you can produce documentation for P/OS with the command: @DOCPOS VAX/VMS systems _______ _______ To build this program for VMS native mode: __ _____ ____ _______ ___ ___ ______ _____ @RNOVMS Once built, you must copy RUNOFF.EXE to sys$system: ,or some other con- venient directory, with protection=w:re. Then define the command RUNOFF by: RUNOFF = $sys$system:RUNOFF This command should be added to the default login proceedure. This su- persedes Digital Standard Runoff. If you wish to keep DSR and Bonner Lab Runoff on the same system, you should not copy RUNOFF.EXE to sys$system:. If you wish to customize the native mode version, you can edit VAXPRE.MAR. To build RUNOFF for compatability mode: __ _____ ______ ___ _____________ _____ @RNOVMS.CMD The RNO.EXE file should be copied to a directory that can be accessed by all users. The following symbol then needs to be defined: RNO :==$directory:RNO where "directory" is the directory where RNO is located. You can only run the compatability mode version if the RSX emulator is available on your VMS system. If you do not have it, you may have to purchase it from DEC: it is called VAX-11 RSX. If your VAX was upgraded from V3.7, you should be able to get it free for a limited time period. NOTE The native mode version has several advantages over the compatability mode version. Advantages 1. It is faster by about a factor of 2. APPENDIX: BUILDING RUNOFF - RUNOFF - 103 - SECTION: VMS - 27 Oct 1986 2. It has essentially unlimited buffer space for footnotes, text sections, and definitions. 3. The maximum sizes for labels, lists etc. are larger. 4. The command structure is consistent with other VMS commands, including DSR. 5. It will work on all VAXes, including the MicroVAX, because it does not require RSX-11M emulation. 6. It is cheaper, because you need not buy the RSX emulator to use it. To generate VMS documentation: @DOCVMS Or for the compatabilty mode version: @docvms.cmd Both a document and help file are generated. The help file should be installed in the system help file. To do this you need bypass privilege, or you need to be in a system account. Then follow these steps: 1. $ LIBR /HELP/CREATE RNO RUNOFF 2. $ COPY RNO.HLB SYS$HELP 3. $ SET PROT=W:R SYS$HELP:RNO.HLB 4. $ ASSIGN SYS$HELP:RNO.HLB SYS$LIBRARY/SYSTEM 5. The ASSIGN should be included in the system startup file. or . . . 6. $ LIBR /HELP SYS$HELP:HELPLIB RUNOFF RT-11/TSX _________ RT-11 and TSX users should copy all .MAC and .COM files to the device assigned INP. The output device for the .OBJ and .SAV files should be assigned OUP. ASS DEV INP ASS DEV OUP Before compiling the files, RNPRE.MAC can be edited to change the default options. The macro files are assembled by initiating the com- mand file RTASM.COM: @RTASM | The resulting object files are linked by: | @RTBLD | or... | @RTBLDO | or... | @RTBLDV | RTBLD creates a non-overlayed version, RTBLDO creates an overlayed ver- | sion, and RTBLDV creates a virtual-job version. If you are running /XM, | you will probably want to run the virtual-job version, since it will | always run if you have enough extended memory. If you are non running | /XM, then you should try the non-overlayed version first. Some systems APPENDIX: BUILDING RUNOFF - RUNOFF - 104 - SECTION: RT-11 - 27 Oct 1986 | may not have enough free memory to run this version, in which case you | should try the overlayed version. The non overlayed version could be | shortened by removing the 2 pass mode, double buffering, autohyphena- | tion, or the heuristic hyphenation. To generate the appropriate RT11 documentation use RUNOFF to create the documentation file from the .RNO files supplied. Copy all the .RNO files to the default device. . RUN RUNOFF *MICRO=MICRO,RT,RUNOFF *BRIEF=SMALL,RT,RUNOFF *RUNOFF.TXT,RUNOFF=RT,RUNOFF *RUNOFF.TOC=RT,RUNOFF.RNT */X . COPY/CONCATENATE RUNOFF.TOC,RUNOFF.TXT RUNOFF.DOC . DEL RUNOFF.TXT,RUNOFF.TOC The resulting files will be RUNOFF.DOC, BRIEF.DOC, and MICRO.DOC built specifically for RT11 users. No RT help file is available. | The files for building RNO can be split very conveniently between 3 RX02 | floppies. All of the .MAC, .CMD, .COM files fit onto 1 floppy. All of | the .RNO files onto another, and all of the .TST onto a third. For con- | venience, DOC*.CMD, DOC*.COM, and *DOC.CMD should be included with the | .RNO files, as these are used to build documentation on other systems. | In addition, a copy of README.1st, and BUILD.DOC are included as a guide | to building RUNOFF. RSTS/E ______ The version of RNO that this RUNOFF originally grew from supported RSTS/E, and a symbol is in RNPRE.MAC to conditionalize this support. A RSTS system was not available to test this version, so RSTS users are on their own. If a RSTS user comes up with a set of patches to make it work, the author will gladly include them with the distribution. Presumably you will have to run under the RSX simulation available with RSTS. ALL PDP-11 OPERATING SYSTEMS ___ ______ _________ _______ RESTRICTIONS This version of RUNOFF uses the SOB instruction. If your machine (11/20 or 11/10) doesn't have this instruction, it can be simulated in the RNPRE.MAC file by enabling the symbol $SOB. Since almost every PDP-11 has this instruction, you will probably not have to worry about this. If your CPU doesn't have EIS (MUL and DIV instructions), you should dis- able the symbol $EIS in RNPRE.MAC. If you don't have EIS, you need the system subroutines $MUL and $DIV from the system library. APPENDIX: BUILDING RUNOFF - RUNOFF - 105 - SECTION: ALL OPERATING SYSTEMS - 27 Oct 1986 CUSTOMIZATION You can change many things in RUNOFF to accomodate your own requirements. The option defaults can be modified by editing the build command file. All other defaults are located in the file RNPRE.MAC or VAXPRE.MAR. You should be able to modify any parameters in RNPRE.MAC or VAXPRE.MAR that are marked as user changeable; they are labeled and commented for your convenience. If you customize RUNOFF, you should edit CNTRL.RNO to customize the documentation. For example, if you in- crease the maximum nesting of lists, you should change the substitution /listmax$/ to reflect this modification. Support for specific printers is available in RUNOFF. The default sup- port is for a Florida data printer. The default will work with most Diablo compatable printers. The prefix file RNPRE.MAC or VAXPRE.MAR has several symbols that can be defined for various printers. 1. $FLORD for the Florida data printer 2. $DIAB for Diablo printers 3. $LA50 for an LA-50 or LA-100 terminal 4. $HPLJ for Hewlett Packard Laser Jet printer You can define your own internal set of default escape sequences by mod- ifying the table in routine INIT. The default escape sequence for vari- able spacing can specify either 10 or 12 pitch Diablo style. The symbol H$$PHN can be deleted to remove the AUTOHYPHENATION code. Autohyphenation can be made faster and the hyphenation routine is smaller if the symbol $DIGR is removed. If this is done, only suffix and prefix hyphenation will be performed. You can change the default indentation, spacing, margins, pagesize, and parameter limits. Input and output buffer sizes can also be adjusted. The variables shown below can be adjusted. The current value is in parenthesis. If you decrease these, more space will be available. 1. Maximum number of nested lists (6, vms=10) 2. Maximum number of header levels (6) 3. Maximum characters/command (40) 4. Maximum characters/substitution label (20) 5. Maximum characters/if label (10,40) 6. Maximum nesting of IFs (32) 7. Maximum characters/pre or post-fix (10,40) 8. Index Optimization (0) MACRO wizards may want to make more modifications, but they should con- sult the INTERNALS.RNO file first. If you make any significant modifi- cations to this version of RUNOFF, the author would appreciate receiving a listing of them so that they can be considered for incorporation in future general releases. PROGRAM SIZE The size of the RSX overlayed version is around 38 kbytes. The non-overlayed version is about 56 kbytes. The smallest overlayed ver- sion is around 34 kbytes. The non-overlayed RT-11 version is about 45 kbytes and the overlayed version about 32 kbytes. The virtual-job RT-11 version requires about 2 kbytes of low memory and about 45 Kbytes of extended memory. You can decrease the memory requirements by decreasing APPENDIX: BUILDING RUNOFF - RUNOFF - 106 - SECTION: ALL OPERATING SYSTEMS - 27 Oct 1986 the buffer sizes. You can also omit the AUTOHYPHENATION feature from non-overayed versions by removing the symbol H$$PHN in RNPRE.MAC or VAXPRE.MAR. The current RSX/IAS/VMS version keeps all input files open and the current block resident in memory. This adds about 2 kbytes to the program size. The code can be modified to temporarily close unused files at the expense of program speed. A minimum of 2 Kbytes is neces- sary for dynamic memory in addition to the program. A large number of definitions or index terms will stretch the need for dynamic memory. The size of RUNOFF could be lowered by specifying a smaller stack. The current size is probably too big, and 64 is the bare minimum. The cur- rent version of RUNOFF is much more stack hungry, so 128 should work for most applications. BUFFER SIZES The maximum input line is currently set to 512 characters. If this is too short, you can redefine the symbol IBFSZ in RNPRE.MAC or VAXPRE.MAR. If you do this, the program will grow in size at the expense of dynamic memory. In general you can get around this restriction by using substitutions. For the RSX/VMS/IAS version, the maximum output line is 256 characters. If this is adequate, you can redefine it by changing symbol OBFSZ in RNPRE.MAC or VAXPRE.MAR. The RT version has no output line limitation. Changing the maximum size of the input line should only be necessary if you need shorter lines to pass to another program, or if you need longer lines in conjunction with the /-CR option. Normally each line of printed text will occupy 1 output record, unless you have a large number of imbedded escape sequences that cause it to grow beyond 256. If the line is longer than 256, it is split into several records. This causes no problems as long as you do not use /-CR. If you need to print more than 150 characters on a line and you use /UL:S (/U:S) or /UL:L (/U:L), the underline buffer size may not be adequate. The current definition is symbol ULNSZ found in RNPRE.MAC or VAXPRE.MAR. The RT-11 options are indicated in parenthesis. The VMS version does not use dynamic memory allocation. Instead, a fixed buffer of 32768 bytes is allocated for each feature. Footnotes, text, substitutions, and conditional labels each occupy a full buffer. At the present, it is not possible to expand the buffers to a larger size. EFFICIENCY The underlining options have an effect on the efficiency of RUNOFF. /UL:S (/U:S) is the least efficient form of underlining and will slow execution, especially when /PA (/P) is used to omit a large number of pages. /UL:L (/U:L) is more efficient, and /UL:B (/U:B) is the most ef- ficient form of underlining. /UL:N (/U:N) is, of course, even more ef- ficient, but you lose the underlining capability. The RSX and RT versions use overlays to conserve memory. The overlay structure places all of the commonly used routines and the hyphenation routine in the same overlay. The .LIST, .LIST ELEMENT, .CHAPTER, .APPENDIX, .NOTE, .HEADER LEVEL commands are in a separate overlay. The least used commands such as .STYLE, .LAYOUT, .DISPLAY are in a third overlay. This structure should be only slightly slower than a non-overlaid program, and allows a maximum of dynamic memory space (30+ APPENDIX: BUILDING RUNOFF - RUNOFF - 107 - SECTION: ALL OPERATING SYSTEMS - 27 Oct 1986 Kbytes). In creating RUNOFF.DOC, the non-overlaid version was only about 10% slower. If you are contemplating using SUBSTITUTE commands or indexing, you will probably need to use the overlaid version. If no in- dexing is done, and a limited number of escape sequences and substitu- tions are defined, the non-overlaid version will probably do the job. If you wish to try different overlay schemes, a few tips are in order. First, RUNOFF, RNODYN, CMTAB, GCIN, and RSXIO or RT11IO should not be overlayed. If the I/O routines are overlayed, then START or RNORT should call the open and close file routines. HYPHEN, and RNCMD are the 2 most frequently used routines, while STYLE and FMTCM are much less frequently used. COMND is called every time a command is parsed, so it should probably be in the same overlay as RNCMD. CMTAB can be split into 2 PSECTS: STRING can be in the same overlay with COMND, but DSPTCH must not be overlayed. See SMALBL.CMD for an example of overlaying. One way of increasing the efficiency of RUNOFF is to turn off autohyphenation. This will prevent excessive overlay switching as well as eliminating some code. In building RUNOFF.DOC, turning off hyphena- tion only decreased the time by about 6%. Another way to increase effi- ciency is to increase the the task extension. This will only be effective if large amounts of dynamic memory are used. Large footnotes, large .TEXT sections, or many large definitions may make this option necessary. In general, most users will find existing dynamic memory adequate. The RT version uses all available dynamic memory. NOTE This program has been successfully run on RSX-11M, VAX/VMS, RT-11, TSX, P/OS and IAS systems. It should run on RSTS under RSX emulation. It has not been tried on unmapped systems. DOCUMENTATION The documentation comes in 3 sizes: regular, small, and micro. "Regular" occupies nearly 700 blocks of disk space, while "small" is under 200 blocks. "Micro" (under 70 blocks) is designed as a small pocket guide to RUNOFF. It may be necessary to modify the documentation files to accomodate printing them on a particular printer. All the page sizes are deter- mined by the commands in the file CNTRL.RNO. This file should be edited to reflect both your hardware and output format preference. Currently the output occupies a page size of 62 by 79 with /UL:S (/U:S) for underlining. HELP FILES Three help files are available for 2 operating systems: VAX/VMS and RSX. RUNOFF.HLP contains nearly the entire contents of the manual. If you are short on disk space, you may not be able to use it. The alter- native BRIEF.HLP and MICRO.HLP are considerably smaller. When you use APPENDIX: BUILDING RUNOFF - RUNOFF - 108 - SECTION: TEST FILES - 27 Oct 1986 DOCRSX or DOCVMS to generate the RUNOFF manual, the help files are also generated. Help files are not generated for IAS or RT. TEST FILES The primary test of RUNOFF is the creation of the document and help files that you produce after building RUNOFF. For additional testing, a number of files with extension .TST are included with the distribution. They serve as a test and guide to the various features available in Bonner Lab Runoff. The file RNOTST.CMD runs all of these through RUNOFF. It should process them without any internal errors or bombs. A partial list of the test files is shown below: 1. COMAND.tst - How to define commands. 2. DISPLA.tst - Demonstrates display command on VT100 terminal. 3. LEVEL.tst - Demonstrates header levels. 4. DISLEV.tst - Demonstrates header levels modified by display commands. 5. LIST.tst - Demonstrates the .LIST command. 6. DISLST.tst - Demonstrates the .LIST command modified by .DISPLAY. 7. CHAPT.tst - Demonstrates various chapter styles. 8. EQATN.TST - Demonstrates the equation formatting. In addition, some .RNO and .TST files are available as examples of escape sequence and substitution handling. The .RNO files define escape sequences and the .TST files illustrate their useage. Since these files come from several authors, not all escape sequences in these files are accessed by the same flag characters. A partial list of these sample files is: 1. GREEKMATH - Defines mathematical symbols for a Florida Data printer. The same ones should work on a Diablo printer. 2. VT100 - Defines some VT100 escape sequences to produce bolding and underlining. 3. DIABLO - Define some sequences for Diablo style printers. 4. LA50 - Defines some escape sequences for an LA-50 printer. 5. CIT161 - Defines sequences for a CIT-121 color terminal. 6. SPIN - Defines sequences for a spinwriter. APPENDIX D SPECIAL CHARACTERS Flag characters Below is a list of RUNOFF's flag characters. To cause a flag to appear in the text as a normal character, it must be preceded by the underscore character "_" (itself a special character). Since the special characters can be changed by the .FLAGS commands, this list may not represent the actual usage for your document. ^ UPPERCASE the next character, or LOCK a function. ^^ No case conversion. \ LOWERCASE the next character, or UNLOCK a function. \\ Lowercase all text. < CAPITALIZE word. * ^< capitalize all text. * # SPACE character (non expandable or quoted space). = HYPHENATE specification, or continue mark. * & UNDERLINE the following character (also "^&,/&"). _ ACCEPT the following character. % OVERSTRIKE the previous character by the next character. * $ SUBSTITUTE defined text for abbreviation. * > INDEX/SUBINDEX flags. * | BREAK text with no spaces, or continue. * + PERIOD will add extra space if followed by space. * { EQUATION flag 1. * (Not in DSR) } EQUATION flag 2. * (Not in DSR) "tab" TAB flag character causes tabulation. (Not a flag in DSR) -------- footnote -------- * Only becomes a special character if the FLAG is engaged. - 109 - APPENDIX: SPECIAL CHARACTERS - RUNOFF - 110 - Terminal punctuation . : ; ? ! These characters, if followed by a separator (space or tab), will appear in the output with 1 extra space after them. This feature works only when both .FILL and .PERIOD are engaged. These characters can be changed with the .PERIOD command. Valid punctuation / \ . , " ( ) @ These characters are valid in a hyphenated word. Any other non-alphabetic character will prevent autohyphenation. These characters can be changed by the .AUTOHYPHENATE command. APPENDIX E LIST OF COMMANDS (ALPHABETICAL) * Indicates the command causes a line BREAK. $ Indicates a command forbidden during a FOOTNOTE. D Indicates the default setting ~ Indicates not available in DSR Command Abbreviation Opt. _______ ____________ ____ APPENDIX [;][title] - - - - - - - AX - - - - *$ Start an appendix AUTOBREAK ["chars"] - - - - - - - AB - - - - $ ~ The characters may cause a line break AUTOHYPHENATE [n1,...n4][,"chars"] - - AH - - - - $D~ (n1=size, n2=begin, n3=end, n4=mode) Enable automatic hyphenation "chars" are allowed in hyphenated word until NO AUTOHYPHENATE AUTOPARAGRAPH - - - - - - - - - AP - - - - $ Begin paragraphs for lines with leading spaces, tabs, or blank lines until NO AUTOPARAGRAPH AUTOSUBTITLE - - - - - - - - - AST - - - - $ Subtitle is same as current section (header level) until NO AU- TOSUBTITLE AUTOTABLE - - - - - - - - - - AT Enable automatic table format until NO AUTOTABLE AUTOTITLE - - - - - - - - - - ATI - - - - $D~ Enable title is same as current chapter/appendix BEGIN BAR - - - - - - - - - - BB - - - - Left hand margin will have a bar in it until .END BAR BLANK [-space] - - - - - - - - - B - - - - - * Skip lines independently from spacing, except at top of page. BREAK - - - - - - - - - - - - BR - - - - * Start a new line BREAK LINE - - - - - - - - - - BRL - - - - * Break at end of next line. CENTER [LINE][+-n] - - - - - - - C [LINE] - - * Center 1 line CENTER TEXT [+-n] - - - - - - - - C TEXT - - - * ~ Center a section until END CENTER CENTRE [+-n] - - - - - - - - - C - - - - - * CHAPTER [;][title] - - - - - - - CH - - - - *$ Start a chapter CHAPTER LAYOUT [code][,spacing] - - - CHLO - - - - $ ~ Change the layout of first page of chapter COMMENT [comment text] - - - - - - ; - - - - - - - ! The comment is not included in the output - 111 - APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 112 - DEFINE - Defines a command or macro COMMAND /command/text - - - - - - - - - - - $ ~ Define a new command ESCAPE escape definition - - - - - - - - - - $ ~ Define special characters to output control codes. ITEM /label/ [format],[+-n] - - - - - - - - - ~ The label is a number to appear in text SUBSTITUTE /label/text - - - - - - - - - - - $ ~ Set up text to be substituted for label DEFINE NUMBER - Defines a substitution label for a current "number" APPENDIX /label/ - - - - - - - - - - - - - ~ CHAPTER /label/ - - - - - - - - - - - - - ~ ITEM /item/ /label/ - - - - - - - - - - - - ~ LEVEL /label/ - - - - - - - - - - - - - - ~ LIST /label/ - - - - - - - - - - - - - - ~ PAGE /label/ - - - - - - - - - - - - - - ~ SUBSCRIPT escape def - - - - - - - - - - - - ~ Define subscript for equation formatting SUPERSCRIPT escape def - - - - - - - - - - - ~ Define superscript for equation formatting VARIABLE SPACE escape def - - - - - - - - - - ~ Define how to do variable spacing DELETE INDEX "entry" - - - - - - - - - - - - - ~ Remove an entry from index table DELETE SUBSTITUTE /label/ - - - - - - - - - - - ~ Remove a substitution label from table of subst. DISABLE - Turns off features turned on by .ENABLE BAR - - - - - - - - - - - DBB - - - - D ESCAPE - - - - - - - - - - DES - - - - ~ COMMAND REPLACEMENT - - - - - - $D~ EQUATION - - - - - - - - - - DEQ - - - - ~ FLAGS [flag] - - - - - - - - DFL - - - - D~ HYPHENATION - - - - - - - - - DHY - - - - INDEXING - - - - - - - - - - DIX - - - - NUMBERING - - - - - - - - - DNMPG - - - $ ~ NUMBERING CHAPTER - - - - - - - DNMCH - - - $ ~ ODD - - - - - - - - - - - DOD - - - - D~ SUBSTITUTION - - - - - - - - DSST - - - - PAGING - - - - - - - - - - DPAG - - - - ~ TABS - - - - - - - - - - - DTB - - - - ~ TOC - - - - - - - - - - - DTC - - - - DISBLE TRAILING ZERO - - - - - - - $ ~ OVERSTRIKING - - - - - - - - DOV - - - - UNCONDITIONAL - - - - - - - - DUNC - - - - *$ ~ UNDERLINING - - - - - - - - - DUL - - - - DISPLAY - Change format of specified number (form = D,LU,LL,LM,RU,RL,RM) APPENDIX ["pre",][form][,"post"] - - DAX - - - - *$ CHAPTER ["pre",][form][,"post"] - - DCH - - - - *$ ELEMENTS ["pre",][form][,"post"] - - DLE - - - - *$ LEVELS [f1],...[f6] - - - - - - DHL - - - - *$ LEVELS [level,]["pre",][format,]["post"] - - - - - * ~ APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 113 - NUMBER ["pre",][form][,"post"] - - DNM - - - - *$ SUBPAGE [form] - - - - - - - - DSP - - - - *$ SUBTITLE ["pre"],["post"] - - - - - - - - - - ~ TITLE ["pre"],["post"] - - - - - - - - - - - ~ TOC PAGE ["pre"],["post"] - - - - - - - - - - ~ DO INDEX [title] - - - - - - - - DX - - - - *$ Print the index as an appendix ELLIPSES - - - - - - - - - - - ELL - - - - $ ~ Unspecified tabs are converted to ellipses ELSE aaaa Follows IF aaaa command ENABLE - Enables features turned off by disable BAR n1,n2 - - - - - - - - - EBB - - - - D Allow change bars in left margin n1,n2 are spaces before, after bar COMMAND REPLACEMENT - - - - - - $ ~ Allow user commands to replace permanent commands ESCAPE - - - - - - - - - - ESC - - - - D~ Allow control code output FLAGS [flag] - - - - - - - - EFL - - - - D~ Allow specified flag to be used EQUATION n - - - - - - - - - EEQ - - - - D~ Allow equation formatting HYPHENATION - - - - - - - - - EHY - - - - D Allow hyphenation INDEXING - - - - - - - - - - EIX - - - - D Entries will be made in index table LEVELS [+-out],[+-toc] - - - - - - - - - - - $ ~ Enables header levels for output and table of contents NUMBERING - - - - - - - - - ENMPG - - - $ ~ Page numbers are produced NUMBERING CHAPTER - - - - - - - ENMCH - - - $ ~ Page numbers include chapter number (1-2) ODD - - - - - - - - - - - EOD - - - - ~ Chapters start only on odd page numbers PAGING - - - - - - - - - - EPAG - - - - D~ Pages are formatted TABS - - - - - - - - - - - ETB - - - - D~ Tabs are converted to multiple spaces TOC - - - - - - - - - - - ETC - - - - D Entries are made in table of contents file TRAILING ZERO - - - - - - - - $D~ Enable trailin zero for header level 1 (1.0...) OVERSTRIKING - - - - - - - - EOV - - - - D The overstrike flag is obeyed SUBSTITUTION - - - - - - - - ESST - - - - D Text may be substituted for a defined label UNCONDITIONAL - - - - - - - - ENUNC - - - *$D~ Unconditional commands are obeyed and text is output UNDERLINING - - - - - - - - - EUL - - - - D Text may be underlined APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 114 - END - Ends a feature BAR - - - - - - - - - - - EB - - - - CENTER - - - - - - - - - - ECN - - - - ~ FOOTNOTE - - - - - - - - - - EFN - - - - IF aaaa LIST [space] - - - - - - - - ELS - - - - *$ LITERAL - - - - - - - - - - EL - - - - *$ NOTE - - - - - - - - - - - EN - - - - *$ RIGHT - - - - - - - - - - - ER - - - - * ~ SEPARATED EQUATION - - - - - - ESEQ - - - - D~ SUBPAGE - - - - - - - - - - ES - - - - *$ TEXT - - - - - - - - - - - ETX - - - - *$ ~ ENTRY index term - - - - - - - - Y - - - - - Defines index term without page number FIGURE [space] - - - - - - - - - FG - - - - *$ Skips lines independently of spacing. Works at top of page. FIGURE DEFERRED [space] - - - - - - FGD - - - - *$ Skips lines independently of spacing, where space permits. FILL - - - - - - - - - - - F - - - - - D Starts fill mode until NO FILL (normal mode of usage) FIRST TITLE - - - - - - - - - - FT - - - - $ Defines title to appear on all pages including first. FLAGS - Turns on and defines a special character to do something. ACCEPT [new flag] - - - - - - - FL ACCEPT - - $D [ALL] - - - - - - - - - - - FL [ALL] - - $ BREAK [new flag] - - - - - - - FL BREAK - - $ CAPITALIZE [new flag] - - - - - FL CAPITALIZE - $ CONTROL [new flag] - - - - - - FL CONTROL - - $D ESCAPE [new flag] - - - - - - - FL ESCAPE - - $ ~ EQUATION - - - - - - - - - - FL EQUATION - ~ HYPHENATE [new flag] - - - - - - FL HYPHENATE - $ INDEX [new flag] - - - - - - - FL INDEX - - $ PERIOD [new flag] - - - - - - - FL PERIOD - - $ LOWERCASE [new flag] - - - - - - FL LOWERCASE - $D OVERSTRIKE [new flag] - - - - - FL OVERSTRIKE - $ SUBINDEX [new flag] - - - - - - FL SUBINDEX - $ SUBSTITUTE [new flag] - - - - - FL SUBSTITUTE - $ TAB [new flag] - - - - - - - - FL TAB - - - $ ~ UNDERLINE [new flag] - - - - - - FL UNDERLINE - $D UPPERCASE [new flag] - - - - - - FL UPPERCASE - $D FLUSH - - - - - - - - - - - - - - - - - - * ~ Flushes out all deferred text FOOTNOTE - - - - - - - - - - - FN - - - - $ Start a footnote until END FOOTNOTE HALF SPACING [spacing] - - - - - - - - - - - - ~ Enable and define half spacing HEADERS [on] - - - - - - - - - HD [on] - - - $D Enable output of headers (title/subtitle) at top of page HEADER LEVEL [+-level][;][title] - - - HL - - - - *$ Starts a numbered section in document APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 115 - HEADERS LOWER - - - - - - - - - - - - - - - $ HEADERS MIXED - - - - - - - - - - - - - - - $D HEADERS NO PAGE - - - - - - - - - - - - - - $ ~ HEADERS PAGE - - - - - - - - - - - - - - - $D~ HEADERS SPACING [spacing] - - - - - HDSP - - - - ~ Sets spacing between title and first line of text. HEADERS UPPER - - - - - - - - - - - - - - - $ IF aaaa [bbbb]... Text following is output if aaaa is "true" until ELSE or ENDIF IF NOT aaaa [bbbb]... Text following is not output if aaa is "false"until ELSE or ENDIF IMMEDIATE IF aaaa - - - - - - - - IIF - - - - ~ Rest of line ignored if aaaa is false IMMEDIATE IF NOT aaaa - - - - - - IIFNOT - - - ~ Rest of line ignored if aaaa is true IMMEDIATE TEST PAGE [n] - - - - - - ITP - - - - $ ~ Starts new page if fewer than n line remain on page IMMEDIATE TEST TEXT [n] - - - - - - ITT - - - - $ ~ Starts new page if fewer than n lines of text can be put on page INDENT [-spaces] - - - - - - - - I - - - - - * Indent line from left margin INDENT LEVELS [-l],[-r] - - - - - - - - - - - - $ ~ Secify left, right indentation for header levels (sections) INDEX entry - - - - - - - - - - X - - - - - Specify term to be indexed with page number JUSTIFY - - - - - - - - - - - J - - - - - D Output text is left and right justified KEEP [LINES] - - - - - - - - - K - - - - - Blank lines in input also appear in output in NO FILL mode KEEP TABS - - - - - - - - - - - - - - - - ~ Tabs at beginning of lines are kept and not removed in FILL mode LAYOUT [code] [,spacing] - - - - - LO - - - - *$ Change overall page layout of title/subtite and page number (0=all at top 1-15=Header top,number bottom) ( 1=C,C 2=LR,C 3=L,C 4=L,R 5=C,R 6=C,LR) ( 7=LR,LR 8=L,LR 9=LR,R 10=C,L 11=LR,L 12=L,L) (13=R,L 14=R,C 15=R,LR 16=R,R) LEFT MARGIN [+-n] - - - - - - - - LM - - - - * Sets the left margin LIST [lines] ["string"] - - - - - - LS - - - - *$ Begin a numbered list of items separated by blank lines until end list LIST ELEMENT [;]text - - - - - - - LE - - - - *$ Print current number in list LITERAL - - - - - - - - - - - LT - - - - * Text following this command appears in output exactly as typed un- til END LITERAL LOCK - - - - - - - - - - - - - - - - - - $ ~ Lock some parameters so they can not be changed LOWER CASE - - - - - - - - - - LC - - - - All text will be in same case as input APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 116 - NO - turns off selected features AUTOBREAK ["chars"] - - - - - - NAB - - - - $D~ AUTOHYPHENATE "chars" - - - - - NAH - - - - $ AUTOPARAGRAPH - - - - - - - - NAP - - - - $D AUTOSUBTITLE - - - - - - - - NAST - - - - $D AUTOTABLE - - - - - - - - - NAT AUTOTITLE - - - - - - - - - NATI - - - - $ ~ ELLIPSES - - - - - - - - - - NELL - - - - $D~ FILL - - - - - - - - - - - NF - - - - * FLAGS [flag name] - - - - - - - NFL - - - - $ HALF SPACING - - - - - - - - - - - - - - D~ HEADERS [on] - - - - - - - - NHD JUSTIFY - - - - - - - - - - NJ - - - - KEEP - - - - - - - - - - - NK - - - - D NUMBER - - - - - - - - - - NNM - - - - $ NUMBER CHAPTER - - - - - - - - - - - - - - $ ~ PAGING - - - - - - - - - - NPA - - - - $ PERIOD ["chars"] - - - - - - - NPR SPACE - - - - - - - - - - - NSP - - - - TITLE - - - - - - - - - - - - - - - - - $ ~ UNDERLINE "characters" - - - - - NUN - - - - ~ VARIANT aaaa [bbbb]... - - - - - - - - - - - ~ NOTE [;title] - - - - - - - - - N - - - - - *$ Starts an indented note until END NOTE NUMBER - Sets the new number APPENDIX [+-n] - - - - - - - - NMAX - - - - $ CHAPTER [+-n] - - - - - - - - NMCH - - - - $D ITEM [+-n] - - - - - - - - - NMIT - - - - ~ LEVEL [+-n1],....,[+-n6] - - - - NMLV - - - - $ LIST [+-n] - - - - - - - - - NPLS - - - - $ [PAGE] [+-n] - - - - - - - - NMPG - - - - $D SUBPAGE [+-n] - - - - - - - - NMSPG - - - $ PAGE - - - - - - - - - - - - PG - - - - *$ Starts a new page if paging enabled PAGE EVEN - - - - - - - - - - PGE - - - - *$ ~ Starts a new even numbered page PAGE ODD - - - - - - - - - - - PGO - - - - *$ ~ Starts a new odd numbered page PAGE SIZE [+-h],[+-w],[+-l],[+-t],[s] - PS - - - - $ Sets page size, permanent margins, sets PAGING PAGING - - - - - - - - - - - PA - - - - * D Text will be divided into pages PAPER SIZE - - - - - - - - - - PS - - - - $ Synonym for page size PARAGRAPH [-n],[v],[t],[b] - - - - - P - - - - - * Starts a new paragraph until command causing break (n=indent, v=skip, t=test, b=bottom test) PERIOD "characters" - - - - - - - PR - - - - $D Enables specified characters to end sentence (produce 2 spaces) PERMANENT FOOTNOTE - - - - - - - PFN - - - - $ ~ Starts a section of text to begin each footnote until END FOOTNOTE PRINT INDEX "entry" - - - - - - - PX - - - - *$ Prints the index and clear it APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 117 - RESET - Removes all entries in a table ESCAPE - - - - - - - - - - - - - - - - $ ~ INDEX - - - - - - - - - - - - - - - - - ~ SUBSTITUTE - - - - - - - - - - - - - - - $ ~ RESTORE STATUS - - - - - - - - - - - - - - - ~ Restores status saved by SAVE STATUS REQUIRE 'file spec' - - - - - - - REQ - - - - $ Input now is taken from specified file REQUIRE BINARY [spacing ]'file-spec' - REQ BIN - - - * ~ The specified file is transferred to output file RIGHT [-indent] - - - - - - - - R - - - - - *$ Line is right but not left justified RIGHT MARGIN [+-n] - - - - - - - RM - - - - * Set right margin RIGHT TEXT [-indent] - - - - - - - R TEXT - - - * ~ Section of text is right, but not left justified until END RIGHT SAVE - Saves the current status CHAPTER - - - - - - - - - - - - - - - - ~ Current status is restored at each CHAPTER command HEADER - - - - - - - - - - - - - - - - ~ Current status is restored at each page header LEVEL - - - - - - - - - - - - - - - - - ~ Current status is restored at each HEADER LEVEL command STATUS - - - - - - - - - - - - - - - - ~ Current status is restored at each RESTORE command SEND PAGE TOC [n;]text - - - - - - - - - - - - ~ Text followd by page number will appear in table of contents SEND TOC [;]text - - - - - - - - STC - - - - Text will appear in table of contents SEPARATED EQUATION - - - - - - - SEQ - - - - ~ Begins separated equation mode until END SEPARATED EQUATION SET PARAGRAPH [-n],[v],[t],[b] - - - STP - - - - $ Sets paragraph params (n=indent, v=skip, t=test, b=bottom test) SETUP escape sequence - - - - - - - - - - - - ~ Setup printer before text SKIP [lines] - - - - - - - - - S - - - - - * Skips lines depending on spacing except at top of page SPACING [s] - - - - - - - - - - SP - - - - $ Sets line spacing STYLE CHAPTER [n1],...[n5] - - - - - STCH - - - - $ ~ Changes style of first chapter page (1-3 = spacing, 4,5=indent (-1 centered,-2 right just) STYLE HEADERS [n1],...[n10] - - - - STHL - - - - *$ Changes style of header levels (sections) (line,CAPS,Cap,number,center,skip1,skip2,test,indent,[n.m]) SUBPAGE - - - - - - - - - - - SPG - - - - *$ Starts a subpage until END SUBPAGE SUBTITLE [subtitle] - - - - - - - ST - - - - $ Sets line of text to appear in subtitle TAB LEFT - - - - - - - - - - - TL - - - - $D~ Unspecified tabs left justify APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 118 - TAB PROPORTIONAL n,["ell"][R/C/L][+-n1],.. TABP - - - - $ ~ Sets up proportionally spaced tab stops TAB RIGHT - - - - - - - - - - TR - - - - $ ~ Unspecified tabs right justify TAB STOPS ["ell"][R/C/L]+n1,... - - - TS - - - - $ Sets up ellipses, justification and location of tab stops TEST PAGE [n] - - - - - - - - - TP - - - - *$ Starts new page if fewer than n lines remain on this page TEST TEXT [n] - - - - - - - - - TT - - - - *$ ~ New page if fewer than n lines of text may be output on this page TEXT - - - - - - - - - - - - TX - - - - *$ ~ Starts a block of text that may not be split between pages until TEXT, END TEXT, or PAGE TEXT DEFERRED - - - - - - - - - TXD - - - - *$ ~ Starts a block of text to appear on a later page until TEXT, END TEXT, or PAGE TITLE [title] - - - - - - - - - T - - - - - $D Sets line of text to appear as page title TOP MARGIN [+-n] - - - - - - - - TM - - - - *$ ~ Sets top margin for the next page UNDERLINE "characters" - - - - - - UN - - - - ~ The specified characters may be underlined UNDERLINE SPACES - - - - - - - - - - - - - - ~ Spaces may be underlined UNDERLINE NO SPACES - - - - - - - - - - - - - D~ Disables underlining of spaces UPPER CASE - - - - - - - - - - UC - - - - D All text will be output in upper case VARIABLE SPACING - - - - - - - - VARSP - - - * ~ Enable variable spacing VARIANT aaaa - - - - - - - - - - - - - - - ~ Sets aaaa to be true until NO VARIANT APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 119 - Non standard commands The following commands are nonstandard and are currently supported for compatibility with other versions of RNO. These commands are not recom- mended, and may not be supported in the future. Command Standard equivalent _______ ________ __________ DUN DUL ELI END LITERAL EUN EUL HY ENABLE HYPHENATION [NO] HEADER [NO] HEADERS HYPHENATION ENABLE HYPHENATION NFC NO FLAGS CAPITALIZE NFH NO FLAGS HYPHENATE NHY DISABLE HYPHENATION NM NUMBER PAGE Number Elements Number List Display List Display Elements NO HYPHENATION DISABLE HYPHENATION STYLE LEVELS STYLE HEADERS SUBTTL SUBTITLE DSR comparison Where possible DSR compatibility has been maintained. Differences where they exist are detailed in the full document. Essentially DSR is a sub- set of Bonner Lab Runoff. In addition to the non standard commands and the commands marked as not available in DSR some commands have addi- tional functions not available in DSR. The permanent margins are not available in DSR and the TOP, LEFT margins parameters for .PAGE SIZE will not be recognized when transporting text to DSR. The layout codes 4-16 are not in DSR. The pre/post headers in the .DISPLAY NUMBER, .DISPLAY CHAPTER, and, .DISPLAY APPENDIX are not available in DSR. The indentation for the .NOTE command is slightly different from DSR. The parameter for the .CENTER command is not the same. Relative tab stops do not have the same meaning as in DSR. Some DSR features are not im- plemented in RUNOFF. These are: 1. AUTOJUSTIFY (use SAVE commands) 2. CONTROL CHARACTERS (use DEFINE ESCAPE) 3. DATE/NO DATE (simulate with DEFINE SUBSTITUTE) 4. FLAGS BOLD (simulate with DEFINE ESCAPE) 5. FLAGS COMMENT 6. NO SUBTITLE (use .SUBTITLE) 7. NUMBER INDEX (use DISPLAY NUMBER and DISPLAY LEVELS) 8. REPEAT (Multiple substitutions can do same thing) 9. SET DATE/TIME (simulate with DEFINE SUBSTITUTE) 10. SET LEVEL (.NUMBER LEVEL will do same thing) 11. VARIABLE (no equivalent) 12. XUPPER/XLOWER 13. The TOC and TCX programs are not available nor are they necessary. 14. The "!" is not impemented as a way of ending footnotes. This is also incompatible with older versions of RUNOFF. APPENDIX: LIST OF COMMANDS (ALPHABETICAL) - RUNOFF - 120 - 15. The octal and hex number formats are not supported in the .DISPLAY commands. DSR OPTIONS DSR supports a variety of options which may be simulated in RNO. These are: 1. /BOLD - use .FLAGS SPECIAL and .DEFINE ESCAPE 2. /DOWN - use .PAGE SIZE or .TOP MARGIN 3. /VARIANT - use .VARIANT instruction. Multiple file input or .REQ may also help in simulating variants. The DSR TOC options may be simulated by using: 1. .INDENT HEADER TITLES simulates varying level indents. 2. .DISPLAY commands and .DISABLE NUMBERING CHAPTER may be used to produce running numbers of any type. 3. .ENABLE LEVELS specifies the deepest level. 4. .ENABLE UNDERLINING controls the underlineing. Some DSR options operate differently from the equivalent RNO option. In particular the /PAGE, /CHAPTER, /APPENDIX options allow selection of only 1 range of pages in RNO while DSR has a much more flexible selection. The same results are available in RNO by running it several times to select all of the pages you wish to print. APPENDIX F RUNOFF (SPALDING VERSION) The version of RUNOFF by Charles Spalding shares many features with the current version. Some of these are implemented by different names. For example, the .EVEN command in Spalding is the same as .PAGE EVEN in this version. If you have text produced on the Spalding version that you wish to run on the Bonner lab version, you can simulate most commands via the .DEFINE COMMAND. For example, .EVEN can be simulated with: .DEFINE COMMAND /EVEN/PAGE EVEN Here is a partial list of Spalding commands with the Bonner Lab equivalents. Spalding Bonner Lab ________ ______ ___ .AUTOCONTENTS .ENABLE LEVELS .BLOCK .TEXT DEFERRED .PRINT .TYPE .RIGHT JUSTIFY .RIGHT .DISABLE CONTENTS .DISABLE TOC .EVEN .PAGE EVEN .ODD .PAGE ODD .DUMP .FLUSH .ALTERNATE .ENABLE ODD .NO ALTERNATE .DISABLE ODD .PAGE NAME .DISPLAY NUMBER " .INCLUDE .VARIANT .EXCLUDE .NO VARIANT .OPTION .IF .END OPTION .ENDIF .ENABLE SPECIAL .FLAGS ALL .DISABLE SPECIAL .NO FLAGS ALL Other features, such as .PRINT CONTENTS, cannot be easily simu- lated, but they can be turned into non operations, commands (com- ments), or the error messages can be ignored. The following commands are the same, but incompatible with Spaulding: 1. .FIGURE in Spaulding is .FIGURE DEFERRED in RUNOFF. 2. .LITERAL in Spaulding still recognizes flags. 3. .TITLE is same as .FIRST TITLE 4. .REQUIRE does not use quotes around file name. 5. .TEST PAGE extra parameters are not same. 6. .FOOTNOTE must be ended by ! in Spaulding. A comparison with DSR (Digital Standard Runoff) can be found in the appendix titled "List of Commands". Unfortunately there are now many dialects of RUNOFF, and a complete comparison with all of them is not possible. Only Spaulding, DSR, and the old DECUS standard RNO are mentioned in this documentation. The author of RUNOFF is - 121 - APPENDIX: RUNOFF (SPALDING VERSION) - RUNOFF - 122 - indebted to the monumental Runoff comparison article by Allen Watson in the March 84 issue of the Pageswapper. APPENDIX G SPECIAL PRINTER SUPPORT A number of features have been added to support special printers. Some of these require the printer to respond to specific special code se- quences or escape sequences. The defaults are set by modifying RNPRE.MAC and enabling the default symbols. Some RUNOFF files are sup- plied for various printers. Printers supported Default File Printer types _______ ____ _______ _____ $DIAB DIABLO.RNO Diablo, Sprinwriters and all Diablo compatibles $Flord Florida Data $HPLJ HPLJ.RNO Hewlett Packard Laser Jet $LA50 LA50.RNO LA-50, VT-1xx, VT-2xx terminals VT100.RNO VT-100 VT-1xx and VT-2xx terminals CIT161.RNO CIT-161 - Color terminal General escape sequences 1. ^> Causes the text to be shifted up 1/2 space for writing superscripts or cancelling subscripts. 2. ^< Shifts the text down 1/2 space for writing subsripts or cancelling superscripts. This escape sequence conflicts with the CAPITALIZE FLAG if the flag is enabled. If the flag is enabled, it takes precedence over the escape sequence definition. 3. < or > will cause subscripts/superscripts if .FLAGS SPECIAL <> is used. Florida data 1. ^n selects a font n, where n is a number between 1 and 9. 2. ^* begins shadow printing for boldface text until the end of the line or until shadow printing is turned off, whichever comes first. 3. \* ends shadow print. 4. * shadow prints single character. 5. ^= begins elongated double width printing. 6. \= ends elongated print. 7. = bolds single character. Diablo/Spinwriter control codes 1. ^< produces subscripts. 2. ^> produces superscripts. 3. ^! begins graphics mode. 4. \! ends graphics mode. 5. ^( shifts text up 1 whole line. 6. ^) shifts text down 1 whole line. - 123 - APPENDIX: SPECIAL PRINTER SUPPORT - RUNOFF - 124 - Control codes for LA-50/VT-1xx/VT-2xx 1. ^& turns on underlining. 2. \& turns off underlining. 3. & underlines 1 char. 4. ^* turns on bolding. 5. \* turns off bolding. 6. * bolds 1 char. 7. ^~ turns on reverse video. 8. \~ turns off reverse video. 9. ^= turns on double width. 10. /= turns off double width. 11. ^# turns on blinking chars. 12. \# turns off blinking chars. 13. ^% turns on vt100 graphics set or other font (S0). 14. \% turns off vt100 graphics, returns to normal font (S1) 15. ^< produces subscripts (simulated on VT-100). 16. ^> produces superscripts. CONTROL CODES FOR HP LaserJet PRINTER 1. ^& starts underlining. 2. \& ends underlining. 3. ^* starts WBOLD&. 4. \* ends bold. 5. ^/ starts /ITALICS/. 6. \/ ends italics. 7. ^> produces or cancels subscripts. 8. ^< produces or cancels subsripts. The following are the .DEFINE ESCAPE statements equivalent to the per- manently defined sequences for the Florida data. 1. .DEFINE ESCAPE "^<" VSP 1, 27, "U" 2. .DEFINE ESCAPE "^>" VSP -1, 27, "D" 3. .DEFINE ESCAPE "^(" VSP -2, 27, 13 4. .DEFINE ESCAPE "^)" VSP 2, 13 5. .DEFINE ESCAPE "^1", 27, 2 6. .DEFINE ESCAPE "^2", 27, 3 7. .DEFINE ESCAPE "^3", 27, 4 8. .DEFINE ESCAPE "^4", 27, 5 9. .DEFINE ESCAPE "^5", 27, 6 10. .DEFINE ESCAPE "^8", 27, 9 11. .DEFINE ESCAPE "^*", LCK, CHR, 27, "W" 12. .DEFINE ESCAPE "\*", LCK, CHR, 27, "&" 13. .DEFINE ESCAPE "^=", LCK, CHR, HSP, 2, PSP, 14 14. .DEFINE ESCAPE "\=", LCK, CHR, HSP, 1, PSP, 15 15. .DEFINE ESCAPE "^!", LCK, 27, "3" 16. .DEFINE ESCAPE "\!", LCK, 27, "4" INDEX - 125 - INDEX (RUNOFF commands appear in upper case.) Accept flag 7 APPENDIX 32 AUTOBREAK 40, 63 AUTOHYPHENATE 40 Autoindex 80 AUTOPARAGRAPH 41 AUTOSUBTITLE 41 AUTOTABLE 41 AUTOTITLE 41 BEGIN BAR 42 BLANK 18 BREAK 18 LINE 18 Break flag 9 Capitalize flag 8 Case 4 Case information 6 CENTER LINE 18 CENTER TEXT 19 CENTRE 18 Change bar 42 CHAPTER 31 CHAPTER LAYOUT 28 Command format 6, 16 COMMAND STRING 2 COMMENT 75 Control flag 9 date 59 Defaults 5 DEFINE COMMAND 67 ESCAPE 67 ITEM 71 NUMBER 72 SUBSCRIPT 74 SUBSTITUTE 72 SUPERSCRIPT 74 VARIABLE SPACE 74 DELETE COMMAND 75 INDEX 80 SUBSTITUTE 75 DISABLE - See also NO BAR 61 INDEX - 126 - CONTINUE 62 EQUATION 62 ESCAPE 62 FLAGS 62 HYPHENATION 63 NUMBERING 64 CHAPTER 64 ODD 64 OVERSTRIKING 64 PAGING 65 SUBSTITUTION 65 TABS 65 TOC 65 TRAILING ZERO 66 UNCONDITIONAL 66 UNDERLINING 66 DISPLAY APPENDIX 37 CHAPTER 37 ELEMENTS 38 LEVELS 38 NUMBER 38 SUBPAGE 39 SUBTITLE 39 TITLE 39 TOC PAGE 39 DO INDEX 79 DSR 81 DSR comparison 119 ELLIPSES 53 ELSE 86 ENABLE BAR 61 COMMAND REPLACEMENT 61 CONTINUE 62 EQUATION 62 ESCAPE 62 FLAGS 62 HYPHENATION 63 INDEXING 63 LEVELS 64 NUMBERING 64 CHAPTER 64 ODD 64 OVERSTRIKING 64 PAGING 65 SUBSTITUTION 65 TABS 65 TOC 65 TRAILING ZERO 66 UNCONDITIONAL 66 UNDERLINING 66 END BAR 42 CENTER 19 INDEX - 127 - FOOTNOTE 22 LIST 30 LITERAL 44 NOTE 23 RIGHT 21 SEPARATED EQUATION 45 SUBPAGE 23 TEXT 24 TOC 82 ENDIF 87 ENTRY 79 EQUATION DISABLE 62 ENABLE 62 FLAGS 56 SEPARATED 45 Equation flags 9 ERROR MESSAGES 92 FIGURE 19 DEFERRED 19 File Specifications 3 FILL 42, 62 FIRST TITLE 27 Flags 54, 60 - See also ENABLE FLAGS ACCEPT 55 ALL 55 BREAK 55 CAPITALIZE 56 CONTROL 56 DISABLE 62 ENABLE 62 EQUATION 56 ESCAPE 56 HYPHENATE 57 INDEX 57 LOWERCASE 57 OVERSTRIKE 57 PERIOD 58 SPACE 58 SPECIAL 58 SUBINDEX 59 SUBSTITUTE 59 TAB 59 UNDERLINE 60 UPPERCASE 60 FLUSH 25 FOOTNOTE 21 Formfeeds 4 HALF SPACING 48 HEADER LEVEL 33 HEADERS 28 LOWER 29 MIXED 29 INDEX - 128 - NO PAGE 29 PAGE 29 SPACING 29 UPPER 29 Hyphenate flag 8 Hyphenation 4, 40, 57, 63 IAS 101 IF 86 NOT 86 IMMEDIATE IF 87 IF NOT 87 IMMEDIATE TEST PAGE 26 TEXT 26 INDENT 20 INDENT LEVEL TITLES 34 INDENT LEVELS 34 INDEX 79 DISABLE 63 ENABLE 63 FLAGS 57 SUBINDEX 59 Index flag 9 JUSTIFY 43 KEEP LINES 43 TABS 43 LAYOUT 27 LEFT 20 LEFT MARGIN 46 LIST 29 LIST ELEMENT 30 LITERAL 44 LOCK 49 LOWER CASE 44 Lowercase flag 8 Mode setting 40 NO - See also DISABLE AUTOBREAK 40 AUTOHYPHENATE 40 AUTOPARAGRAPH 41 AUTOSUBTITLE 41 AUTOTABLE 41 AUTOTITLE 41 ELLIPSES 53 FILL 42 FLAGS ACCEPT 55 INDEX - 129 - ALL 55 BREAK 55 CAPITALIZE 56 CONTROL 56 EQUATION 56 ESCAPE 56 HYPHENATE 57 INDEX 57 LOWERCASE 57 OVERSTRIKE 57 PERIOD 58 SPACE 58 SPECIAL 58 SUBINDEX 59 SUBSTITUTE 59 TAB 59 UNDERLINE 60 UPPERCASE 60 HALF SPACING 48 HEADERS 28 JUSTIFY 42 KEEP LINES 43 TABS 43 NUMBER 36 NUMBER CHAPTER 35 PAGING 24 PERIOD 44 SPACE 76 TITLE 26 UNDERLINE 45 VARIABLE SPACING 45 VARIANT 87 Non standard commands 119 NOTE 22 NUMBER APPENDIX 35 CHAPTER 35 ITEM 35 LEVEL 35 LIST 36 PAGE 36 SUBPAGE 36 Operation 2 Options 4 Overstrike flag 8 P/OS 102 PAGE 23 EVEN 23 ODD 23 Page Size 4, 47 PAGING 24 PAPER SIZE 47 PARAGRAPH 20 INDEX - 130 - Parameter setting 46 PERIOD 44 Period flag 9 PERMANENT FOOTNOTE 22 PRINT INDEX 79 Punctuation Terminal 44 Valid 63 Quote flag 7 REQUIRE 76 BINARY 77 RESET ESCAPE 75 INDEX 80 SUBSTITUTE 75 RESTORE STATUS 78 RIGHT 20 TEXT 21 RIGHT MARGIN 46 Right Shift 4 RSTS 104 RSX-11D 101 RSX-11M 100 RT-11/TSX 103 RUNOFF COMMANDS 16 SAVE APPENDIX 77 CHAPTER 77 HEADERS 77 LEVELS 78 STATUS 78 SEND PAGE TOC 82 TOC 82 SEPARATED EQUATION 45 SET PARAGRAPH 20 SETUP 78 SKIP 21 Source File Format 6 Space 65 non expandable 7, 44, 63 non-expandable 37 SPACING 47 SPECIAL CHARACTERS 7, 109 STANDARD 48 STYLE CHAPTER 32 HEADERS 34 Subindex 80 Subindex flag 9 SUBPAGE 23 Substitute character 9 Substitute flag 9 INDEX - 131 - SUBTITLE 27 SWITCHES 4 TAB LEFT 51 PROPORTIONAL 50 RIGHT 51 STOPS 50 Table of contents 64, 65, 81 Tabs 65 TEST PAGE 25 TEXT 26 TEXT 24 DEFERRED 24 time 59 TITLE 26 TOC 82 TOP MARGIN 47 TRACE 78 Two pass mode 72 TYPE 78 UNDERLINE 45 FLAGS 60 NO SPACES 45 SPACES 45 Underline flag 7 Underlining 4 UPPER CASE 44 Uppercase flag 8 VARIABLE SPACING 46 VARIANT 87 VMS 102