From: Joe Ossanna Date: Wed, 10 Jan 1979 20:22:07 +0000 (-0500) Subject: Research V7 development X-Git-Tag: Bell-32V^2~272 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/ea96ad973a703296421b1912c93e3ef819270a74?ds=sidebyside Research V7 development Work on file usr/doc/troff/tprint Work on file usr/doc/troff/m.mac Work on file usr/doc/troff/m0 Work on file usr/doc/troff/m0a Work on file usr/doc/troff/m1 Work on file usr/doc/troff/m2 Work on file usr/doc/troff/m3 Work on file usr/doc/troff/m4 Work on file usr/doc/troff/m5 Work on file usr/doc/troff/table2 Work on file usr/doc/troff/table1 Work on file usr/doc/troff/add Synthesized-from: v7 --- diff --git a/usr/doc/troff/add b/usr/doc/troff/add new file mode 100644 index 0000000000..2222950dac --- /dev/null +++ b/usr/doc/troff/add @@ -0,0 +1,99 @@ +.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. diff --git a/usr/doc/troff/m.mac b/usr/doc/troff/m.mac new file mode 100644 index 0000000000..5bc3917109 --- /dev/null +++ b/usr/doc/troff/m.mac @@ -0,0 +1,240 @@ +.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 +.. diff --git a/usr/doc/troff/m0 b/usr/doc/troff/m0 new file mode 100644 index 0000000000..4b40fe917d --- /dev/null +++ b/usr/doc/troff/m0 @@ -0,0 +1,244 @@ +.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 diff --git a/usr/doc/troff/m0a b/usr/doc/troff/m0a new file mode 100644 index 0000000000..af91886636 --- /dev/null +++ b/usr/doc/troff/m0a @@ -0,0 +1,549 @@ +.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 diff --git a/usr/doc/troff/m1 b/usr/doc/troff/m1 new file mode 100644 index 0000000000..38634d72ff --- /dev/null +++ b/usr/doc/troff/m1 @@ -0,0 +1,692 @@ +.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. diff --git a/usr/doc/troff/m2 b/usr/doc/troff/m2 new file mode 100644 index 0000000000..009f265911 --- /dev/null +++ b/usr/doc/troff/m2 @@ -0,0 +1,361 @@ +.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. diff --git a/usr/doc/troff/m3 b/usr/doc/troff/m3 new file mode 100644 index 0000000000..746faa2c2f --- /dev/null +++ b/usr/doc/troff/m3 @@ -0,0 +1,482 @@ +.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 diff --git a/usr/doc/troff/m4 b/usr/doc/troff/m4 new file mode 100644 index 0000000000..bc044417b5 --- /dev/null +++ b/usr/doc/troff/m4 @@ -0,0 +1,366 @@ +.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 diff --git a/usr/doc/troff/m5 b/usr/doc/troff/m5 new file mode 100644 index 0000000000..1b1957d6e5 --- /dev/null +++ b/usr/doc/troff/m5 @@ -0,0 +1,422 @@ +.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. diff --git a/usr/doc/troff/table1 b/usr/doc/troff/table1 new file mode 100644 index 0000000000..c1bd5c3c3a --- /dev/null +++ b/usr/doc/troff/table1 @@ -0,0 +1,90 @@ +.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 diff --git a/usr/doc/troff/table2 b/usr/doc/troff/table2 new file mode 100644 index 0000000000..b1e89fc918 --- /dev/null +++ b/usr/doc/troff/table2 @@ -0,0 +1,219 @@ +.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) diff --git a/usr/doc/troff/tprint b/usr/doc/troff/tprint new file mode 100755 index 0000000000..59494a546b --- /dev/null +++ b/usr/doc/troff/tprint @@ -0,0 +1,7 @@ +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