# To unbundle, run this file echo add sed 's/.//' >add <<'//GO.SYSIN DD add' -.nr i 1i -.de H -'sp |.5i-1 -.tl 'May 15, 1977''' -'sp |1i -.. -.de F -'bp -.. -.wh 0 H -.wh -1i F -.de pp -.ft R -.sp -.ti 0 -.. -.de h -.sp -.ti0 -\fB\\$1\fP -.br -.. -.ce -.ftB -Summary of Changes to N/TROFF Since October 1976 Manual -.ft -.ta \niu -.in \niu -.h Options -.pp --h (Nroff only) Output tabs used during horizontal spacing -to speed output as well as reduce output byte count. -Device tab settings assumed to be every -8 nominal character widths. -The default settings of input (logical) tabs is also -initialized to every 8 nominal character widths. -.pp --z Efficiently suppresses formatted output. -Only message output will occur (from "tm"s and diagnostics). -.h "Old Requests" -.pp -\&.ad\ c The adjustment type indicator "c" may now also be a number -previously obtained from the ".j" register (see below). -.pp -\&.so\ name The contents of file "name" will be interpolated -at the point the "so" is encountered. -Previously, the interpolation was done upon return to the file-reading input level. -.h "New Request" -.pp -\&.ab\ text \ -Prints "text" on the message output and terminates -without further processing. -If "text" is missing, "User Abort." is printed. -Does not cause a break. -The output buffer is flushed. -.pp -\&.fz F N \ -forces f_ont "F" to be in siz_e N. -N may have the form N, +N, or -N. -For example, - .fz 3 -2 -.br -will cause an implicit \es-2 every time font 3 is entered, -and a corresponding \es+2 when it is left. -Special font characters occurring during the -reign of font F will have the same size modification. -If special characters are to be treated differently, - .fz S F N -.br -may be used to specify the size treatment of special -characters during font F. -For example, - .fz 3 -3 - .fz S 3 -0 -.br -will cause automatic reduction of font 3 by 3 points -while the special characters would not be affected. -Any ``.fp'' request specifying a font on some position -must precede ``.fz'' requests relating to that position. -.h "New Predefined Number Registers." -.pp -\&.k Read-only. Contains the horizontal size -of the text portion (without indent) of the current -partially collected output line, if any, in -the current environment. -.pp -\&.j Read-only. A number representing the current adjustment mode and type. -Can be saved and later given to the "ad" request to restore a previous mode. -.pp -\&.P Read-only. -1 if the current page is being printed, -and zero otherwise. -.pp -\&.L Read-only. -Contains the current line-spacing parameter ("ls"). -.pp -\&c. General register access to the input line-number -in the current input file. -Contains the same value as the read-only ".c" register. //GO.SYSIN DD add echo m.mac sed 's/.//' >m.mac <<'//GO.SYSIN DD m.mac' -.if \n(mo=1 .ds mo January -.if \n(mo=2 .ds mo February -.if \n(mo=3 .ds mo March -.if \n(mo=4 .ds mo April -.if \n(mo=5 .ds mo May -.if \n(mo=6 .ds mo June -.if \n(mo=7 .ds mo July -.if \n(mo=8 .ds mo August -.if \n(mo=9 .ds mo September -.if \n(mo=10 .ds mo October -.if \n(mo=11 .ds mo November -.if \n(mo=12 .ds mo December -.if \n(dw=1 .ds dw Sunday -.if \n(dw=2 .ds dw Monday -.if \n(dw=3 .ds dw Tuesday -.if \n(dw=4 .ds dw Wednesday -.if \n(dw=5 .ds dw Thursday -.if \n(dw=6 .ds dw Friday -.if \n(dw=7 .ds dw Saturday -.\" -.bd S B 3 -.ds NR "\s-1NROFF\s+1 -.ds TR "\s-1TROFF\s+1 -.ds Nr "N\s-2ROFF\s+2 -.ds Tr "T\s-2ROFF\s+2 -.nr PS 10 -.hy14 -.ds u \v'-0.3m'\s-2 -.ds d \s0\v'0.3m' -.nr a .8i -.nr b 1.6i -.nr c 2.4i -.nr d 2.9i -.nr e 0.25i -.nr p 0 1 -.nr s 0 1 -.af p 1 -.af s 1 -.nr m -1i -.nr x 0 1 -.nr y 0+\nmu -.ev1 -.ps \n(PS-2 -.vs \n(PS -.ll6.5i -'in 0 -.ev -.tr &. -.de xx -.sp 0.4 -.. -.de ht -.tl `\*(Nr/\*(Tr User's Manual``` -.tl 'October 11, 1976'''\".tl 'Version \n(mo/\n(dy/\n(yr''' -.. -.de hd -.tl '\(rn''' -.if \\n%>1 \{'sp |.33i -.ht -.ps \\n(S2 -.ps \\n(S1 -.ft -'sp |1i\} -.nr x 0 1 -.nr y 0+\\nmu -.ch fo \\nmu -.if \\n(dn .fz -.ns -.mx -.nr cl 0 1 -.mk -.. -.de fz -.fn -.nf -.fy -.fi -.ef -.. -.de fx -.if \\nx .di fy -.. -.de fo -.cx -.nr dn 0 -.if \\nx .xf -.nr x 0 \"disable fx -.ie \\n(2C&(\\n+(cl<2) \{\ -.po +3.4i -.rt -.nr y 0+\\nmu -.ch fo \\nmu -.if \\n(dn .fz -.ns \} -.el \{\ -.po 26i/27u -.nr S1 \\n(.s -.ps -.nr S2 \\n(.s -.ps 10 -'bp \} -.. -.de 2C -.br -.mk -.nr 2C 1 -.ll 3.1i -.ev 1 -.ll 3.1i -.ev -.. -.de 1C -.br -.nr 2C 0 -.ll 6.5i -.ev1 -.ll 6.5i -.ev -.. -.de co -.de cx -.br -\fI(Continued next page.)\fP -.br -.rm cx -\\.. -.. -.de pp -'ps \\n(PS -.ftR -'tl ''- % -'' -'bp -.. -.wh 0 hd -.wh 12i fo -.wh \nmu fx -.ch fo \nmu -.de fn -.da FN -.ev1 -.if \\n+x=1 .fs -.fi -.ti0 -.. -.de xf -.ev1 -.nf -.FN -.rm FN -.di -.ev -.. -.de fs -.ti0 -\l'1i' -.br -.. -.de ef -.br -.ev -.di -.nr y -\\n(dn -.if \\nx=1 .nr y -2p -.ch fo \\nyu -.if \\n(nl+\\n(.v-\\n(.p-\\ny .ch fo \\n(nlu+\\n(.vu -.. -.wh -.6i pp -.de h1 -.xx -.ne 5 -.nf -.ta \\nau \\nbu \\ncu \\ndu +\\neu -.ft I -.bd I 3 -Request Initial If No -Form Value\\$2 Argument Notes\\$1 Explanation -.bd I -.ft R -.ft -.fi -.in \\ndu -.. -.de bt -.ftR -.xx -.ne 1.1 -.ti0 -.. -.de b1 -.br -.ti0 -.. -.de pg -.ft R -.fi -.in0 -.xx -.ne 1.1 -.. -.de sc -.pg -\fI\\*H\\np.\\n+s.\|\\c -.ftR -.ul -.. -.de mh -.nr s 0 -.in0 -.xx -.ne 2.5 -.ft B -\\*H\\n+p. -.. -.de x1 -.xx -.in.5i -.nf -.. -.de x2 -.xx -.in0 -.fi -.. -.de EM -.br -\&\c -'bp -.pl2i -.. -.em EM -.de TS -.sp -.. -.de TE -.sp -.ce 0 -.ft R -.ps \n(PS -.ta \\nau \\nbu \\ncu \\ndu +\\neu -.. //GO.SYSIN DD m.mac echo m0 sed 's/.//' >m0 <<'//GO.SYSIN DD m0' -.br -.rs -.sp |1.50i -.ce1000 -.ps12 -.ftB -\*(Nr\(sl\*(Tr User's Manual -.sp .2i -.ftI -.ps10 -Joseph F. Ossanna -.ftR -.sp -Bell Laboratories -Murray Hill, New Jersey 07974 -.ce0 -.sp2 -.ps \n(PS -.fi -.ftB -Introduction -.pg -\*(NR and \*(TR are text processors under -the \s-1PDP\s+1-11 \s-1UNIX\s+1 Time-Sharing System\*u1\*d -that format text for typewriter-like terminals and -for a \%Graphic Systems phototypesetter, respectively. -They accept lines of text interspersed with lines of -format control information and -format the text into a printable, paginated document -having a user-designed style. -\*(NR and \*(TR offer -unusual freedom in document styling, -including: -arbitrary style headers and footers; -arbitrary style footnotes; -multiple automatic sequence numbering for paragraphs, sections, etc; -multiple column output; -dynamic font and point-size control; -arbitrary horizontal and vertical local motions at any point; -and -a family of automatic overstriking, bracket construction, and -line drawing functions. -.pg -\*(NR and \*(TR are highly compatible with each other and it is almost always -possible to prepare input acceptable to both. -Conditional input is provided that enables -the user to embed input expressly destined for either program. -\*(NR can prepare output directly for a variety of terminal types and -is capable of utilizing the full resolution of each terminal. -.pg -.ftB -Usage -.pg -The general form of invoking \*(NR (or \*(TR) at \s-1UNIX\s+1 command level is -.x1 -\fBnroff \fIoptions files\fR\ -\h'|2i'(or \fBtroff \fIoptions files\fR) -.x2 -where \fIoptions\fR represents any of a number of option arguments -and \fIfiles\fR represents the list of files containing the document -to be formatted. -An argument consisting of a single minus (\fB\-\fR) is taken to be -a file name corresponding to the standard input. -If no file names are given input is taken from the standard input. -The options, which may appear in any order so long as they appear -before the files, are: -.sp -.ta .2i 1.0i -.ftI -.bd I 3 - Option Effect -.br -.bd I -.ftR -.ta .3i 1.0i -.in 1.0i -.ll-.3i -.bt - \fB\-o\fIlist\fR \ -Print only pages whose page numbers appear in \fIlist\fR, -which consists of comma-separated numbers and number ranges. -A number range has the form \fIN\-M\fR -and means pages \fIN\fR through \fIM;\fR -a initial \fI\-N\fR means -from the beginning to page \fIN;\fR and a final \fIN\-\fR means -from \fIN\fR to the end. -.bt - \fB\-n\fIN\fR Number first generated page \fIN\fR. -.bt - \fB\-s\fIN\fR Stop every \fIN\fR pages. -\*(NR will halt prior to every \fIN\fR pages (default \fIN\fR=1) -to allow paper loading or -changing, and will resume upon receipt of a newline. -\*(TR will stop the phototypesetter every \fIN\fR pages, -produce a trailer to allow changing cassettes, -and will resume after the phototypesetter \s-1START\s+1 button is pressed. -.bt - \fB\-m\fIname\fR Prepends the macro file -\fB\(slusr\(sllib\(sltmac.\fIname\fR -to the input \fIfiles\fR. -.bt - \fB\-r\fIaN\fR Register \fIa\fR (one-character) is set to \fIN\fR. -.bt - \fB\-i\fP Read standard input after the input files are exhausted. -.bt - \fB\-q\fR \ -Invoke the simultaneous input-output mode of the \fBrd\fR request. -.sp -.ne 3 -.ftI -.bd I 3 - \*(NR Only -.br -.bd I -.ft -.bt - \fB\-T\fIname\fR Specifies -the name of the output terminal type. -Currently defined names are \fB37\fR for the (default) Model 37 Teletype\(rg, -\fBtn300\fR for the GE TermiNet\ 300 (or any terminal without half-line -capabilities), -\fB300S\fR for the \s-1DASI\s+1-300S, -\fB300\fR for the \s-1DASI\s+1-300, -and -\fB450\fR for the \s-1DASI\s+1-450 (Diablo Hyterm). -.bt - \fB\-e\fR \ -Produce equally-spaced words in adjusted -lines, using full terminal resolution. -.sp -.ne 3 -.ftI -.bd I 3 - \*(TR Only -.br -.bd I -.ft -.bt - \fB\-t\fP Direct output to the standard output instead -of the phototypesetter. -.bt - \fB\-f\fP Refrain from feeding out paper and stopping -phototypesetter at the end of the run. -.bt - \fB\-w\fP Wait until phototypesetter is available, if -currently busy. -.bt - \fB\-b\fR \*(TR will report whether the phototypesetter -is busy or available. -No text processing is done. -.bt - \fB\-a\fP Send a printable \s-1(ASCII)\s+1 approximation -of the results to the standard output. -.bt - \fB\-p\fIN\fR Print all characters in point size \fIN\fR -while retaining all prescribed spacings and motions, -to reduce phototypesetter elasped time. -.bt - \fB\-g\fR Prepare output for the Murray Hill -Computation Center phototypesetter and direct it to the standard output. -.ll -.in0 -.xx -.pg -Each option is invoked as a separate argument; -for example, -.x1 -\fBnroff \-o\fI4,8\-10 \fB\-T\fI300S \fB\-m\fIabc file1 file2\fR -.x2 -requests formatting of pages 4, 8, 9, and 10 of a document contained in the files -named \fIfile1\fR and \fIfile2\fR, -specifies the output terminal as a \s-1DASI\s+1-300S, -and invokes the macro package \fIabc\fR. -.pg -Various pre- and post-processors are available for use with \*(NR and \*(TR. -These include the equation preprocessors \s-1NEQN\s+1 and \s-1EQN\s+1\*u2\*d -(for \*(NR and \*(TR respectively), -and the table-construction preprocessor \s-1TBL\s+1\*u3\*d. -A reverse-line postprocessor \s-1COL\s+1\*u4\*d -is available for multiple-column \*(NR output on terminals without reverse-line ability; -\s-1COL\s+1 expects the Model 37 Teletype -escape sequences that \*(NR produces by default. -\s-1TK\s+1\*u4\*d -is a 37 Teletype simulator postprocessor for printing \*(NR output on a Tektronix 4014. -\s-1TCAT\s+1\*u4\*d -is phototypesetter-simulator postprocessor -for \*(TR that produces an approximation of phototypesetter output -on a Tektronix 4014. -For example, in -.x1 -\fBtbl \fIfiles \fB| eqn | troff \-t \fIoptions \fB| tcat\fR -.x2 -the first \|\fB|\fR\| indicates the piping of \s-1TBL\s+1's output to \s-1EQN\s+1's input; -the second the piping of \s-1EQN\s+1's output to \*(TR's input; -and the third indicates the piping of \*(TR's output to \s-1TCAT\s+1. -\s-1GCAT\s+1\*u4\*d can be used to send \*(TR (\fB\-g\fR) output to -the Murray Hill Computation Center. -.br -.pg -The remainder of this manual consists of: -a Summary and Index; -a Reference Manual keyed to the index; -and -a set of Tutorial Examples. -Another tutorial is [5]. -.sp.4i -.ta 4i - Joseph F. Ossanna -.sp.4 -.ps -1 -.vs -1p -.pg -.ftB -References -.pg -.ta .3i -.in .3i -.ti0 -[1] K. Thompson, D. M. Ritchie, -.ul -UNIX Programmer's Manual, -Sixth Edition (May 1975). -.sp.4 -.ti0 -[2] B. W. Kernighan, L. L. Cherry, -.ul -Typesetting Mathematics \(em User's Guide (Second Edition), -Bell Laboratories internal memorandum. -.sp.4 -.ti0 -[3] M. E. Lesk, -.ul -Tbl \(em A Program to Format Tables, -Bell Laboratories internal memorandum. -.sp.4 -.ti0 -[4] Internal on-line documentation, on \s-1UNIX\s+1. -.sp.4 -.ti0 -[5] B. W. Kernighan, \fIA TROFF Tutorial\fR, -Bell Laboratories internal memorandum. -.in0 -.ps -.vs //GO.SYSIN DD m0 echo m0a sed 's/.//' >m0a <<'//GO.SYSIN DD m0a' -.pn3 -.br -.tr | -.ce -.ftB -SUMMARY AND INDEX -.ftR -.de mx -.ev2 -.nf -.h1 -.in -.sp -.fi -.ev -.ns -.. -.xx -.h1 \s-1#\s+1 * -.fn -.sp.3 -*Values separated by "\fB;\fR" are for \*(NR and \*(TR respectively. -.sp.2 -\s-1#\s+1Notes are explained at the end of this Summary and Index -.ef -.mh -General Explanation -.mh -Font and Character Size Control -.bt -\fB&ps\fI\|\(+-N\fR 10\|point previous E Point size; also \fB\es\fI\(+-N\fR.\(dg -.b1 -\fB&ss\fI|N\fR 12\(sl36\|em ignored E Space-character size -set to \fIN\fR\(sl36\|em.\(dg -.b1 -\fB&cs\fI\|F\|N\|M\fR off - P Constant character -space (width) -mode (font \fIF\^\fR\^).\(dg -.b1 -\fB&bd\fI|F|N\fR off - P Embolden font \fIF\fR by \fIN\fR\(mi1 units.\(dg -.b1 -\fB&bd|S|\fIF|N\fR off - P Embolden Special Font when current font is \fIF\fR.\(dg -.fn -.sp.2 -\(dgNo effect in \*(NR. -.ef -.b1 -\fB&ft\fI|F\fR Roman previous E Change to font -\fIF\fR|= \fIx\fR, \fIxx\fR, or 1-4. -Also \fB\ef\fIx\fR,\|\fB\ef(\fIxx\fR,\|\fB\ef\fIN\fR. -.b1 -\fB&fp\fI|N|F\fR R,I,B,S ignored - Font named \fIF\fR mounted on physical position 1\(<=\fIN\fR\(<=4. -.mh -Page Control -.bt -\fB&pl\fI\|\(+-N\fR 11\|in 11\|in \fBv\fR Page length. -.b1 -\fB&bp|\fI\(+-N\fR \fIN\(eq\fR1 - B\(dd,\fBv\fR \ -Eject current page; next page number \fIN\fR. -.fn -.sp.2 -\(ddThe use of "\ \fB\'\fR\ " as control character (instead of "\fB.\fR") -suppresses the break function. -.ef -.b1 -\fB&pn\fI|\(+-N N\(eq\fR1 ignored - Next page number \fIN\fR. -.b1 -\fB&po\fI|\(+-N\fR 0;|26\(sl27\|in previous \fBv\fR Page offset. -.b1 -\fB&ne\fI|N\fR - \fIN\(eq\fR1\fIV\fR D,\fBv\fR Need \fIN\fR vertical space (\fIV\fR = vertical spacing). -.b1 -\fB&mk|\fIR\fR none internal D Mark current vertical place in register \fIR\fR. -.b1 -\fB&rt\fI|\(+-N\fR none internal D,\fBv\fR Return \fI(upward only)\fR to marked vertical place. -.mh -Text Filling, Adjusting, and Centering -.bt -\fB&br\fR - - B Break. -.b1 -.lg0 -\fB&fi\fR \(fill - B,E Fill output lines. -.lg -.b1 -\fB&nf\fR fill - B,E No filling or adjusting of output lines. -.b1 -\fB&ad\fI|c\fR adj,both adjust E Adjust output lines with mode \fIc\fR. -.b1 -\fB&na\fR adjust - E No output line adjusting. -.b1 -\fB&ce\fI|N\fR off \fIN\(eq\fR1 B,E Center following \fIN\fR input text lines. -.mh -Vertical Spacing -.bt -\fB&vs\fI|N\fR 1\(sl6in;12pts previous E,\fBp\fR Vertical base line spacing (\fIV\fR\^). -.b1 -\fB&ls\fI|N N\(eq\fR1 previous E Output \fIN\(mi\fR1 \fIV\^\fRs after each text output line. -.b1 -\fB&sp\fI|N\fR - \fIN\(eq\fR1\fIV\fR B,\fBv\fR Space \ -vertical distance \fIN\fR \fIin either direction\fR. -.b1 -\fB&sv\fI|N\fR - \fIN\(eq\fR1\fIV\fR \fBv\fR Save vertical distance \fIN\fR. -.b1 -\fB&os\fR - - - Output saved vertical distance. -.b1 -\fB&ns\fR space - D Turn no-space mode on. -.b1 -\fB&rs\fR - - D Restore spacing; turn no-space mode off. -.mh -Line Length and Indenting -.bt -\fB&ll\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Line length. -.b1 -\fB&in\fI|\(+-N\fR \fIN\(eq\fR\^0 previous B,E,\fBm\fR Indent. -.b1 -\fB&ti\fI|\(+-N\fR - ignored B,E,\fBm\fR Temporary indent. -.mh -Macros, Strings, Diversion, and Position Traps -.bt -\fB&de\fI|xx|yy\fR - \fI.yy=\fB..\fR - Define or redefine macro \fIxx;\fR end at call of \fIyy\fR. -.b1 -\fB&am\fI|xx|yy\fR - \fI.yy=\fB..\fR - Append to a macro. -.b1 -\fB&ds\fI|xx|string\fR - ignored - Define a string \fIxx\fR containing \fIstring\fR. -.b1 -\fB&as\fI|xx|string\fR - ignored - Append \fIstring\fR to string \fIxx\fR. -.b1 -\fB&rm\fI|xx\fR - ignored - Remove request, macro, or string. -.b1 -\fB&rn\fI|xx|yy\fR - ignored - Rename request, macro, or string \fIxx\fR to \fIyy\fR. -.b1 -\fB&di\fI|xx\fR - end D Divert output to macro \fIxx\fR. -.b1 -\fB&da\fI|xx\fR - end D Divert and append to \fIxx\fR. -.b1 -\fB&wh\fI|N|xx\fR - - \fBv\fR Set location trap; negative is w.r.t. page bottom. -.b1 -\fB&ch\fI|xx|N\fR - - \fBv\fR Change trap location. -.b1 -\fB&dt\fI|N|xx\fR - off D,\fBv\fR Set a diversion trap. -.b1 -\fB&it\fI|N|xx\fR - off E Set an input-line count trap. -.b1 -\fB&em\fI|xx\fR none none - End macro is \fIxx\fI. -.mh -Number Registers -.bt -\fB&nr\fI|R|\(+-N|M\fR - \fBu\fR Define and set number register \fIR\fR; auto-increment by \fIM\fR. -.b1 -\fB&af\fI|R|c\fR arabic - - Assign format to register \fIR\fR (\fIc=\fB1\fR, \fBi\fR, \fBI\fR, \fBa\fR, \fBA\fR). -.b1 -\fB&rr\fI|R\fR - - - Remove register \fIR\fR. -.mh -Tabs, Leaders, and Fields -.bt -\fB&ta\fI|Nt|...\fR 0.8;|0.5in none E,\fBm\fR Tab settings; \fIleft\fR type, unless \fIt=\fBR\fR(right), \fBC\fR(centered). -.b1 -\fB&tc\fI|c\fR none none E Tab repetition character. -.b1 -\fB&lc\fI|c\fR \fB.\fR none E Leader repetition character. -.b1 -\fB&fc\fI|a|b\fR off off - Set field delimiter \fIa\fR and pad character \fIb\fR. -.mh -Input and Output Conventions and Character Translations -.bt -\fB&ec\fI|c\fR \e \e - Set escape character. -.b1 -\fB&eo\fR on - - Turn off escape character mechanism. -.b1 -\fB&lg\fI|N\fR -;\|on on - Ligature mode -on if \fIN\fR>0. -.b1 -\fB&ul\fI|N\fR off \fIN\(eq\fR1 E Underline (italicize in \*(TR) \fIN\fR input lines. -.b1 -\fB&cu\fI|N\fR off \fIN\(eq\fR1 E Continuous underline in \*(NR; like \fBul\fR in \*(TR. -.b1 -\fB&uf\fI|F\fR Italic Italic - Underline font set to \fIF\fR (to be switched to by \fBul\fR). -.b1 -\fB&cc\fI|c\fR \fB. .\fR E Set control character to \fIc\fR. -.b1 -\fB&c2\fI|c\fR \fB\' \'\fR E Set nobreak control character to \fIc\fR. -.b1 -\fB&tr\fI|abcd....\fR none - O Translate \fIa\fR to \fIb\fR, etc. on output. -.mh -Local Horizontal and Vertical Motions, and the Width Function -.mh -Overstrike, Bracket, Line-drawing, and Zero-width Functions -.mh -Hyphenation. -.bt -\fB&nh\fR hyphenate - E No hyphenation. -.b1 -\fB&hy\fI|N\fR hyphenate hyphenate E Hyphenate; \fIN =\fR mode. -.b1 -\fB&hc\fI|c\fR \fB\e% \e%\fR E Hyphenation indicator character \fIc\fR. -.b1 -\fB&hw\fI|word1|...\fR ignored - Exception words. -.mh -Three Part Titles. -.bt -\fB&tl\fI|\'left\|\'center\|\'right\|\'\fR - - Three part title. -.b1 -\fB&pc\fI|c\fR \fB%\fR off - Page number character. -.b1 -\fB<\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Length of title. -.mh -Output Line Numbering. -.bt -\fB&nm\fI|\(+-N|M|S|I\fR off E Number mode on or off, set parameters. -.b1 -\fB&nn\fI|N\fR - \fIN\(eq\fR1 E Do not number next \fIN\fR lines. -.mh -Conditional Acceptance of Input -.bt -\fB&if\fI|c|anything\fR - - If condition \fIc\fR true, accept \fIanything\fR as input, -.b1 - for multi-line use \fI\e{anything\|\e}\fR. -.b1 -\fB&if|!\fIc|anything\fR - - If condition \fIc\fR false, accept \fIanything\fR. -.b1 -\fB&if\fI|N|anything\fR - \fBu\fR If expression \fIN\fR > 0, accept \fIanything\fR. -.b1 -\fB&if|!\fIN|anything\fR - \fBu\fR If expression \fIN\fR \(<= 0, accept \fIanything\fR. -.b1 -\fB&if\fI|\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR identical to \fIstring2\fR, -accept \fIanything\fR. -.b1 -\fB&if|!\fI\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR not identical to \fIstring2\fR, -accept \fIanything\fR. -.b1 -\fB&ie\fI|c|anything\fR - \fBu\fR If portion of if-else; all above forms (like \fBif\fR). -.b1 -\fB&el\fI|anything\fR - - Else portion of if-else. -.mh -Environment Switching. -.bt -\fB&ev\fI|N\fR \fIN\(eq\fR0 previous - Environment switched (\fIpush down\fR). -.mh -Insertions from the Standard Input -.bt -\fB&rd\fI|prompt\fR\fR - \fIprompt=\s-1\fRBEL\s+1 - Read insertion. -.b1 -\fB&ex\fR - - - \ -Exit from \*(NR\(sl\*(TR. -.mh -Input\(slOutput File Switching -.bt -\fB&so\fI|filename\fR - - Switch source file \fI(push down)\fR. -.b1 -\fB&nx\fI|filename\fR end-of-file - Next file. -.b1 -\fB&pi\fI|program\fR - - Pipe output to \fIprogram\fR (\*(NR only). -.mh -Miscellaneous -.bt -\fB&mc\fI|c|N\fR - off E,\fBm\fR Set margin character \fIc\fR and separation \fIN\fR. -.b1 -\fB&tm\fI|string\fR - newline - Print \fIstring\fR on terminal \ -(\s-1UNIX\s+1 standard message output). -.b1 -\fB&ig\fI|yy\fR - \fI.yy=\fB..\fR - Ignore till call of \fIyy\fR. -.b1 -\fB&pm\fI|t\fR - all - Print macro names and sizes; -.b1 - if \fIt\fR present, print only total of sizes. -.b1 -.lg0 -\fB&fl\fR - - B Flush output buffer. -.lg -.mh -Output and Error Messages -.xx -.nf -.rm mx -.ftR -\l'\n(.lu' -.ftB -.xx -.ta .3iC .6i - Notes- -.xx -.ftR - B Request normally causes a break. - D Mode or relevant parameters associated with current diversion level. - E Relevant parameters are a part of the current environment. - O Must stay in effect until logical output. - P Mode must be still or again in effect at the time of physical output. - \fBv\fR,\fBp\fR,\fBm\fR,\fBu\fR Default scale indicator; if not specified, scale indicators are \fIignored\fR. -.br -.nr zz 11 -.de cl -.ie \\n+(cl<\n(zz \{\ -. po +\\n(.lu/\n(zzu -. rt\} -.el \{.po 26i/27u\} -.. -.nr cl 0 1 -.di zz -.ta .3iR -.nf -.ps 8 -.vs 10 -ad 4 -af 8 -am 7 -as 7 -bd 2 -bp 3 -br 4 -c2 10 -cc 10 -ce 4 -ch 7 -cs 2 -cu 10 -da 7 -de 7 -di 7 -ds 7 -dt 7 -ec 10 -el 16 -em 7 -eo 10 -ev 17 -ex 18 -fc 9 -fi 4 -fl 20 -fp 2 -ft 2 -hc 13 -hw 13 -hy 13 -ie 16 -if 16 -ig 20 -in 6 -it 7 -lc 9 -lg 10 -li 10 -ll 6 -ls 5 -lt 14 -mc 20 -mk 3 -na 4 -ne 3 -nf 4 -nh 13 -nm 15 -nn 15 -nr 8 -ns 5 -nx 19 -os 5 -pc 14 -pi 19 -pl 3 -pm 20 -pn 3 -po 3 -ps 2 -rd 18 -rm 7 -rn 7 -rr 8 -rs 5 -rt 3 -so 19 -sp 5 -ss 2 -sv 5 -ta 9 -tc 9 -ti 6 -tl 14 -tm 20 -tr 10 -uf 10 -ul 10 -vs 5 -wh 7 -.di -.nr aa \n(dn/\n(zz -.ne \\n(aau+10p -.sp -.ftB -Alphabetical Request and Section Number Cross Reference -.ft -.sp.3 -.wh \n(nlu+\n(aau cl -.nr qq \n(nlu+\n(aau -.ps -.vs -.mk -.zz -.rt -.sp \n(.tu -.ch cl 12i -.sp -.bp -.nf -.ftB -Escape Sequences for Characters, Indicators, and Functions -.ftR -.xx -.TS -c2l -c2l2l -n2l2l. -.ftI -.bd I 3 -Section Escape -Reference Sequence Meaning -.ftR -.bd I -.xx -10.1 \fB\e\e\fR \e (to prevent or delay the interpretation of \e\|) -10.1 \fB\ee\fR Printable version of the \fIcurrent\fR escape character. -2.1 \fB\e\'\fR \' (acute accent); equivalent to \fB\e(aa\fR -2.1 \fB\e\`\fR \` (grave accent); equivalent to \fB\e(ga\fR -2.1 \fB\e\-\fR \- Minus sign in the \fIcurrent\fR font -7 \fB\e\^.\fR Period (dot) (see \fBde\fR) -11.1 \fB\e\fR(space) Unpaddable space-size space character -11.1 \fB\e0\fR Digit width space -.tr || -11.1 \fB\e\||\fR 1\(sl6\|em narrow space character (zero width in \*(NR) -.tr | -11.1 \fB\e^\fR 1\(sl12\|em half-narrow space character (zero width in \*(NR) -.tr && -4.1 \fB\e&\fR Non-printing, zero width character -.tr &. -10.6 \fB\e!\fR Transparent line indicator -10.7 \fB\e"\fR Beginning of comment -7.3 \fB\e$\fIN\fR Interpolate argument 1\(<=\fIN\fR\(<=9 -13 \fB\e%\fR Default optional hyphenation character -2.1 \fB\e(\fIxx\fR Character named \fIxx\fR -7.1 \fB\e\(**\fIx\fR,|\fB\e\(**(\fIxx\fR Interpolate string \fIx\fR or \fIxx\fR -9.1 \fB\ea\fR Non-interpreted leader character -12.3 \fB\eb\fI\'abc...\|\'\fR Bracket building function -4.2 \fB\ec\fR Interrupt text processing -11.1 \fB\ed\fR Forward (down) 1\(sl2\|em vertical motion (1\(sl2 line in \*(NR) -2.2 \fB\ef\fIx\fR,\fB\ef(\fIxx\fR,\fB\ef\fIN\fR Change to font named \fIx\fR or \fIxx\fR, or position \fIN\fR -11.1 \fB\eh\fI\'N|\'\fR Local horizontal motion; move right \fIN\fR \fI(negative left)\fR -11.3 \fB\ek\fIx\fR Mark horizontal \fIinput\fR place in register \fIx\fR -12.4 \fB\el\fI\|\'Nc\|\'\fR Horizontal line drawing function (optionally with \fIc\fR\|) -12.4 \fB\eL\fI\'Nc\|\'\fR Vertical line drawing function (optionally with \fIc\fR\|) -8 \fB\en\fIx\fR,\fB\en(\fIxx\fR Interpolate number register \fIx\fR or \fIxx\fR -12.1 \fB\eo\fI\'abc...\|\'\fR Overstrike characters \fIa, b, c, ...\fR -4.1 \fB\ep\fR Break and spread output line -11.1 \fB\er\fR Reverse 1\|em vertical motion (reverse line in \*(NR) -2.3 \fB\es\fIN\fR,\|\fB\es\fI\(+-N\fR Point-size change function -9.1 \fB\et\fR Non-interpreted horizontal tab -11.1 \fB\eu\fR Reverse (up) 1\(sl2\|em vertical motion (1\(sl2 line in \*(NR) -11.1 \fB\ev\fI\'N\|\|\'\fR Local vertical motion; move down \fIN\fR \fI(negative up)\fR -11.2 \fB\ew\fI\'string\|\'\fR Interpolate width of \fIstring\fR -5.2 \fB\ex\fI\'N\|\|\'\fR Extra line-space function \fI(negative before, positive after)\fR -12.2 \fB\ez\fIc\fR Print \fIc\fR with zero width (without spacing) -16 \fB\e{\fR Begin conditional input -16 \fB\e}\fR End conditional input -10.7 \fB\e\fR(newline) Concealed (ignored) newline -- \fB\e\fIX\fR \fIX\fR, any character \fInot\fR listed above -.TE -.fi -.sp -The escape sequences -\fB\e\e\fR, -\fB\e\^.\fR, -\fB\e"\fR, -\fB\e$\fR, -\fB\e\(**\fR, -\fB\ea\fR, -\fB\en\fR, -\fB\et\fR, -and -\fB\e\fR(newline) are interpreted in \fIcopy mode\fR (\(sc7.2). -.bp -.ftB -.nf -Predefined General Number Registers -.ft -.TS -c2l -c2l2l -n2l2l. -.ftI -.bd I 3 -Section Register -Reference Name Description -.ftR -.bd I -.xx -3 \fB%\fR Current page number. -11.2 \fBct\fR Character type (set by \fIwidth\fR function). -7.4 \fBdl\fR Width (maximum) of last completed diversion. -7.4 \fBdn\fR Height (vertical size) of last completed diversion. -- \fBdw\fR Current day of the week (1-7). -- \fBdy\fR Current day of the month (1-31). -11.3 \fBhp\fR Current horizontal place on \fIinput\fR line. -15 \fBln\fR Output line number. -- \fBmo\fR Current month (1-12). -4.1 \fBnl\fR Vertical position of last printed text base-line. -11.2 \fBsb\fR Depth of string below base line (generated by \fIwidth\fR function). -11.2 \fBst\fR Height of string above base line (generated by \fIwidth\fR function). -- \fByr\fR Last two digits of current year. -.TE -.sp -.ftB -Predefined Read-Only Number Registers -.ftR -.TS -c2l -c2l2l -n2l2l. -.ftI -.bd I 3 -Section Register -Reference Name Description -.ftR -.bd I -.xx -7.3 \fB&$\fR Number of arguments available at the current macro level. -- \fB&A\fR Set to 1 in \*(TR, if \fB\-a\fR option used; always 1 in \*(NR. -11.1 \fB&H\fR Available horizontal resolution in basic units. -- \fB&T\fR Set to 1 in \*(NR, if \fB\-T\fR option used; always 0 in \*(TR. -11.1 \fB&V\fR Available vertical resolution in basic units. -5.2 \fB&a\fR Post-line extra line-space most recently utilized \ -using \fB\ex\fI\'N\|\'\fR. -- \fB&c\fR Number of \fIlines\fR read from current input file. -7.4 \fB&d\fR Current vertical place in current diversion; equal to \fBnl\fR, if no diversion. -2.2 \fB&f\fR Current font as physical quadrant (1-4). -4 \fB&h\fR Text base-line high-water mark on current page or diversion. -6 \fB&i\fR Current indent. -6 \fB&l\fR Current line length. -4 \fB&n\fR Length of text portion on previous output line. -3 \fB&o\fR Current page offset. -3 \fB&p\fR Current page length. -2.3 \fB&s\fR Current point size. -7.5 \fB&t\fR Distance to the next trap. -4.1 \fB&u\fR Equal to 1 in fill mode and 0 in nofill mode. -5.1 \fB&v\fR Current vertical line spacing. -11.2 \fB&w\fR Width of previous character. -- \fB&x\fR Reserved version-dependent register. -- \fB&y\fR Reserved version-dependent register. -7.4 \fB&z\fR Name of current diversion. -.TE -.in0 -.fi //GO.SYSIN DD m0a echo m1 sed 's/.//' >m1 <<'//GO.SYSIN DD m1' -.pn8 -.tr | -.tr ~| -.rm mx -.br -.ce -.ftB -.ps+2 -.rs -.sp1.0i -REFERENCE MANUAL -.ftR -.ps-2 -.sp -.mh -General Explanation -.sc -Form of input. -Input consists of \fItext lines\fR, which are destined to be printed, -interspersed with \fIcontrol lines\fR, -which set parameters or otherwise control subsequent processing. -Control lines begin with a \fIcontrol character\fR\(em\ -normally \fB.\fR (period) or \fB\'\fR (acute accent)\(em\ -followed by a one or two character name that specifies -a basic \fIrequest\fR or the substitution of -a user-defined \fImacro\fR in place of the control line. -The control character \fB\'\fR suppresses the \fIbreak\fR function\(em\ -the forced output of a partially filled line\(em\ -caused by certain requests. -The control character may be separated from the request/macro name by -white space (spaces and/or tabs) for esthetic reasons. -Names must be followed by either -space or newline. -Control lines with unrecognized names are ignored. -.pg -Various special functions may be introduced anywhere in the input by -means of an \fIescape\fR character, normally \fB\e\fR. -For example, the function -\fB\en\fIR\fR -causes the interpolation of the contents of the -\fInumber register R\fR -in place of the function; -here \fIR\fR is either a single character name -as in \fB\en\fIx\fR, -or left-parenthesis-introduced, two-character name as in \fB\en(\fIxx\fR. -.sc -Formatter and device resolution. -\*(TR internally uses 432 units\(slinch, corresponding to -the Graphic Systems phototypesetter -which has a horizontal resolution of -1\(sl432 inch and a vertical resolution -of 1\(sl144 inch. -\*(NR internally uses 240 units\(slinch, -corresponding to the least common multiple of the -horizontal and vertical resolutions of various -typewriter-like output devices. -\*(TR rounds horizontal\(slvertical numerical parameter input to the actual -horizontal\(slvertical resolution of the Graphic Systems typesetter. -\*(NR similarly rounds numerical input to the actual resolution -of the output device indicated by the \fB\(miT\fR option -(default Model 37 Teletype). -.sc -Numerical parameter input. -Both \*(NR and \*(TR -accept numerical input with the appended scale -indicators -shown in the following table, -where -\fIS\fR is the current type size in points, -\fIV\fR is the current vertical line spacing in -basic units, -and -\fIC\fR is a \fInominal character width\fR in basic units. -.TS -center box; -c|c|ls -c|c|ll -c|l|l|l. -Scale Number of basic units -Indicator Meaning \*(TR \*(NR -_ -\fBi\fR Inch 432 240 -\fBc\fR Centimeter 432\(mu50\(sl127 240\(mu50\(sl127 -\fBP\fR Pica = 1\(sl6 inch 72 240\(sl6 -\fBm\fR Em = \fIS\fR points 6\(mu\fIS\fR \fIC\fR -\fBn\fR En = Em\(sl2 3\(mu\fIS\fR \fIC, same as Em\fR -\fBp\fR Point = 1\(sl72 inch 6 240\(sl72 -\fBu\fR Basic unit 1 1 -\fBv\fR Vertical line space \fIV\fR \fIV\fR -none Default, see below -.TE -In \*(NR, \fIboth\fR the em and the en are taken to be equal to the \fIC\fR, -which is output-device dependent; -common values are 1\(sl10 and 1\(sl12 inch. -Actual character widths in \*(NR need not be all the same and constructed characters -such as \(mi> (\(->) are often extra wide. -The default scaling is ems for the horizontally-oriented requests -and functions -\fBll\fR, -\fBin\fR, -\fBti\fR, -\fBta\fR, -\fBlt\fR, -\fBpo\fR, -\fBmc\fR, -\fB\eh\fR, -and -\fB\el\fR; -\fIV\^\fRs -for the vertically-oriented requests and functions -\fBpl\fR, -\fBwh\fR, -\fBch\fR, -\fBdt\fR, -\fBsp\fR, -\fBsv\fR, -\fBne\fR, -\fBrt\fR, -\fB\ev\fR, -\fB\ex\fR, -and -\fB\eL\fR; -\fBp\fR for the \fBvs\fR request; -and \fBu\fR for the requests -\fBnr\fR, -\fBif\fR, -and -\fBie\fR. -\fIAll\fR other requests ignore any scale indicators. -When a number register containing an already appropriately scaled number -is interpolated to provide numerical input, -the unit scale indicator -\fBu\fR may need to be appended to prevent -an additional inappropriate default scaling. -The number, \fIN\fR, may be specified in decimal-fraction form -but the parameter finally stored is rounded to an integer number of basic units. -.pg -The \fIabsolute position\fR indicator \fB~\fR may be prepended -to a number \fIN\fR -to generate the distance to the vertical or horizontal place \fIN\fR. -For vertically-oriented requests and functions, \fB~\|\fIN\fR -becomes the distance in basic units from the current vertical place on the page or in a \fIdiversion\fR (\(sc7.4) -to the the vertical place \fIN\fR. -For \fIall\fR other requests and functions, -\fB~\|\fIN\fR -becomes the distance from -the current horizontal place on the \fIinput\fR line to the horizontal place \fIN\fR. -For example, -.x1 -\&\fB.sp ~\|3.2c\fR -.x2 -will space \fIin the required direction\fR to 3.2\|centimeters from the top of the page. -.sc -.tr && -Numerical expressions. -Wherever numerical input is expected an expression involving parentheses, -the arithmetic operators \fB\(pl\fR, \fB\(mi\fR, \fB\(sl\fR, \fB\(**\fR, \fB%\fR (mod), -and the logical operators -\fB<\fR, -\fB>\fR, -\fB<\(eq\fR, -\fB>\(eq\fR, -\fB\(eq\fR (or \fB\(eq\(eq\fR), -\fB&\fR\ (and), -\fB:\fR\ (or) -may be used. -Except where controlled by parentheses, evaluation of expressions is left-to-right; -there is no operator precedence. -In the case of certain requests, an initial \fB\(pl\fR or \fB\(mi\fR is stripped -and interpreted as an increment or decrement indicator respectively. -In the presence of default scaling, the desired scale indicator must be -attached to \fIevery\fR number in an expression -for which the desired and default scaling differ. -For example, -if the number register \fBx\fR contains 2 -and the current point size is 10, -then -.br -.tr &. -.x1 -.ftB -\&.ll (4.25i\(pl\enxP\(pl3)\(sl2u -.ftR -.x2 -will set the line length to 1\(sl2 the sum of 4.25 inches \(pl 2 picas \(pl 30 points. -.sc -Notation. -Numerical parameters are indicated in this manual in two ways. -\(+-\fIN\fR means that the argument may take the forms \fIN\fR, \(pl\fIN\fR, or \(mi\fIN\fR and -that the corresponding effect is to set the affected parameter -to \fIN\fR, to increment it by \fIN\fR, or to decrement it by \fIN\fR respectively. -Plain \fIN\fR means that an initial algebraic sign is \fInot\fR -an increment indicator, -but merely the sign of \fIN\fR. -Generally, unreasonable numerical input is either ignored -or truncated to a reasonable value. -For example, -most requests expect to set parameters to non-negative -values; -exceptions are -\fBsp\fR, -\fBwh\fR, -\fBch\fR, -\fBnr\fR, -and -\fBif\fR. -The requests -\fBps\fR, -\fBft\fR, -\fBpo\fR, -\fBvs\fR, -\fBls\fR, -\fBll\fR, -\fBin\fR, -and -\fBlt\fR -restore the \fIprevious\fR parameter value in the \fIabsence\fR -of an argument. -.pg -Single character arguments are indicated by single lower case letters -and -one/two character arguments are indicated by a pair of lower case letters. -Character string arguments are indicated by multi-character mnemonics. -.mh -Font and Character Size Control -.sc -Character set. -The \*(TR character set consists of the Graphics Systems Commercial|II -character set plus a Special Mathematical Font character -set\(emeach having 102 characters. -These character sets are shown in the attached Table|I. -All \s-1ASCII\s+1 characters are included, -with some on the Special Font. -With three exceptions, the \s-1ASCII\s+1 characters are input as themselves, -and non-\s-1ASCII\s+1 characters are input in the form \fB\e(\fIxx\fR where -\fIxx\fR is a two-character name given in the attached Table|II. -The three \s-1ASCII\s+1 exceptions are mapped as follows: -.TS -center box; -cs|cs -cc|cc -cl|cl. -\s-1ASCII\s+1 Input Printed by \*(TR -Character Name Character Name -_ -\' acute accent ' close quote -\` grave accent ` open quote -\(mi minus - hyphen -.TE -.tr ~~ -The characters -\fB\'\fR, -\fB\`\fR, -and -\fB\-\fR -may be input -by \fB\e\'\fR, \fB\e\`\fR, and \fB\e\-\fR respectively or by their names (Table II). -The \s-1ASCII\s+1 characters \fB@\fR, \fB#\fR, \fB"\fR, \fB\(aa\fR, \fB\(ga\fR, \fB<\fR, \fB>\fR, \fB\e\fR, \fB{\fR, \fB}\fR, \fB~\fR, \fB^\fR, and \fB\(ul\fR exist -only on the Special Font and are printed as a 1-em space if that Font -is not mounted. -.pg -.tr ~| -\*(NR understands the entire \*(TR character set, -but can in general print only \s-1ASCII\s+1 -characters, -additional characters as may be available on -the output device, -such characters as may be able to be constructed -by overstriking or other combination, -and those that can reasonably be mapped -into other printable characters. -The exact behavior is determined by a driving -table prepared for each device. -The characters -\fB\'\fR, -\fB\`\fR, -and -\fB\(ul\fR -print -as themselves. -.sc -Fonts. -The default mounted fonts are -Times Roman (\fBR\fR), -Times Italic (\fBI\fR), -Times Bold (\fBB\fR), -and the Special Mathematical Font (\fBS\fR) -on physical typesetter positions 1, 2, 3, and 4 respectively. -These fonts are used in this document. -The \fIcurrent\fR font, initially Roman, may be changed -(among the mounted fonts) -by use of the \fBft\fR request, -or by imbedding at any desired point -either \fB\ef\fIx\fR, \fB\ef(\fIxx\fR, or \fB\ef\fIN\fR -where -\fIx\fR and \fIxx\fR are the name of a mounted font -and \fIN\fR is a numerical font position. -It is \fInot\fR necessary to change to the Special font; -characters on that font are automatically handled. -A request for a named but not-mounted font is \fIignored\fR. -\*(TR can be informed that any particular font is mounted -by use of the \fBfp\fR request. -The list of known fonts is installation dependent. -In the subsequent discussion of font-related requests, -\fIF\fR represents either a one\(sltwo-character -font name or the numerical font position, 1-4. -The current font is available (as numerical position) in the read-only number register \fB.f\fR. -.pg -\*(NR understands font control -and normally underlines Italic characters (see \(sc10.5). -.sc -Character size. -Character point sizes available on the Graphic Systems typesetter are -6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, and 36. -This is a range of 1\(sl12 inch to 1\(sl2 inch. -The \fBps\fR request is used to change or restore the point size. -Alternatively the point size may be changed between any two characters -by imbedding a \fB\es\fIN\fR -at the desired point -to set the size to \fIN\fR, -or a \fB\es\fI\(+-N\fR (1\(<=\fIN\fR\(<=9) -to increment\(sldecrement the size by \fIN\fR; -\fB\es0\fR restores the \fIprevious\fR size. -Requested point size values that are between two valid -sizes yield the larger of the two. -The current size is available in the \fB.s\fR register. -\*(NR ignores type size control. -.h1 * -.fn -.xx -*Notes are explained at the end of the Summary and Index above. -.ef -.bt -\fB&ps\fI|\(+-N\fR 10\|point previous E Point size -set to \(+-\fIN\fR. -Alternatively imbed \fB\es\fIN\fR or \fB\es\fI\(+-N\fR. -Any positive size value may be requested; -if invalid, the next larger valid size will result, with a -maximum of 36. -A paired sequence -\(pl\fIN\fR,\|\(mi\fIN\fR -will work because the previous requested value is also remembered. -Ignored in \*(NR. -.bt -\fB&ss\fI|N\fR 12\(sl36\|em ignored E Space-character size -is set to \fIN\fR\(sl36\|ems. -This size is the minimum word spacing in adjusted text. -Ignored in \*(NR. -.bt -\fB&cs\|\fIF\|N\|M\fR off - P Constant character space -(width) mode is -set on for font \fIF\fR (if mounted); the width of every character will be -taken to be \fIN\fR\(sl36 ems. -If \fIM\fR is absent, -the em is that of the character's point size; -if \fIM\fR is given, -the em is \fIM\fR-points. -All affected characters -are centered in this space, including those with an actual width -larger than this space. -Special Font characters occurring while the current font -is \fIF\fR are also so treated. -If \fIN\fR is absent, the mode is turned off. -The mode must be still or again in effect when the characters are physically printed. -Ignored in \*(NR. -.bt -\fB&bd\fI|F|N\fR off - P The characters in font \fIF\fR will be artificially -emboldened by printing each one twice, separated by \fIN\fR\^\(mi1 basic units. -A reasonable value for \fIN\fR is 3 when the character size is in the vicinity -of 10 points. -If \fIN\fR is missing the embolden mode is turned off. -The column heads above were printed with \fB.bd|I|3\fR. -The mode must be still or again in effect when the characters are physically printed. -Ignored in \*(NR. -.bt -\fB&bd|S|\fIF|N\fR off - P The characters in the Special Font -will be emboldened whenever the current font is \fIF\fR. -This manual was printed with \fB.bd\|S\|B\|3\fR. -The mode must be still or again in effect when the characters are physically printed. -.bt -\fB&ft|\fIF\fR Roman previous E Font changed to -\fIF\fR. -Alternatively, imbed \fB\ef\fIF\fR. -The font name \fBP\fR is reserved to mean the previous font. -.bt -\fB&fp|\fIN|F\fR R,I,B,S ignored - Font position. -This is a statement -that a font named \fIF\fR is mounted on position \fIN\fR (1-4). -It is a fatal error if \fIF\fR is not known. -The phototypesetter has four fonts physically mounted. -Each font consists of a film strip which can be mounted on a numbered -quadrant of a wheel. -The default mounting sequence assumed by \*(TR is -R, I, B, and S on positions 1, 2, 3 and 4. -.mh -Page control -.pg -Top and bottom margins are \fInot\fR automatically provided; -it is conventional to define two \fImacros\fR and to set \fItraps\fR -for them at vertical positions 0 (top) and \fI\(miN\fR (\fIN\fR from the bottom). -See \(sc7 and Tutorial Examples \(scT2. -A pseudo-page transition onto the \fIfirst\fR page occurs -either when the first \fIbreak\fR occurs or -when the first \fInon-diverted\fR text processing occurs. -Arrangements -for a trap to occur at the top of the first page -must be completed before this transition. -In the following, references to the \fIcurrent diversion\fR (\(sc7.4) -mean that the mechanism being described works during both -ordinary and diverted output (the former considered as the top diversion level). -.pg -The useable page width on the Graphic Systems phototypesetter -is about 7.54|inches, -beginning about 1\(sl27|inch from the left edge of the -8|inch wide, continuous roll paper. -The physical limitations on \*(NR output -are output-device dependent. -.h1 -.bt -\fB&pl\fI|\(+-N\fR 11\|in 11\|in \fBv\fR Page length set to \fI\(+-N\fR. -The internal limitation is about 75|inches in \*(TR and -about 136|inches in \*(NR. -The current page length is available in the \fB.p\fR register. -.bt -\fB&bp\fI|\(+-N\fR \fIN\(eq\fR1 - B*,\fBv\fR Begin page. -.fn -.xx -*The use of "\ \fB\'\fR\ " as control character (instead of "\fB.\fR") -suppresses the break function. -.ef -The current page is ejected and a new page is begun. -If \fI\(+-N\fR is given, the new page number will be \fI\(+-N\fR. -Also see request \fBns\fR. -.bt -\fB&pn\fI|\(+-N\fR \fIN\fR\(eq1 ignored - Page number. -The next page (when it occurs) will have the page number \fI\(+-N\fR. -A \fBpn\fR must occur before the initial pseudo-page transition -to effect the page number of the first page. -The current page number is in the \fB%\fR register. -.bt -\fB&po\fI|\(+-N\fR 0;|26\(sl27\|in\(dg previous \fBv\fR Page offset. -.fn -.xx -\(dgValues separated by ";" are for \*(NR and \*(TR respectively. -.ef -The current \fIleft margin\fR is set to \fI\(+-N\fR. -The \*(TR initial value provides about 1|inch of paper margin -including the physical typesetter margin of 1\(sl27|inch. -In \*(TR the maximum (line-length)+(page-offset) is about 7.54 inches. -See \(sc6. -The current page offset is available in the \fB.o\fR register. -.bt -\fB&ne\fI|N\fR - \fIN\(eq\fR1\|\fIV\fR D,\fBv\fR Need \fIN\fR vertical space. -If the distance, \fID\fR, to the next trap position (see \(sc7.5) is less than \fIN\fR, -a forward vertical space of size \fID\fR occurs, -which will spring the trap. -If there are no remaining -traps on the page, -\fID\fR is the distance to the bottom of the page. -If \fID\|<\|V\fR, another line could still be output -and spring the trap. -In a diversion, \fID\fR is the distance to the \fIdiversion trap\fR, if any, -or is very large. -.bt -\fB&mk\fI|R\fR none internal D Mark the \fIcurrent\fR vertical place -in an internal register (both associated with the current diversion level), -or in register \fIR\fR, if given. -See \fBrt\fR request. -.bt -\fB&rt\fI|\(+-N\fR none internal D,\fBv\fR Return \fIupward only\fR to a marked vertical place -in the current diversion. -If \fI\(+-N\fR (w.r.t. current place) is given, -the place is \fI\(+-N\fR from the top of the page or diversion -or, if \fIN\fR is absent, to a -place marked by a previous \fBmk\fR. -Note that the \fBsp\fR request (\(sc5.3) may be used -in all cases instead of \fBrt\fR -by spacing to the absolute place stored in a explicit register; -e.|g. using the sequence \fB.mk|\fIR\fR ... \fB.sp|~\|\en\fIR\fBu\fR. -.mh -Text Filling, Adjusting, and Centering -.sc -Filling and adjusting. -Normally, -words are collected from input text lines -and assembled into a output text line -until some word doesn't fit. -An attempt is then made -the hyphenate the word in effort to assemble a part -of it into the output line. -The spaces between the words on the output line -are then increased to spread out the line -to the current \fIline length\fR -minus any current \fIindent\fR. -A \fIword\fR is any string of characters delimited by -the \fIspace\fR character or the beginning/end of the input line. -Any adjacent pair of words that must be kept together -(neither split across output lines nor spread apart -in the adjustment process) -can be tied together by separating them with the -\fIunpaddable space\fR character -"\fB\e\ \ \fR" (backslash-space). -The adjusted word spacings are uniform in \*(TR -and the minimum interword spacing can be controlled -with the \fBss\fR request (\(sc2). -In \*(NR, they are normally nonuniform because of -quantization to character-size spaces; -however, -the command line option \fB\-e\fR causes uniform -spacing with full output device resolution. -Filling, adjustment, and hyphenation (\(sc13) can all be -prevented or controlled. -The \fItext length\fR on the last line output is available in the \fB.n\fR register, -and text base-line position on the page for this line is in the \fBnl\fR register. -The text base-line high-water mark (lowest place) on the current page is in -the \fB.h\fR register. -.pg -An input text line ending with \fB.\fR\^, \fB?\fR, or \fB!\fR is taken -to be the end of a \fIsentence\fR, and an additional space character is -automatically provided during filling. -Multiple inter-word space characters found in the input are retained, -except for trailing spaces; -initial spaces also cause a \fIbreak\fR. -.pg -When filling is in effect, a \fB\ep\fR may be imbedded or attached to a word to -cause a \fIbreak\fR at the \fIend\fR of the word and have the resulting output -line \fIspread out\fR to fill the current line length. -.pg -.tr && -A text input line that happens to begin -with a control character can -be made to not look like a control line -by prefacing it with -the non-printing, zero-width filler character \fB\e&\fR. -Still another way is to specify output translation of some -convenient character into the control character -using \fBtr\fR (\(sc10.5). -.tr &. -.sc -Interrupted text. -The copying of a input line in \fInofill\f (non-fill) mode can be \fIinterrupted\fR -by terminating -the partial line with a \fB\ec\fR. -The \fInext\fR encountered input text line will be considered to be a continuation -of the same line of input text. -Similarly, -a word within \fIfilled\fR text may be interrupted by terminating the -word (and line) with \fB\ec\fR; -the next encountered text will be taken as a continuation of the -interrupted word. -If the intervening control lines cause a break, -any partial line will be forced out along with any partial word. -.h1 -.bt -\fB&br\fR - - B Break. -The filling of the line currently -being collected is stopped and -the line is output without adjustment. -Text lines beginning with space characters -and empty text lines (blank lines) also cause a break. -.bt -.lg0 -\fB&fi\fR \(fill|on - B,E Fill subsequent output lines. -.lg -The register \fB.u\fR is 1 in fill mode and 0 in nofill mode. -.bt -\fB&nf\fR fill|on - B,E Nofill. -Subsequent output lines are \fIneither\fR filled \fInor\fR adjusted. -Input text lines are copied directly to output lines -\fIwithout regard\fR for the current line length. -.bt -\fB&ad\fI|c\fR adj,both adjust E \ -Line adjustment is begun. -If fill mode is not on, adjustment will be deferred until -fill mode is back on. -If the type indicator \fIc\fR is present, -the adjustment type is changed as shown in the following table. -.TS -center box; -c|c -c|l. -Indicator Adjust Type -_ -\fBl\fR adjust left margin only -\fBr\fR adjust right margin only -\fBc\fR center -\fBb\fR or \fBn\fR adjust both margins -absent unchanged -.TE -.bt -\fB&na\fR adjust - E Noadjust. -Adjustment is turned off; -the right margin will be ragged. -The adjustment type for \fBad\fR is not changed. -Output line filling still occurs if fill mode is on. -.bt -\fB&ce\fI|N\fR off \fIN\fR\(eq1 B,E Center the next \fIN\fR input text lines -within the current (line-length minus indent). -If \fIN\fR\(eq\^0, any residual count is cleared. -A break occurs after each of the \fIN\fR input lines. -If the input line is too long, -it will be left adjusted. -.mh -Vertical Spacing -.sc -Base-line spacing. -The vertical spacing \fI(V)\fR between the base-lines of successive -output lines can be set -using the \fBvs\fR request -with a resolution of 1\(sl144\|inch\|\(eq\|1\(sl2|point -in \*(TR, -and to the output device resolution in \*(NR. -\fIV\fR must be large enough to accommodate the character sizes -on the affected output lines. -For the common type sizes (9-12 points), -usual typesetting practice is to set \fIV\fR to 2\ points greater than the -point size; -\*(TR default is 10-point type on a 12-point spacing -(as in this document). -The current \fIV\fR is available in the \fB.v\fR register. -Multiple-\fIV\|\fR line separation (e.\|g. double spacing) may be requested -with \fBls\fR. -.sc -Extra line-space. -If a word contains a vertically tall construct requiring -the output line containing it to have extra vertical space -before and\(slor after it, -the \fIextra-line-space\fR function \fB\ex\fI\'N\|\|\'\fR -can be imbedded in or attached to that word. -In this and other functions having a pair of delimiters around -their parameter (here \fB\'\fR\|), -the delimiter choice is arbitrary, -except that it can't look like the continuation of a number expression for \fIN\fR. -If \fIN\fR is negative, -the output line containing the word will -be preceded by \fIN\fR extra vertical space; -if \fIN\fR is positive, -the output line containing the word -will be followed by \fIN\fR extra vertical space. -If successive requests for extra space apply to the same line, -the maximum values are used. -The most recently utilized post-line extra line-space is available in the \fB.a\fR register. -.sc -Blocks of vertical space. -A block of vertical space is ordinarily requested using \fBsp\fR, -which honors the \fIno-space\fR mode and which does -not space \fIpast\fR a trap. -A contiguous block of vertical space may be reserved using \fBsv\fR. -.h1 -.bt -\fB&vs\fI\|N\fR 1\(sl6in;12pts previous E,\fBp\fR Set vertical base-line spacing size \fIV\fR. -Transient \fIextra\fR vertical space available with \fB\ex\fI\'N\|\|\'\fR (see above). -.bt -\fB&ls\fI\|N\fR \fIN\(eq\^\fR1 previous E \fILine\fR spacing -set to \fI\(+-N\fR. -\fIN\(mi\fR1 \fIV\fR\^s \fI(blank lines)\fR are -appended to each output text line. -Appended blank lines are omitted, if the text or previous appended blank line reached a trap position. -.bt -\fB&sp\fI|N\fR - \fIN\fR\(eq1\fIV\fR B,\fBv\fR Space vertically in \fIeither\fR direction. -If \fIN\fR is negative, the motion is \fIbackward\fR (upward) -and is limited to the distance to the top of the page. -Forward (downward) motion is truncated to the distance to the -nearest trap. -If the no-space mode is on, -no spacing occurs (see \fBns\fR, and \fBrs\fR below). -.bt -\fB&sv\fI|N\fR - \fIN\(eq\fR1\fIV\fR \fBv\fR Save a contiguous vertical block of size \fIN\fR. -If the distance to the next trap is greater -than \fIN\fR, \fIN\fR vertical space is output. -No-space mode has \fIno\fR effect. -If this distance is less than \fIN\fR, -no vertical space is immediately output, -but \fIN\fR is remembered for later output (see \fBos\fR). -Subsequent \fBsv\fR requests will overwrite any still remembered \fIN\fR. -.bt -\fB&os\fR - - - Output saved vertical space. -No-space mode has \fIno\fR effect. -Used to finally output a block of vertical space requested -by an earlier \fBsv\fR request. -.bt -\fB&ns\fR space - D No-space mode turned on. -When on, the no-space mode inhibits \fBsp\fR requests and -\fBbp\fR requests \fIwithout\fR a next page number. -The no-space mode is turned off when a line of -output occurs, or with \fBrs\fR. -.bt -\fB&rs\fR space - D Restore spacing. -The no-space mode is turned off. -.bt -Blank|text|line. - B Causes a break and -output of a blank line exactly like \fBsp|1\fR. //GO.SYSIN DD m1 echo m2 sed 's/.//' >m2 <<'//GO.SYSIN DD m2' -.tr | -.rm mx -.br -.mh -Line Length and Indenting -.pg -The maximum line length for fill mode may be set with \fBll\fR. -The indent may be set with \fBin\fR; -an indent applicable to \fIonly\fR the \fInext\fR output line may be set with \fBti\fR. -The line length includes indent space but \fInot\fR -page offset space. -The line-length minus the indent is the basis for centering with \fBce\fR. -The effect of \fBll\fR, \fBin\fR, or \fBti\fR -is delayed, if a partially collected line exists, -until after that line is output. -In fill mode the length of text on an output line is less than or equal to -the line length minus the indent. -The current line length and indent are available in registers \fB.l\fR and \fB.i\fR respectively. -The length of \fIthree-part titles\fR produced by \fBtl\fR -(see \(sc14) is \fIindependently\fR set by \fBlt\fR. -.h1 -.bt -\fB&ll\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Line length is set to \(+-\fIN\fR. -In \*(TR the maximum (line-length)+(page-offset) is about 7.54 inches. -.bt -\fB&in\fI|\(+-N\fR \fIN\(eq\^\fR0 previous B,E,\fBm\fR Indent is set to \fI\(+-N\fR. -The indent is prepended to each output line. -.bt -\fB&ti\fI|\(+-N\fR - ignored B,E,\fBm\fR Temporary indent. -The \fInext\fR output text line will be indented a distance \fI\(+-N\fR -with respect to the current indent. -The resulting total indent may not be negative. -The current indent is not changed. -.mh -Macros, Strings, Diversion, and Position Traps -.sc -Macros and strings. -A \fImacro\fR is a named set of arbitrary \fIlines\fR that may be invoked by name or -with a \fItrap\fR. -A \fIstring\fR is a named string of \fIcharacters\fR, -\fInot\fR including a newline character, -that may be interpolated by name at any point. -Request, macro, and string names share the \fIsame\fR name list. -Macro and string names -may be one or two characters long and may usurp previously defined -request, macro, or string names. -Any of these entities may be renamed with \fBrn\fR -or removed with \fBrm\fR. -Macros are created by \fBde\fR and \fBdi\fR, and appended to by \fBam\fR and \fBda\fR; -\fBdi\fR and \fBda\fR cause normal output to be stored in a macro. -Strings are created by \fBds\fR and appended to by \fBas\fR. -A macro is invoked in the same way as a request; -a control line beginning \fB.\fIxx\fR will interpolate the contents of macro \fIxx\fR. -The remainder of the line may contain up to nine \fIarguments\fR. -The strings \fIx\fR and \fIxx\fR are interpolated at any desired point with -\fB\e\(**\fIx\fR and \fB\e\(**(\fIxx\fR respectively. -String references and macro invocations may be nested. -.sc -Copy mode input interpretation. -During the definition and extension -of strings and macros (not by diversion) -the input is read in \fIcopy mode\fR. -The input is copied without interpretation -\fIexcept\fR that: -.x1 -.ds + \v'-.1m'\s-4\(bu\s+4\v'+.1m' -\*+ The contents of number registers indicated by \fB\en\fR are interpolated. -\*+ Strings indicated by \fB\e\(**\fR are interpolated. -\*+ Arguments indicated by \fB\e$\fR are interpolated. -\*+ Concealed newlines indicated by \fB\e\fR(newline) are eliminated. -\*+ Comments indicated by \fB\e"\fR are eliminated. -\*+ \fB\et\fR and \fB\ea\fR are interpreted as \s-1ASCII\s+1 horizontal tab and \s-1SOH\s+1 respectively (\(sc9). -\*+ \fB\e\e\fR is interpreted as \fB\e\fR. -\*+ \fB\e.\fR is interpreted as "\fB.\fR". -.x2 -These interpretations can be suppressed by -prepending -a \fB\e\fR. -For example, since \fB\e\e\fR maps into a \fB\e\fR, \fB\e\en\fR will copy as \fB\en\fR which -will be interpreted as a number register indicator when the -macro or string is reread. -.sc -Arguments. -When a macro is invoked by name, the remainder of the line is -taken to contain up to nine arguments. -The argument separator is the space character, and arguments -may be surrounded by double-quotes to permit imbedded space characters. -Pairs of double-quotes may be imbedded in double-quoted arguments to -represent a single double-quote. -If the desired arguments won't fit on a line, -a concealed newline may be used to continue on the next line. -.pg -When a macro is invoked the \fIinput level\fR is \fIpushed down\fR and -any arguments available at the previous level become unavailable -until the macro is completely read and the previous level is restored. -A macro's own arguments can be interpolated at \fIany\fR point -within the macro with \fB\e$\fIN\fR, which interpolates the \fIN\fR\^th -argument -(1\(<=\fIN\fR\^\(<=9). -If an invoked argument doesn't exist, -a null string results. -For example, the macro \fIxx\fR may be defined by -.x1 -.ftB -.ta .75i -&de xx \e"begin definition -Today is \e\e$1 the \e\e$2. -&. \e"end definition -.ftR -.x2 -and called by -.x1 -.ftB -&xx Monday 14th -.ftR -.x2 -to produce the text -.x1 -.ftB -Today is Monday the 14th. -.ftR -.x2 -Note that the \fB\e$\fR -was concealed in the definition with a prepended \fB\e\fR. -The number of currently available -arguments is in the \fB.$\fR register. -.pg -No arguments are available at the top (non-macro) level -in this implementation. -Because string referencing is implemented -as a input-level push down, -no arguments are available from \fIwithin\fR a string. -No arguments are available within a trap-invoked macro. -.pg -Arguments are copied in \fIcopy mode\fR onto a stack -where they are available for reference. -The mechanism does not allow an argument to contain -a direct reference to a \fIlong\fR string -(interpolated at copy time) and it is advisable to -conceal string references (with an extra \fB\e\fR\|) -to delay interpolation until argument reference time. -.sc -Diversions. -Processed output may be diverted into a macro for purposes -such as footnote processing (see Tutorial \(scT5) -or determining the horizontal and vertical size of some text for -conditional changing of pages or columns. -A single diversion trap may be set at a specified vertical position. -The number registers \fBdn\fR and \fBdl\fR respectively contain the -vertical and horizontal size of the most -recently ended diversion. -Processed text that is diverted into a macro -retains the vertical size of each of its lines when reread -in \fInofill\fR mode -regardless of the current \fIV\fR. -Constant-spaced (\fBcs\fR) or emboldened (\fBbd\fR) text that is diverted -can be reread correctly only if these modes are again or still in effect -at reread time. -One way to do this is to imbed in the diversion the appropriate -\fBcs\fR or \fBbd\fR requests with the \fItransparent\fR -mechanism described in \(sc10.6. -.pg -Diversions may be nested -and certain parameters and registers -are associated -with the current diversion level -(the top non-diversion level may be thought of as the -0th diversion level). -These are the diversion trap and associated macro, -no-space mode, -the internally-saved marked place (see \fBmk\fR and \fBrt\fR), -the current vertical place (\fB.d\fR register), -the current high-water text base-line (\fB.h\fR register), -and the current diversion name (\fB.z\fR register). -.sc -Traps. -Three types of trap mechanisms are available\(empage traps, a diversion trap, and -an input-line-count trap. -Macro-invocation traps may be planted using \fBwh\fR at any page position including the top. -This trap position may be changed using \fBch\fR. -Trap positions at or below the bottom of the page -have no effect unless or until -moved to within the page or rendered effective by an increase in page length. -Two traps may be planted at the \fIsame\fR position only by first planting them at different -positions and then moving one of the traps; -the first planted trap will conceal the second unless and until the first one is moved -(see Tutorial Examples \(scT5). -If the first one is moved back, it again conceals the second trap. -The macro associated with a page trap is automatically -invoked when a line of text is output whose vertical size \fIreaches\fR -or \fIsweeps past\fR the trap position. -Reaching the bottom of a page springs the top-of-page trap, if any, -provided there is a next page. -The distance to the next trap position is available in the \fB.t\fR register; -if there are no traps between the current position and the bottom of the page, -the distance returned is the distance to the page bottom. -.pg -A macro-invocation trap effective in the current diversion may be planted using \fBdt\fR. -The \fB.t\fR register works in a diversion; if there is no subsequent trap a \fIlarge\fR -distance is returned. -For a description of input-line-count traps, see \fBit\fR below. -.h1 -.bt -\fB&de\fI|xx|yy\fR - \fI.yy=\fB..\fR - Define or redefine the macro \fIxx\fR. -The contents of the macro begin on the next input line. -Input lines are copied in \fIcopy mode\fR until the definition is terminated by a -line beginning with \fB.\fIyy\fR, -whereupon the macro \fIyy\fR is called. -In the absence of \fIyy\fR, the definition -is terminated by a -line beginning with "\fB..\fR". -A macro may contain \fBde\fR requests -provided the terminating macros differ -or the contained definition terminator is concealed. -\&"\fB..\fR" can be concealed as -\fB\e\e..\fR which will copy as \fB\e..\fR and be reread as "\fB..\fR". -.bt -\fB&am\fI|xx|yy\fR - \fI.yy=\fB..\fR - Append to macro (append version of \fBde\fR). -.bt -\fB&ds\fI|xx|string\fR - ignored - Define a string -\fIxx\fR containing \fIstring\fR. -Any initial double-quote in \fIstring\fR is stripped off to permit -initial blanks. -.bt -\fB&as\fI|xx|string\fR - ignored - Append -\fIstring\fR to string \fIxx\fR -(append version of \fBds\fR). -.bt -\fB&rm\fI|xx\fR - ignored - Remove -request, macro, or string. -The name \fIxx\fR is removed from the name list and -any related storage space is freed. -Subsequent references will have no effect. -.bt -\fB&rn\fI|xx|yy\fR - ignored - Rename request, macro, or string -\fIxx\fR to \fIyy\fR. -If \fIyy\fR exists, it is first removed. -.bt -\fB&di|\fIxx\fR - end D Divert output to macro \fIxx\fR. -Normal text processing occurs during diversion -except that page offsetting is not done. -The diversion ends when the request \fBdi\fR or \fBda\fR is encountered without an argument; -extraneous -requests of this type should not appear when nested diversions are being used. -.bt -\fB&da|\fIxx\fR - end D Divert, appending to \fIxx\fR -(append version of \fBdi\fR). -.bt -\fB&wh\fI|N|xx\fR - - \fBv\fR Install -a trap to invoke \fIxx\fR at page position \fIN;\fR -a \fInegative N\fR will be interpreted with respect to the -page \fIbottom\fR. -Any macro previously planted at \fIN\fR is replaced by \fIxx\fR. -A zero \fIN\fR refers to the \fItop\fR of a page. -In the absence of \fIxx\fR, the first found trap at \fIN\fR, if any, is removed. -.bt -\fB&ch\fI|xx|N\fR - - \fBv\fR Change -the trap position for macro \fIxx\fR to be \fIN\fR. -In the absence of \fIN\fR, the trap, if any, is removed. -.bt -\fB&dt\fI|N|xx\fR - off D,\fBv\fR Install a diversion trap -at position \fIN\fR in the \fIcurrent\fR diversion to invoke -macro \fIxx\fR. -Another \fBdt\fR will redefine the diversion trap. -If no arguments are given, the diversion trap is removed. -.bt -\fB&it\fI|N|xx\fR - off E Set an input-line-count trap -to invoke the macro \fIxx\fR after \fIN\fR lines of \fItext\fR input -have been read -(control or request lines don't count). -The text may be in-line text or -text interpolated by inline or trap-invoked macros. -.bt -\fB&em\fI|xx\fR none none - The -macro \fIxx\fR will be invoked -when all input has ended. -The effect is the same as if the contents of \fIxx\fR had been at the end -of the last file processed. -.mh -Number Registers -.pg -A variety of parameters are available to the user as -predefined, named \fInumber registers\fR (see Summary and Index, page 7). -In addition, the user may define his own named registers. -Register names are one or two characters long and \fIdo not\fR conflict -with request, macro, or string names. -Except for certain predefined read-only registers, -a number register can be read, written, automatically -incremented or decremented, and interpolated -into the input in a variety of formats. -One common use of user-defined registers is to -automatically number sections, paragraphs, lines, etc. -A number register may be used any time numerical input is expected or desired -and may be used in numerical \fIexpressions\fR (\(sc1.4). -.pg -Number registers are created and modified using \fBnr\fR, which -specifies the name, numerical value, and the auto-increment size. -Registers are also modified, if accessed -with an auto-incrementing sequence. -If the registers \fIx\fR and \fIxx\fR both contain -\fIN\fR and have the auto-increment size \fIM\fR, -the following access sequences have the effect shown: -.TS -center box; -c2|c2|c -c2|c2|c2 -l2|c2|c2 -l2|c2|c2 -l2|l2|c2. - Effect on Value -Sequence Register Interpolated -_ -\fB\en\fIx\fR none \fIN\fR -\fB\en(\fIxx\fR none \fIN\fR -\fB\en+\fIx\fR \fIx\fR incremented by \fIM\fR \fIN+M\fR -\fB\en\-\fIx\fR \fIx\fR decremented by \fIM\fR \fIN\-M\fR -\fB\en+(\fIxx\fR \fIxx\fR incremented by \fIM\fR \fIN+M\fR -\fB\en\-(\fIxx\fR \fIxx\fR decremented by \fIM\fR \fIN\-M\fR -.TE -When interpolated, a number register is converted to -decimal (default), -decimal with leading zeros, -lower-case Roman, -upper-case Roman, -lower-case sequential alphabetic, -or -upper-case sequential alphabetic -according to the format specified by \fBaf\fR. -.h1 -.bt -\fB&nr\fI|R|\(+-N|M\fR - \fBu\fR \ -The number register \fIR\fR is assigned the value \fI\(+-N\fR -with respect to the previous value, if any. -The increment for auto-incrementing is set to \fIM\fR. -.bt -\fB&af\fI|R|c\fR arabic - - Assign format \fIc\fR to register \fIR\fR. -The available formats are: -.TS -center box; -c2|c -c2|c -c2|l. - Numbering -Format Sequence -_ -\fB1\fR 0,1,2,3,4,5,... -\fB001\fR 000,001,002,003,004,005,... -\fBi\fR 0,i,ii,iii,iv,v,... -\fBI\fR 0,I,II,III,IV,V,... -\fBa\fR 0,a,b,c,...,z,aa,ab,...,zz,aaa,... -\fBA\fR 0,A,B,C,...,Z,AA,AB,...,ZZ,AAA,... -.TE -An arabic format having \fIN\fR digits -specifies a field width of \fIN\fR digits (example 2 above). -The read-only registers and the \fIwidth\fR function (\(sc11.2) -are always arabic. -.bt -\fB&rr\fI|R\fR - ignored - Remove register \fIR\fR. -If many registers are being created dynamically, it -may become necessary to remove no longer used registers -to recapture internal storage space for newer registers. //GO.SYSIN DD m2 echo m3 sed 's/.//' >m3 <<'//GO.SYSIN DD m3' -.tr | -.rm mx -.mh -Tabs, Leaders, and Fields -.sc -Tabs and leaders. -The \s-1ASCII\s+1 horizontal tab character and the \s-1ASCII\s+1 -\s-1SOH\s+1 (hereafter known as the \fIleader\fR character) -can both be used to generate either horizontal motion or -a string of repeated characters. -The length of the generated entity is governed -by internal \fItab stops\fR specifiable -with \fBta\fR. -The default difference is that tabs generate motion and leaders generate -a string of periods; -\fBtc\fR and \fBlc\fR -offer the choice of repeated character or motion. -There are three types of internal tab stops\(em\ -\fIleft\fR adjusting, \fIright\fR adjusting, -and \fIcentering\fR. -In the following table: -\fID\fR is the distance from the current position on the \fIinput\fR line -(where a tab or leader was found) -to the next tab stop; -\fInext-string\fR consists -of the input characters following the tab (or leader) up to the next tab (or leader) or end of line; -and -\fIW\fR is the width of \fInext-string\fR. -.TS -center box; -c2|c2|c -c2|c2|c -c2|c2|l. -Tab Length of motion or Location of -type repeated characters \fInext-string\fR -_ -Left \fID\fR Following \fID\fR -Right \fID\-W\fR Right adjusted within \fID\fR -Centered \fID\-W\(sl\fR2 Centered on right end of \fID\fR -.TE -The length of generated motion is allowed to be negative, but -that of a repeated character string cannot be. -Repeated character strings contain an integer number of characters, and -any residual distance is prepended as motion. -Tabs or leaders found after the last tab stop are ignored, but may be used -as \fInext-string\fR terminators. -.pg -Tabs and leaders are not interpreted in \fIcopy mode\fR. -\fB\et\fR and \fB\ea\fR always generate a non-interpreted -tab and leader respectively, and -are equivalent to actual tabs and leaders in \fIcopy mode\fR. -.sc -Fields. -A \fIfield\fR is contained between -a \fIpair\fR of \fIfield delimiter\fR characters, -and consists of sub-strings -separated by \fIpadding\fR indicator characters. -The field length is the distance on the -\fIinput\fR line from the position where the field begins to the next tab stop. -The difference between the total length of all the sub-strings -and the field length is incorporated as horizontal -padding space that is divided among the indicated -padding places. -The incorporated padding is allowed to be negative. -For example, -if the field delimiter is \fB#\fR and the padding indicator is \fB^\fR, -\fB#^\fIxxx\fB^\fIright\|\fB#\fR -specifies a right-adjusted string with the string \fIxxx\fR centered -in the remaining space. -.h1 -.bt -\fB&ta\fI|Nt|...\fR 0.8;|0.5in none E,\fBm\fR \ -Set tab stops and types. -\fIt=\fBR\fR, right adjusting; -\fIt=\fBC\fR, centering; -\fIt\fR absent, left adjusting. -\*(TR tab stops are preset every 0.5in.; -\*(NR every 0.8in. -The stop values are separated by spaces, and -a value preceded by \fB+\fR -is treated as an increment to the previous stop value. -.bt -\fB&tc\fI|c\fR none none E \ -The tab repetition character becomes \fIc\fR, -or is removed specifying motion. -.bt -\fB&lc\fI|c\fR \fB.\fR none E \ -The leader repetition character becomes \fIc\fR, -or is removed specifying motion. -.bt -\fB&fc\fI|a|b\fR off off - \ -The field delimiter is set to \fIa\fR; -the padding indicator is set to the \fIspace\fR character or to -\fIb\fR, if given. -In the absence of arguments the field mechanism is turned off. -.mh -Input and Output Conventions and Character Translations -.sc -Input character translations. -Ways of inputting the graphic character set were -discussed in \(sc2.1. -The \s-1ASCII\s+1 control characters horizontal tab (\(sc9.1), -\s-1SOH\s+1 (\(sc9.1), and backspace (\(sc10.3) are discussed elsewhere. -The newline delimits input lines. -In addition, -\s-1STX\s+1, \s-1ETX\s+1, \s-1ENQ\s+1, \s-1ACK\s+1, and \s-1BEL\s+1 -are accepted, -and may be used as delimiters or translated into a graphic with \fBtr\fR (\(sc10.5). -\fIAll\fR others are ignored. -.pg -The \fIescape\fR character \fB\e\fR -introduces \fIescape sequences\fR\(em\ -causes the following character to mean -another character, or to indicate -some function. -A complete list of such sequences is given in the Summary and Index on page 6. -\fB\e\fR -should not be confused with the \s-1ASCII\s+1 control character \s-1ESC\s+1 of the -same name. -The escape character \fB\e\fR can be input with the sequence \fB\e\e\fR. -The escape character can be changed with \fBec\fR, -and all that has been said about the default \fB\e\fR becomes true -for the new escape character. -\fB\ee\fR can be used to print whatever the current escape character is. -If necessary or convenient, the escape mechanism may be turned off with \fBeo\fR, -and restored with \fBec\fR. -.h1 -.bt -\fB&ec\fI|c\fR \fB\e\fR \fB\e\fR - \ -Set escape character to \fB\e\fR, or to \fIc\fR, if given. -.bt -\fB&eo\fR on - - Turn escape mechanism off. -.sc -Ligatures. -.lg0 -Five ligatures are available -in the current \*(TR character set \(em -\fB\(fi\fR, \fB\(fl\fR, \fB\(ff\fR, \fB\(Fi\fR, and \fB\(Fl\fR. -They may be input (even in \*(NR) by -\fB\e(fi\fR, \fB\e(fl\fR, \fB\e(ff\fR, \fB\e(Fi\fR, and \fB\e(Fl\fR respectively. -.lg -The ligature mode is normally on in \*(TR, and \fIautomatically\fR invokes -ligatures during input. -.h1 -.bt -\fB&lg\fI|N\fR off;|on on - Ligature mode -is turned on if \fIN\fR is absent or non-zero, -and turned off if \fIN\(eq\^\fR0. -If \fIN\fR\(eq\^2, only the two-character ligatures are automatically invoked. -Ligature mode is inhibited for -request, macro, string, register, or file names, -and in \fIcopy mode\fR. -No effect in \*(NR. -.sc -Backspacing, underlining, overstriking, etc. -Unless in \fIcopy mode\fR, the \s-1ASCII\s+1 backspace character is replaced -by a backward horizontal motion having the width of the -space character. -Underlining as a form of line-drawing is discussed in \(sc12.4. -A generalized overstriking function is described in \(sc12.1. -.pg -\*(NR automatically underlines -characters in the \fIunderline\fR font, -specifiable with \fBuf\fR, -normally that on font position 2 (normally Times Italic, see \(sc2.2). -In addition to \fBft\fR and \fB\ef\fIF\fR, -the underline font may be selected by \fBul\fR and \fBcu\fR. -Underlining is restricted to an output-device-dependent -subset of \fIreasonable\fR characters. -.h1 -.bt -\fB&ul\fI|N\fR off \fIN\(eq\fR1 E \ -Underline in \*(NR (italicize in \*(TR) the next \fIN\fR -input text lines. -Actually, switch to \fIunderline\fR font, saving the -current font for later restoration; -\fIother\fR font changes within the span of a \fBul\fR -will take effect, -but the restoration will undo the last change. -Output generated by \fBtl\fR (\(sc14) \fIis\fR affected by the -font change, but does \fInot\fR decrement \fIN\fR. -If \fIN\fR\^>\^1, there is the risk that -a trap interpolated macro may provide text -lines within the span; -environment switching can prevent this. -.bt -\fB&cu\fI|N\fR off \fIN\(eq\fR1 E \ -A variant of \fBul\fR that causes \fIevery\fR character to be underlined in \*(NR. -Identical to \fBul\fR in \*(TR. -.bt -\fB&uf\fI|F\fR Italic Italic - \ -Underline font set to \fIF\fR. -In \*(NR, -\fIF\fR may \fInot\fR be on position 1 (initially Times Roman). -.sc -Control characters. -Both the control character \fB.\fR and the \fIno-break\fR -control character \fB\'\fR may be changed, if desired. -Such a change must be compatible with the design -of any macros used in the span of the change, -and -particularly of any trap-invoked macros. -.h1 -.bt -\fB&cc\fI|c\fR \fB.\fR \fB.\fR E \ -The basic control character is set to \fIc\fR, -or reset to "\fB.\fR". -.bt -\fB&c2\fI|c\fR \fB\' \'\fR E The \fInobreak\fR control character is set -to \fIc\fR, or reset to "\fB\'\fR". -.sc -Output translation. -One character can be made a stand-in for another character using \fBtr\fR. -All text processing (e. g. character comparisons) takes place -with the input (stand-in) character which appears to have the width of the final -character. -The graphic translation occurs at the moment of output -(including diversion). -.h1 -.bt -\fB&tr\fI|abcd....\fR none - O Translate \ -\fIa\fR into \fIb\fR, \fIc\fR into \fId\fR, etc. -If an odd number of characters is given, -the last one will be mapped into the space character. -To be consistent, a particular translation -must stay in effect from \fIinput\fR to \fIoutput\fR time. -.sc -Transparent throughput. -An input line beginning with a \fB\e!\fR is read in \fIcopy mode\fR and \fItransparently\fR output -(without the initial \fB\e!\fR); -the text processor is otherwise unaware of the line's presence. -This mechanism may be used to pass control information to a post-processor -or to imbed control lines in a macro created by a diversion. -.sc -Comments and concealed newlines. -An uncomfortably long input line that must stay -one line (e. g. a string definition, or nofilled text) -can be split into many physical lines by ending all but -the last one with the escape \fB\e\fR. -The sequence \fB\e\fR(newline) is \fIalways\fR ignored\(em\ -except in a comment. -Comments may be imbedded at the \fIend\fR of any line by -prefacing them with \fB\e"\fR. -The newline at the end of a comment cannot be concealed. -A line beginning with \fB\e"\fR will appear as a blank line and -behave like \fB.sp|1\fR; -a comment can be on a line by itself by beginning the line with \fB.\e"\fR. -.mh -Local Horizontal and Vertical Motions, and the Width Function -.sc -Local Motions. -The functions \fB\ev\'\fIN\fB\|\'\fR and -\fB\eh\'\fIN\fB\|\'\fR -can be used for \fIlocal\fR vertical and horizontal motion respectively. -The distance \fIN\fR may be negative; the \fIpositive\fR directions -are \fIrightward\fR and \fIdownward\fR. -A \fIlocal\fR motion is one contained \fIwithin\fR a line. -To avoid unexpected vertical dislocations, it is necessary that -the \fInet\fR vertical local motion within a word in filled text -and otherwise within a line balance to zero. -The above and certain other escape sequences providing local motion are -summarized in the following table. -.tr || -.ds X \0\0\0 -.TS -center box; -c2|cs2||c2|cs2 -c1|c2c2||c2|c2c2. -Vertical Effect in Horizontal Effect in -Local Motion \*(TR \*(NR Local Motion \*(TR \*(NR -_ -.sp.4 -.TC -l2|ls2||l2|ls2. -\fB\*X\ev\'\fIN\|\^\fB\'\fR Move distance \fIN\fR \ -\fB\*X\eh\'\fIN\|\^\fB\'\fR Move distance \fIN\fR -.TC -_2|_2_2||l2|ls2. -x x x \fB\*X\e\fR(space) Unpaddable space-size space -.TC -l2|l2|l2||l2|ls2. -\fB\*X\eu\fR \(12 em up \(12 line up \fB\*X\e0\fR Digit-size space -.TC -l2|l2|l2||_2|_2_2. -\fB\*X\ed\fR \(12 em down \(12 line down x x x -.TC -l2|l2|l2||l2|l2|l2. -\fB\*X\er\fR 1 em up 1 line up \fB\*X\e\||\fR 1\(sl6 em space ignored - \fB\*X\e^\fR 1\(sl12 em space ignored -.sp.4 -.TE -.rm X -.tr | -As an example, -\fBE\s-2\v'-.4m'2\v'.4m'\s+2\fR -could be generated by the sequence -\fBE\es\-2\ev\'\-0.4m\'2\ev\'0.4m\'\es+2\fR; -it should be noted in this example that -the 0.4|em vertical motions are at the smaller size. -.sc -Width Function. -The \fIwidth\fR function \fB\ew\'\fIstring\fB\|\'\fR -generates the numerical width of \fIstring\fR (in basic units). -Size and font changes may be safely imbedded in \fIstring\fR, -and will not affect the current environment. -For example, -\&\fB.ti|\-\\w\'1.|\'u\fR could be used to -temporarily indent leftward a distance equal to the -size of the string "\fB1.|\fR". -.pg -The width function also sets three number registers. -The registers \fBst\fR and \fBsb\fR are set respectively to the highest and -lowest extent of \fIstring\fR relative to the baseline; -then, for example, -the total \fIheight\fR of the string is \fB\en(stu\-\en(sbu\fR. -In \*(TR the number register \fBct\fR is set to a value -between 0|and|3: -0 means that all of the characters in \fIstring\fR were short lower -case characters without descenders (like \fBe\fR); -1 means that at least one character has a descender (like \fBy\fR); -2 means that at least one character is tall (like \fBH\fR); -and 3 means that both tall characters and characters with -descenders are present. -.sc -Mark horizontal place. -The escape sequence \fB\ek\fIx\fR will cause the \fIcurrent\fR horizontal -position in the \fIinput line\fR to be stored in register \fIx\fR. -As an example, -the construction \fB\ekx\fIword\|\fB\eh\'\|~\|\enxu+2u\'\fIword\fB\fR -will embolden \fIword\fR by backing up to almost its beginning and overprinting it, -resulting in \kz\fIword\fR\h'|\nzu+2u'\fIword\fR. -.mh -Overstrike, Bracket, Line-drawing, and Zero-width Functions -.sc -Overstriking. -Automatically centered overstriking of up to nine characters -is provided by the \fIoverstrike\fR function -\fB\eo\'\fIstring\fB\|\'\fR. -The characters in \fIstring\fR overprinted with centers aligned; the total width -is that of the widest character. -\fIstring\fR should \fInot\fR contain local vertical motion. -As examples, -\fB\eo\'e\e\'\'\fR produces \fB\o'e\''\fR, and -\fB\eo\'\e(mo\e(sl\'\fR produces \fB\o'\(mo\(sl'\fR. -.sc -Zero-width characters. -The function \fB\ez\fIc\fR will output \fIc\fR without spacing over -it, and can be used to produce left-aligned overstruck -combinations. -As examples, -\fB\ez\e(ci\e(pl\fR will produce \fB\z\(ci\(pl\fR, and -\fB\e(br\ez\e(rn\e(ul\e(br\fR will produce the smallest possible -constructed box \fB\(br\z\(rn\(ul\(br\fR\|. -.sc -Large Brackets. -The Special Mathematical Font contains a number of bracket construction pieces -(\|\|\(lt\|\|\(lb\|\|\(rt\|\|\(rb\|\|\(lk\|\|\(rk\|\|\(bv\|\|\(lf\|\|\(rf\|\|\(lc\|\|\(rc\|\|) -that can be combined into various bracket styles. -The function \fB\eb\'\fIstring\fB\|\'\fR may be used to pile -up vertically the characters in \fIstring\fR -(the first character on top and the last at the bottom); -the characters are vertically separated by 1|em and the total -pile is centered 1\(sl2\|em above the current baseline -(\(12 line in \*(NR). -For example, -\fB\eb\'\|\e(lc\e(lf\|\'E\e\|~\|\eb\'\|\e(rc\e(rf\|\'\|\ex\'\|\-0.5m\'\|\ex\'0.5m\'\|\fR -produces -\x'-.5m'\x'.5m'\fB\b'\(lc\(lf'E\|\b'\(rc\(rf'\fR. -.sc -Line drawing. -.tr && -The function \fB\e\|l\|\'\fINc\fB\|\'\fR will draw a string of repeated \fIc\fR\|'s towards the right for a distance \fIN\fR. -(\|\fB\el\fR is \fB\e\fR(lower case L). -If \fIc\fR looks like a continuation of -an expression for \fIN\fR, it may insulated from \fIN\fR with a \fB\e&\fR. -If \fIc\fR is not specified, the \fB\(ru\fR (baseline rule) is used -(underline character in \*(NR). -If \fIN\fR is negative, a backward horizontal motion -of size \fIN\fR is made \fIbefore\fR drawing the string. -Any space resulting from \fIN\fR\|\(sl(size of \fIc\fR) having a remainder is put at the beginning (left end) -of the string. -In the case of characters -that are designed to be connected such as -baseline-rule\ \fB\(ru\fR\|, -underrule\ \fB\(ul\fR\|, -and -root-en\ \fB\(rn\fR\|, -the remainder space is covered by over-lapping. -If \fIN\fR is \fIless\fR than the width of \fIc\fR, -a single \fIc\fR is centered on a distance \fIN\fR. -As an example, a macro to underscore a string can be written -.br -.tr &. -.x1 -.ftB -.ne 2.1 -&de us -\e\e$1\e\|l\|\'\|~\|0\e(ul\' -&& -.ftR -.x2 -.ne2.1 -.de xu -\\$1\l'|0\(ul' -.. -or one to draw a box around a string -.x1 -.ftB -&de bx -\e(br\e\|~\|\e\e$1\e\|~\|\e(br\e\|l\|\'\|~\|0\e(rn\'\e\|l\|\'\|~\|0\e(ul\' -&& -.ftR -.x2 -.de bx -\(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul' -.. -such that -.x1 -.ftB -&ul "underlined words" -.ftR -.x2 -and -.x1 -.ftB -&bx "words in a box" -.ftR -.x2 -yield -.xu "underlined words" -and -.bx "words in a box" -\h'-\w'.'u'. -.pg -The function \fB\eL\'\|\fINc\fB\|\'\fR will draw a vertical line consisting -of the (optional) character \fIc\fR stacked vertically apart 1\|em -(1 line in \*(NR), -with the first two characters overlapped, -if necessary, to form a continuous line. -The default character is the \fIbox rule\fR |\(br| (\fB\|\e(br\fR); -the other suitable character is the \fIbold vertical\fR \|\(bv\| (\fB\|\e(bv\fR). -The line is begun without any initial motion relative to the -current base line. -A positive \fIN\fR specifies a line drawn downward and -a negative \fIN\fR specifies a line drawn upward. -After the line is drawn \fIno\fR compensating -motions are made; -the instantaneous baseline is at the \fIend\fR of the line. -.pg -.de eb -.sp -1 -.nf -\h'-.5n'\L'|\\nzu-1'\l'\\n(.lu+1n\(ul'\L'-|\\nzu+1'\l'|0u-.5n\(ul' -.fi -.. -.ne 2i -.mk z -The horizontal and vertical line drawing functions may be used -in combination to produce large boxes. -The zero-width \fIbox-rule\fR and the \(12-em wide \fIunderrule\fR -were \fIdesigned\fR to form corners when using 1-em vertical -spacings. -For example the macro -.x1 -.ftB -\&.de eb -\&.sp \-1 \e"compensate for next automatic base-line spacing -\&.nf \e"avoid possibly overflowing word buffer -.tr || -\&\eh\'\-.5n\'\eL\'\||\|\e\enau\-1\'\el\'\e\en(.lu+1n\e(ul\'\eL\'\-\||\|\e\enau+1\'\el\'\||\|0u\-.5n\e(ul\' \e"draw box -.tr | -.lg0 -\&.fi -.lg -\&.. -.ftR -.x2 -will draw a box around some text whose beginning vertical place was -saved in number register \fIa\fR -(e. g. using \fB.mk|a\fR) -as done for this paragraph. -.eb //GO.SYSIN DD m3 echo m4 sed 's/.//' >m4 <<'//GO.SYSIN DD m4' -.tr | -.mh -Hyphenation. -.pg -The automatic hyphenation may be switched off and on. -When switched on with \fBhy\fR, -several variants may be set. -A \fIhyphenation indicator\fR character may be imbedded in a word to -specify desired hyphenation points, -or may be prepended to suppress hyphenation. -In addition, -the user may specify a small exception word list. -.pg -Only words that consist of a central alphabetic string -surrounded by (usually null) non-alphabetic strings -are considered candidates for automatic hyphenation. -Words that were input containing hyphens -(minus), -em-dashes (\fB\e(em\fR), -or hyphenation indicator characters\ -\(emsuch as mother-in-law\(em\ -are \fIalways\fR subject to splitting after those characters, -whether or not automatic hyphenation is on or off. -.h1 -.bt -\fB&nh\fR hyphenate - E \ -Automatic hyphenation is turned off. -.bt -\fB&hy\fIN\fR on,\fIN=\fR1 on,\fIN=\fR1 E \ -Automatic hyphenation is turned on -for \fIN\fR\|\(>=1, or off for \fIN=\fR\|0. -If \fIN=\fR\|2, \fIlast\fR lines (ones that will cause a trap) -are not hyphenated. -For \fIN=\fR\|4 and 8, the last and first two characters -respectively of a word are not split off. -These values are additive; -i.|e. \fIN=\fR\|14 will invoke all three restrictions. -.bt -\fB&hc\fI|c\fR \fB\e% \e%\fR E Hyphenation indicator character is set -to \fIc\fR or to the default \fB\e%\fR. -The indicator does not appear in the output. -.bt -\fB&hw\fI|word1|...\fR ignored - Specify hyphenation points in words -with imbedded minus signs. -Versions of a word with terminal \fIs\fR are implied; -i.|e. \fIdig\-it\fR implies \fIdig\-its\fR. -This list is examined initially \fIand\fR after -each suffix stripping. -The space available is small\(emabout 128 characters. -.mh -Three Part Titles. -.pg -The titling function \fBtl\fR provides for automatic placement -of three fields at the left, center, and right of a line -with a title-length -specifiable with \fBlt\fR. -\fBtl\fR may be used anywhere, and is independent of the -normal text collecting process. -A common use is in header and footer macros. -.h1 -.bt -\fB&tl\fI|\'left\|\'center\|\'right\|\'\fR - - \ -The strings \fIleft\fR, \fIcenter\fR, and \fIright\fR are -respectively left-adjusted, centered, and right-adjusted -in the current title-length. -Any of the strings may be empty, -and overlapping is permitted. -If the page-number character (initially \fB%\fR) is found within any of the fields it is replaced -by the current page number having the format assigned to register \fB%\fR. -Any character may be used as the string delimiter. -.bt -\fB&pc\fI|c\fR \fB%\fR off - The page number character is set to \fIc\fR, -or removed. -The page-number register remains \fB%\fR. -.bt -\fB<\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Length of title set to \fI\(+-N\fR. -The line-length and the title-length are \fIindependent\fR. -Indents do not apply to titles; page-offsets do. -.mh -Output Line Numbering. -.pg -.ll -\w'0000'u -.nm 1 3 -Automatic sequence numbering of output lines may be -requested with \fBnm\fR. -When in effect, -a three-digit, arabic number plus a digit-space -is prepended to output text lines. -The text lines are thus offset by four digit-spaces, -and otherwise retain their line length; -a reduction in line length may be desired to keep the right margin -aligned with an earlier margin. -Blank lines, other vertical spaces, and lines generated by \fBtl\fR -are \fInot\fR numbered. -Numbering can be temporarily suspended with \fBnn\fR, -or with an \fB.nm\fR followed by a later \fB.nm|+0\fR. -In addition, -a line number indent \fII\fR, and the number-text separation \fIS\fR -may be specified in digit-spaces. -Further, it can be specified that only those line numbers that are -multiples of some number \fIM\fR are to be printed (the others will appear -as blank number fields). -.br -.nm -.ll -.h1 -.bt -\fB&nm\fI|\(+-N|M|S|I\fR off E \ -Line number mode. -If \fI\(+-N\fR is given, -line numbering is turned on, -and the next output line numbered is numbered \fI\(+-N\fR. -Default values are \fIM=\fR\|1, \fIS=\fR\|1, and \fII=\fR\|0. -Parameters corresponding to missing arguments are unaffected; -a non-numeric argument is considered missing. -In the absence of all arguments, numbering is turned off; -the next line number is preserved for possible further use -in number register \fBln\fR. -.bt -\fB&nn\fI|N\fR - \fIN=\fR1 E The next \fIN\fR text output lines are not -numbered. -.pg -.ll -\w'0000'u -.nm +0 -As an example, the paragraph portions of this section -are numbered with \fIM=\fR\|3: -\&\fB.nm|1|3\fR was placed at the beginning; -\&\fB.nm\fR was placed at the end of the first paragraph; -and \fB.nm|+0\fR was placed in front of this paragraph; -and \fB.nm\fR finally placed at the end. -Line lengths were also changed (by \fB\ew\'0000\'u\fR) to keep the right side aligned. -Another example is -\&\fB.nm|+5|5|x|3\fR which turns on numbering with the line number of the next -line to be 5 greater than the last numbered line, -with \fIM=\fR\|5, with spacing \fIS\fR untouched, and with the indent \fII\fR set to 3. -.br -.ll -.nm -.mh -Conditional Acceptance of Input -.pg -In the following, -\fIc\fR is a one-character, built-in \fIcondition\fR name, -\fB!\fR signifies \fInot\fR, -\fIN\fR is a numerical expression, -\fIstring1\fR and \fIstring2\fR are strings delimited by any non-blank, non-numeric character \fInot\fR in the strings, -and -\fIanything\fR represents what is conditionally accepted. -.h1 -.bt -\fB&if\fI|c|anything\fR - - If condition \fIc\fR true, accept \fIanything\fR as input; -in multi-line case use \fI\e{anything\|\e}\fR. -.bt -\fB&if|!\fIc|anything\fR - - If condition \fIc\fR false, accept \fIanything\fR. -.bt -\fB&if\fI|N|anything\fR - \fBu\fR If expression \fIN\fR > 0, accept \fIanything\fR. -.bt -\fB&if|!\fIN|anything\fR - \fBu\fR If expression \fIN\fR \(<= 0, accept \fIanything\fR. -.bt -\fB&if\fI|\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR identical to \fIstring2\fR, -accept \fIanything\fR. -.bt -\fB&if|!\fI\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR not identical to \fIstring2\fR, -accept \fIanything\fR. -.bt -\fB&ie\fI|c|anything\fR - \fBu\fR If portion of if-else; all above forms (like \fBif\fR). -.bt -\fB&el\fI|anything\fR - - Else portion of if-else. -.pg -The built-in condition names are: -.TS -center box; -c2|c2 -c2|c2 -c2|l2. -Condition -Name True If -_ -\fBo\fR Current page number is odd -\fBe\fR Current page number is even -\fBt\fR Formatter is \*(TR -\fBn\fR Formatter is \*(NR -.TE -If the condition \fIc\fR is \fItrue\fR, or if the number \fIN\fR is greater than zero, -or if the strings compare identically (including motions and character size and font), -\fIanything\fR is accepted as input. -If a \fB!\fR precedes the condition, number, or string comparison, -the sense of the acceptance is reversed. -.pg -Any spaces between the condition and the beginning of \fIanything\fR are skipped over. -The \fIanything\fR can be either a single input line (text, macro, or whatever) -or a number of input lines. -In the multi-line case, -the first line must begin with a left delimiter \fB\e{\fR and -the last line must end with a right delimiter \fB\e}\fR. -.pg -The request \fBie\fR (if-else) is identical to \fBif\fR -except that the acceptance state is remembered. -A subsequent and matching \fBel\fR (else) request then uses the reverse sense of that state. -\fBie\fR|-|\fBel\fR pairs may be nested. -.pg -Some examples are: -.x1 -.ftB -.ne 1 -&if e .tl \'\|Even Page %\'\'\' -.ftR -.x2 -which outputs a title if the page number is even; and -.x1 -.ftB -.ne 3.1 -&ie \en%>1 \e{\e -\&\'sp 0.5i -&tl \'\|Page %\'\'\' -\&\'sp ~\|1.2i|\e} -&el .sp ~\|2.5i -.ftR -.x2 -which treats page 1 differently from other pages. -.mh -Environment Switching. -.pg -A number of the parameters that -control the text processing are gathered together into an -\fIenvironment\fR, which can be switched by the user. -The environment parameters are those associated -with requests noting E in their \fINotes\fR column; -in addition, partially collected lines and words are in the environment. -Everything else is global; examples are page-oriented parameters, -diversion-oriented parameters, number registers, and macro and string definitions. -All environments are initialized with default parameter values. -.h1 -.bt -\fB&ev\fI|N\fR \fIN\(eq\fR0 previous - Environment switched to -environment 0\(<=\fIN\fR\(<=2. -Switching is done in push-down fashion so that -restoring a previous environment \fImust\fR be done with \fB.ev\fR -rather than specific reference. -.mh -Insertions from the Standard Input -.pg -The input can be temporarily switched to the system \fIstandard input\fR -with \fBrd\fR, -which will switch back when \fItwo\fR newlines -in a row are found (the \fIextra\fR blank line is not used). -This mechanism is intended for insertions in form-letter-like documentation. -On \s-1UNIX\s+1, the \fIstandard input\fR can be the user's keyboard, -a \fIpipe\fR, or a \fIfile\fR. -.h1 -.bt -\fB&rd\fI|prompt\fR - \fIprompt=\fR\s-1BEL\s+1 - \ -Read insertion from the standard input until two newlines in a row are found. -If the standard input is the user's keyboard, \fIprompt\fR (or a \s-1BEL\s+1) -is written onto the user's terminal. -\fBrd\fR behaves like a macro, -and arguments may be placed after \fIprompt\fR. -.bt -\fB&ex\fR - - - Exit from \*(NR\(sl\*(TR. -Text processing is terminated exactly as if all input had ended. -.pg -If insertions are to be -taken from the terminal keyboard \fIwhile\fR output is being printed -on the terminal, the command line option \fB\-q\fR will turn off the echoing -of keyboard input and prompt only with \s-1BEL\s+1. -The regular input and insertion input \fIcannot\fR -simultaneously come from the standard input. -.pg -As an example, -multiple copies of a form letter may be prepared by entering the insertions -for all the copies in one file to be used as the standard input, -and causing the file containing the letter to reinvoke itself using \fBnx\fR (\(sc19); -the process would ultimately be ended by an \fBex\fR in the insertion file. -.mh -Input\(slOutput File Switching -.h1 -.bt -\fB&so\fI|filename\fR - - Switch source file. -The top input (file reading) level is switched to \fIfilename\fR. -The effect of an \fBso\fR encountered in a macro -is not felt until the input level returns to the file level. -When the new file ends, -input is again taken from the original file. -\fBso\fR's may be nested. -.bt -\fB&nx\fI|filename\fR end-of-file - Next file is \fIfilename\fR. -The current file is considered ended, and the input is immediately switched -to \fIfilename\fR. -.bt -\fB&pi\fI|program\fR - - Pipe output to \fIprogram\fR (\*(NR only). -This request must occur \fIbefore\fR any printing occurs. -No arguments are transmitted to \fIprogram\fR. -.mh -Miscellaneous -.pg -.h1 -.bt -.mc \s12\(br\s0 -\fB&mc\fI|c|N\fR - off E,\fBm\fR \ -Specifies that a \fImargin\fR character \fIc\fR appear a distance -\fIN\fR to the right of the right margin -after each non-empty text line (except those produced by \fBtl\fR). -If the output line is too-long (as can happen in nofill mode) -the character will be appended to the line. -If \fIN\fR is not given, the previous \fIN\fR is used; the initial \fIN\fR is -0.2|inches in \*(NR and 1\|em in \*(TR. -The margin character used with this paragraph was a 12-point box-rule. -.br -.mc -.bt -\fB&tm\fI|string\fR - newline - \ -After skipping initial blanks, \fIstring\fR (rest of the line) is read in \fIcopy mode\fR -and written on the user's terminal. -.bt -\fB&ig\fI|yy\fR - \fI.yy=\fB..\fR - Ignore \ -input lines. -\fBig\fR behaves exactly like \fBde\fR (\(sc7) except that the -input is discarded. -The input is read in \fIcopy mode\fR, and any auto-incremented -registers will be affected. -.bt -\fB&pm\fI|t\fR - all - \ -Print macros. -The names and sizes of all of the defined macros and strings are printed -on the user's terminal; -if \fIt\fR is given, only the total of the sizes is printed. -The sizes is given in \fIblocks\fR -of 128 characters. -.bt -.lg0 -\fB&fl\fR - - B \c -.lg -Flush output buffer. -Used in interactive debugging to force output. -.mh -Output and Error Messages. -.pg -The output from \fBtm\fR, \fBpm\fR, and the prompt from \fBrd\fR, -as well as various \fIerror\fR messages are written onto -\s-1UNIX\s+1's \fIstandard message\fR output. -The latter is different from the \fIstandard output\fR, -where \*(NR formatted output goes. -By default, both are written onto the user's terminal, -but they can be independently redirected. -.pg -Various \fIerror\fR conditions may occur during -the operation of \*(NR and \*(TR. -Certain less serious errors having only local impact do not -cause processing to terminate. -Two examples are \fIword overflow\fR, caused by a word that is too large -to fit into the word buffer (in fill mode), and -\fIline overflow\fR, caused by an output line that grew too large -to fit in the line buffer; -in both cases, a message is printed, the offending excess -is discarded, -and the affected word or line is marked at the point of truncation -with a \(** in \*(NR and a \(lh in \*(TR. -The philosophy is to continue processing, if possible, -on the grounds that output useful for debugging may be produced. -If a serious error occurs, processing terminates, -and an appropriate message is printed. -Examples are the inability to create, read, or write files, -and the exceeding of certain internal limits that -make future output unlikely to be useful. -.pg -.bp //GO.SYSIN DD m4 echo m5 sed 's/.//' >m5 <<'//GO.SYSIN DD m5' -.pn 27 -.ds H T -.tr | -.tr ~| -.de x1 -.xx -.ftB -.in .2i -.nf -.ne 2.1 -.ta 1i -.. -.de x2 -.fi -.in0 -.ftR -.xx -.. -.br -.ce -.ftB -.rs -.sp 0.5i -TUTORIAL EXAMPLES -.ftR -.sp2 -.nr p 0 -.2C -.ns -.mh -.mk -Introduction -.pg -Although \*(NR and \*(TR -have by design a syntax reminiscent -of earlier text processors* -.fn -.xx -*For example: -P.|A.|Crisman, Ed., -.ul -The Compatible Time-Sharing System, -MIT Press, 1965, Section|AH9.01 -(Description of RUNOFF program on MIT's CTSS system). -.ef -with the intent of easing their use, -it is almost always necessary to -prepare at least a small set of macro definitions -to describe most documents. -Such common formatting needs -as page margins and footnotes -are deliberately not built into \*(NR and \*(TR. -Instead, -the macro and string definition, number register, diversion, -environment switching, page-position trap, and conditional input mechanisms -provide the basis for user-defined implementations. -.pg -The examples to be discussed are intended to be useful and somewhat realistic, -but won't necessarily cover all relevant contingencies. -Explicit numerical parameters are used -in the examples -to make them easier to read and to -illustrate typical values. -In many cases, number registers would really be used -to reduce the number of places where numerical -information is kept, -and to concentrate conditional parameter initialization -like that which depends on whether \*(TR or \*(NR is being used. -.mh -Page Margins -.pg -As discussed in \(sc3, -\fIheader\fR and \fIfooter\fR macros are usually defined -to describe the top and bottom page margin areas respectively. -A trap is planted at page position 0 for the header, and at -\fI\-N\fR (\fIN\fR from the page bottom) for the footer. -The simplest such definitions might be -.x1 -&de hd \e"define header -\'sp 1i -&& \e"end definition -&de fo \e"define footer -\'bp -&& \e"end definition -&wh 0 hd -&wh \-1i fo -.x2 -which provide blank 1|inch top and bottom margins. -The header will occur on the \fIfirst\fR page, -only if the definition and trap exist prior to -the initial pseudo-page transition (\(sc3). -In fill mode, the output line that springs the footer trap -was typically forced out because some part or whole word didn't fit on it. -If anything in the footer and header that follows causes a \fIbreak\fR, -that word or part word will be forced out. -In this and other examples, -requests like \fBbp\fR and \fBsp\fR that normally cause breaks are invoked using -the \fIno-break\fR control character \fB\'\fR -to avoid this. -When the header\(slfooter design contains material -requiring independent text processing, the -environment may be switched, avoiding -most interaction with the running text. -.pg -A more realistic example would be -.x1 -&de hd \e"header -&if t .tl \'\|\e(rn\'\'\e(rn\' \e"troff cut mark -&if \e\en%>1 \e{\e -\'sp ~\|0.5i\-1 \e"tl base at 0.5i -&tl \'\'\- % \-\'\' \e"centered page number -&ps \e"restore size -&ft \e"restore font -&vs \e} \e"restore vs -\'sp ~\|1.0i \e"space to 1.0i -&ns \e"turn on no-space mode -&& -&de fo \e"footer -&ps 10 \e"set footer\(slheader size -&ft R \e"set font -&vs 12p \e"set base-line spacing -&if \e\en%=1 \e{\e -\'sp ~\|\e\en(.pu\-0.5i\-1 \e"tl base 0.5i up -&tl \'\'\- % \-\'\' \e} \e"first page number -\'bp -&& -&wh 0 hd -&wh \-1i fo -.x2 -which sets the size, font, and base-line spacing for the -header\(slfooter material, and ultimately restores them. -The material in this case is a page number at the bottom of the -first page and at the top of the remaining pages. -If \*(TR is used, a \fIcut mark\fR is drawn in the form -of \fIroot-en\fR's at each margin. -The \fBsp\fR's refer to absolute positions to avoid -dependence on the base-line spacing. -Another reason for this in the footer -is that the footer is invoked by printing a line whose -vertical spacing swept past the trap position by possibly -as much as the base-line spacing. -The \fIno-space\fR mode is turned on at the end of \fBhd\fR -to render ineffective -accidental occurrences of \fBsp\fR at the top of the running text. -.pg -The above method of restoring size, font, etc. presupposes -that such requests (that set \fIprevious\fR value) are \fInot\fR -used in the running text. -A better scheme is save and restore both the current \fIand\fR -previous values as shown for size in the following: -.x1 -&de fo -&nr s1 \e\en(.s \e"current size -&ps -&nr s2 \e\en(.s \e"previous size -& --- \e"rest of footer -&& -&de hd -& --- \e"header stuff -&ps \e\en(s2 \e"restore previous size -&ps \e\en(s1 \e"restore current size -&& -.x2 -Page numbers may be printed in the bottom margin -by a separate macro triggered during the footer's -page ejection: -.x1 -&de bn \e"bottom number -&tl \'\'\- % \-\'\' \e"centered page number -&& -&wh \-0.5i\-1v bn \e"tl base 0.5i up -.x2 -.mh -Paragraphs and Headings -.pg -The housekeeping -associated with starting a new paragraph should be collected -in a paragraph macro -that, for example, -does the desired preparagraph spacing, -forces the correct font, size, base-line spacing, and indent, -checks that enough space remains for \fImore than one\fR line, -and -requests a temporary indent. -.x1 -&de pg \e"paragraph -&br \e"break -&ft R \e"force font, -&ps 10 \e"size, -&vs 12p \e"spacing, -&in 0 \e"and indent -&sp 0.4 \e"prespace -&ne 1+\e\en(.Vu \e"want more than 1 line -&ti 0.2i \e"temp indent -&& -.x2 -The first break in \fBpg\fR -will force out any previous partial lines, -and must occur before the \fBvs\fR. -The forcing of font, etc. is -partly a defense against prior error and -partly to permit -things like section heading macros to -set parameters only once. -The prespacing parameter is suitable for \*(TR; -a larger space, at least as big as the output device vertical resolution, would be -more suitable in \*(NR. -The choice of remaining space to test for in the \fBne\fR -is the smallest amount greater than one line -(the \fB.V\fR is the available vertical resolution). -.pg -A macro to automatically number section headings -might look like: -.x1 -&de sc \e"section -& --- \e"force font, etc. -&sp 0.4 \e"prespace -&ne 2.4+\e\en(.Vu \e"want 2.4+ lines -.lg 0 -&fi -.lg -\e\en+S. -&& -&nr S 0 1 \e"init S -.x2 -The usage is \fB.sc\fR, -followed by the section heading text, -followed by \fB.pg\fR. -The \fBne\fR test value includes one line of heading, -0.4 line in the following \fBpg\fR, and -one line of the paragraph text. -A word consisting of the next section number and a period is -produced to begin the heading line. -The format of the number may be set by \fBaf\fR (\(sc8). -.pg -Another common form is the labeled, indented paragraph, -where the label protrudes left into the indent space. -.x1 -&de lp \e"labeled paragraph -&pg -&in 0.5i \e"paragraph indent -&ta 0.2i 0.5i \e"label, paragraph -&ti 0 -\et\e\e$1\et\ec \e"flow into paragraph -&& -.x2 -The intended usage is "\fB.lp\fR \fIlabel\fR\|"; -\fIlabel\fR will begin at 0.2\|inch, and -cannot exceed a length of 0.3\|inch without intruding into -the paragraph. -The label could be right adjusted against 0.4\|inch by -setting the tabs instead with \fB.ta|0.4iR|0.5i\fR. -The last line of \fBlp\fR ends with \fB\ec\fR so that -it will become a part of the first line of the text -that follows. -.mh -Multiple Column Output -.pg -The production of multiple column pages requires -the footer macro to decide whether it was -invoked by other than the last column, -so that it will begin a new column rather than -produce the bottom margin. -The header can initialize a column register that -the footer will increment and test. -The following is arranged for two columns, but -is easily modified for more. -.x1 -&de hd \e"header -& --- -&nr cl 0 1 \e"init column count -&mk \e"mark top of text -&& -&de fo \e"footer -&ie \e\en+(cl<2 \e{\e -&po +3.4i \e"next column; 3.1+0.3 -&rt \e"back to mark -&ns \e} \e"no-space mode -&el \e{\e -&po \e\enMu \e"restore left margin -& --- -\'bp \e} -&& -&ll 3.1i \e"column width -&nr M \e\en(.o \e"save left margin -.x2 -Typically a portion of the top of the first page -contains full width text; -the request for the narrower line length, -as well as another \fB.mk\fR would -be made where the two column output was to begin. -.mh -Footnote Processing -.pg -The footnote mechanism to be described is used by -imbedding the footnotes in the input text at the -point of reference, -demarcated by an initial \fB.fn\fR and a terminal \fB.ef\fR: -.x1 -&fn -\fIFootnote text and control lines...\fP -&ef -.x2 -In the following, -footnotes are processed in a separate environment and diverted -for later printing in the space immediately prior to the bottom -margin. -There is provision for the case where the last collected -footnote doesn't completely fit in the available space. -.x1 -&de hd \e"header -& --- -&nr x 0 1 \e"init footnote count -&nr y 0\-\e\enb \e"current footer place -&ch fo \-\e\enbu \e"reset footer trap -&if \e\en(dn .fz \e"leftover footnote -&& -&de fo \e"footer -&nr dn 0 \e"zero last diversion size -&if \e\enx \e{\e -&ev 1 \e"expand footnotes in ev1 -&nf \e"retain vertical size -&FN \e"footnotes -&rm FN \e"delete it -&if "\e\en(.z"fy" .di \e"end overflow diversion -&nr x 0 \e"disable fx -&ev \e} \e"pop environment -& --- -\'bp -&& -&de fx \e"process footnote overflow -&if \e\enx .di fy \e"divert overflow -&& -&de fn \e"start footnote -&da FN \e"divert (append) footnote -&ev 1 \e"in environment 1 -&if \e\en+x=1 .fs \e"if first, include separator -.lg0 -&fi \e"fill mode -.lg -&& -&de ef \e"end footnote -&br \e"finish output -&nr z \e\en(.v \e"save spacing -&ev \e"pop ev -&di \e"end diversion -&nr y \-\e\en(dn \e"new footer position, -&if \e\enx=1 .nr y \-(\e\en(.v\-\e\enz) \e - \e"uncertainty correction -&ch fo \e\enyu \e"y is negative -&if (\|\e\en(nl+1v)>(\|\e\en(.p+\e\eny) \e -&ch fo \e\en(nlu+1v \e"it didn't fit -&& -&de fs \e"separator -\el\'\|1i\' \e"1 inch rule -&br -&& -&de fz \e"get leftover footnote -&fn -&nf \e"retain vertical size -&fy \e"where fx put it -&ef -&& -&nr b 1.0i \e"bottom margin size -&wh 0 hd \e"header trap -&wh 12i fo \e"footer trap, temp position -&wh \-\e\enbu fx \e"fx at footer position -&ch fo \-\e\enbu \e"conceal fx with fo -.x2 -The header \fBhd\fR initializes a footnote count register \fBx\fR, -and sets both the current footer trap position register \fBy\fR and -the footer trap itself to a nominal position specified in -register \fBb\fR. -In addition, if the register \fBdn\fR indicates a leftover footnote, -\fBfz\fR is invoked to reprocess it. -The footnote start macro \fBfn\fR begins a diversion (append) in environment 1, -and increments the count \fBx\fR; if the count is one, the footnote separator \fBfs\fR -is interpolated. -The separator is kept in a separate macro to permit user redefinition. -The footnote end macro \fBef\fR restores -the previous environment and ends the diversion after saving the spacing size in register \fBz\fR. -\fBy\fR is then decremented by the size of the footnote, available in \fBdn\fR; -then on the first footnote, \fBy\fR is further decremented by the difference -in vertical base-line spacings of the two environments, to -prevent the late triggering the footer trap from causing the last -line of the combined footnotes to overflow. -The footer trap is then set to the lower (on the page) of \fBy\fR or the current page position (\fBnl\fR) -plus one line, to allow for printing the reference line. -If indicated by \fBx\fR, the footer \fBfo\fR rereads the footnotes from \fBFN\fR in nofill mode -in environment 1, -and deletes \fBFN\fR. -If the footnotes were too large to fit, the macro \fBfx\fR will be trap-invoked to redivert -the overflow into \fBfy\fR, -and the register \fBdn\fR will later indicate to the header whether \fBfy\fR is empty. -Both \fBfo\fR and \fBfx\fR are planted in the nominal footer trap position in an order -that causes \fBfx\fR to be concealed unless the \fBfo\fR trap is moved. -The footer then terminates the overflow diversion, if necessary, and -zeros \fBx\fR to disable \fBfx\fR, -because the uncertainty correction -together with a not-too-late triggering of the footer can result -in the footnote rereading finishing before reaching the \fBfx\fR trap. -.pg -A good exercise for the student is to combine the multiple-column and footnote mechanisms. -.mh -The Last Page -.pg -After the last input file has ended, \*(NR and \*(TR -invoke the \fIend macro\fR (\(sc7), if any, -and when it finishes, eject the remainder of the page. -During the eject, any traps encountered are processed normally. -At the \fIend\fR of this last page, processing terminates -\fIunless\fR a partial line, word, or partial word remains. -If it is desired that another page be started, the end-macro -.x1 -&de en \e"end-macro -\ec -\'bp -&& -&em en -.x2 -will deposit a null partial word, -and effect another last page. //GO.SYSIN DD m5 echo table1 sed 's/.//' >table1 <<'//GO.SYSIN DD table1' -.pn 31 -.rm mx -.br -.tr && -.tr || -.tr ~~ -.de aa -.nf -abcdefghijklmnopqrstuvwxyz -ABCDEFGHIJKLMNOPQRSTUVWXYZ -1234567890 -.ss9 -! $ % & ( ) ` ' * + \- . , / : ; = ? [ ] | -.fi -\(bu \(sq \(em \(hy \(ru \(14 \(12 \(34 \(fi \(fl \(ff -\(Fi \(Fl -\(de \(dg \(fm -\(ct \(rg \(co -.ss12 -.. -.de bb -.ss9 -.fi -.ll5i -" \' \e ^ \_ \` ~ \(sl < > { } # @ \(pl \(mi \(eq \(** -.br -\(*a \(*b \(*g \(*d \(*e \(*z \(*y \(*h \(*i \(*k \(*l \(*m -\(*n \(*c \(*o \(*p \(*r \(*s \(ts \(*t \(*u \(*f \(*x \(*q \(*w -.br -\(*G \(*D \(*H \(*L \(*C \(*P \(*S \(*U \(*F \(*Q \(*W -.br -\(sr \(rn \(>= \(<= \(== \(ap \(~= \(!= -\(-> \(<- \(ua \(da \(mu -\(di \(+- \(cu \(ca \(sb \(sp \(ib \(ip \(if \(pd -.br -\(sc \(gr \(no \(is \(pt \(es \(mo -\(dd \(rh \(lh \(bs \(or \(ci -\(lt \(lb \(rt \(rb \(lk \(rk \(bv \(lf \(rf \(lc \(rc -\(br -.br -.ss12 -.nf -.. -.nf -.ps12 -.vs 14p -.ft B -.ce -.sp 3 -Table I -.sp -.ce -Font Style Examples -.sp .5i -.ftR -.ps 10 -.fi -.vs 12p -.na -The following fonts are printed in 12-point, with a vertical spacing of 14-point, -and with -non-alphanumeric characters separated by \(14\|em space. -The Special Mathematical Font was specially prepared for Bell Laboratories -by Graphic Systems, Inc. of Hudson, New Hampshire. -The Times Roman, Italic, and Bold are -among the many standard fonts available from that company. -.sp.5i -.ps12 -.vs14p -.ftR -Times Roman -.sp.5 -.aa -.sp -.ftI -Times Italic -.sp.5 -.aa -.sp -.ftB -Times Bold -.sp.5 -.aa -.sp -.ftR -Special Mathematical Font -.sp.5 -.fi -.ll 5i -.bb //GO.SYSIN DD table1 echo table2 sed 's/.//' >table2 <<'//GO.SYSIN DD table2' -.pn32 -.sp 100 -.br -.de mx -.nf -.ftI -.ta .25iC .5i +.45i 3.25iC +.25i +.45i - Input Character Input Character - Char Name Name Char Name Name -.ftR -.sp.2 -.nr cl 0 -.mk -.. -.br -.tr ~~ -.nf -.ps12 -.vs 14p -.ft B -.ce -Table II -.sp -.ce2 -Input Naming Conventions for \', \`,and \- -and for Non-ASCII Special Characters -.sp .5i -.ftR -.ps10 -.vs12p -.ftB -.bd I 3 -Non-\s-1ASCII\s+1 characters and \fIminus\fP on the standard fonts. -.sp -.ftR -.de cl -.ie \\n+(cl<2 \{.po +3.0i -.rt \} -.el .sc -.. -.de sc -.po 26i/27u -.nr cl 0 -.. -.nr cl 0 1 -.de qq - \&' \' close quote - ` \` open quote - \(em \e(em 3\(sl4 Em dash - - \- hyphen or - \(hy \e(hy hyphen - \- \e\- current font minus - \(bu \e(bu bullet - \(sq \e(sq square - \(ru \e(ru rule - \(14 \e(14 1\(sl4 - \(12 \e(12 1\(sl2 - \(34 \e(34 3\(sl4 - \(fi \e(fi fi - \(fl \e(fl fl - \(ff \e(ff ff - \(Fi \e(Fi ffi - \(Fl \e(Fl ffl - \(de \e(de degree - \(dg \e(dg dagger - \(fm \e(fm foot mark - \(ct \e(ct cent sign - \(rg \e(rg registered - \(co \e(co copyright -.. -.di zz -.lg0 -.qq -.di -.lg -.mx -.nr aa \n(dn/2 -.ne \n(aau+1 -.nr bb \n(nl+\n(aa -.wh \n(bbu cl -.qq -.sp |\n(bbu -.ch cl 12i -.fi -.sp2 -.ftB -.bd I -Non-\s-1ASCII\s+1 characters and \', \`, \_\|, \(pl, \(mi, \(eq, and \(** on the special font. -.sp.4 -.ftR -.fi -.ps10 -The ASCII characters @, #, ", \', \`, <, >, \\, {, }, ~, ^, and \(ul exist -\fIonly\fR on the special font and are printed as a 1-em space if that font -is not mounted. -The following characters exist only on the special font except -for the upper case Greek letter names followed by \(dg which are mapped into -upper case English letters in -whatever font is mounted on font position one (default Times Roman). -The special math plus, minus, and equals are provided to -insulate the appearance of equations from the choice of standard fonts. -.bd I 3 -.nf -.ps10 -.sp -.de sc -.po 26i/27u -.nr cl 0 -'bp -.. -.ch cl \nmu-\n(.vu-1u -.mx -.lg 0 - \(pl \e(pl math plus - \(mi \e(mi math minus - \(eq \e(eq math equals - \(** \e(** math star - \(sc \e(sc section - \(aa \\(aa acute accent - \(ga \\(ga grave accent - \(ul \\(ul underrule - \(sl \\(sl slash (matching backslash) - \(*a \\(*a alpha - \(*b \\(*b beta - \(*g \\(*g gamma - \(*d \\(*d delta - \(*e \\(*e epsilon - \(*z \\(*z zeta - \(*y \\(*y eta - \(*h \\(*h theta - \(*i \\(*i iota - \(*k \\(*k kappa - \(*l \\(*l lambda - \(*m \\(*m mu - \(*n \\(*n nu - \(*c \\(*c xi - \(*o \\(*o omicron - \(*p \\(*p pi - \(*r \\(*r rho - \(*s \\(*s sigma - \(ts \\(ts terminal sigma - \(*t \\(*t tau - \(*u \\(*u upsilon - \(*f \\(*f phi - \(*x \\(*x chi - \(*q \\(*q psi - \(*w \\(*w omega - \(*A \\(*A Alpha\(dg - \(*B \\(*B Beta\(dg - \(*G \\(*G Gamma - \(*D \\(*D Delta - \(*E \\(*E Epsilon\(dg - \(*Z \\(*Z Zeta\(dg - \(*Y \\(*Y Eta\(dg - \(*H \\(*H Theta - \(*I \\(*I Iota\(dg - \(*K \\(*K Kappa\(dg - \(*L \\(*L Lambda - \(*M \\(*M Mu\(dg - \(*N \\(*N Nu\(dg - \(*C \\(*C Xi - \(*O \\(*O Omicron\(dg - \(*P \\(*P Pi - \(*R \\(*R Rho\(dg - \(*S \\(*S Sigma - \(*T \\(*T Tau\(dg - \(*U \\(*U Upsilon - \(*F \\(*F Phi - \(*X \\(*X Chi\(dg - \(*Q \\(*Q Psi - \(*W \\(*W Omega - \(sr \\(sr square root - \(rn \\(rn root en extender - \(>= \\(>= >= - \(<= \\(<= <= - \(== \\(== identically equal - \(~= \\(~= approx = - \(ap \\(ap approximates - \(!= \\(!= not equal - \(-> \\(\(mi> right arrow - \(<- \\(<\(mi left arrow - \(ua \\(ua up arrow - \(da \\(da down arrow - \(mu \\(mu multiply - \(di \\(di divide - \(+- \\(+\(mi plus-minus - \(cu \\(cu cup (union) - \(ca \\(ca cap (intersection) - \(sb \\(sb subset of - \(sp \\(sp superset of - \(ib \\(ib improper subset - \(ip \\(ip improper superset - \(if \\(if infinity - \(pd \\(pd partial derivative - \(gr \\(gr gradient - \(no \\(no not - \(is \\(is integral sign - \(pt \\(pt proportional to - \(es \\(es empty set - \(mo \\(mo member of - \(br \\(br box vertical rule - \(dd \\(dd double dagger - \(rh \\(rh right hand - \(lh \\(lh left hand - \(bs \\(bs Bell System logo - \(or \\(or or - \(ci \\(ci circle - \(lt \\(lt left top of big curly bracket - \(lb \\(lb left bottom - \(rt \\(rt right top - \(rb \\(rb right bot - \(lk \\(lk left center of big curly bracket - \(rk \\(rk right center of big curly bracket - \(bv \\(bv bold vertical - \(lf \\(lf left floor (left bottom of big - square bracket) - \(rf \\(rf right floor (right bottom) - \(lc \\(lc left ceiling (left top) - \(rc \\(rc right ceiling (right top) //GO.SYSIN DD table2 echo tprint sed 's/.//' >tprint <<'//GO.SYSIN DD tprint' -troff $* m.mac m0 -tbl m0a | troff $* m.mac - -tbl m[1234] | troff $* m.mac - -troff $* m.mac m5 -troff $* m.mac table1 -troff $* m.mac table2 -troff $* m.mac add //GO.SYSIN DD tprint