Annotation of researchv10dc/vol2/troff/man.ms, revision 1.1.1.1

1.1       root        1: .so ../ADM/mac
                      2: .XX troffref 187 "Troff User's Manual"
                      3: .nr *% \n(%#u+7u
                      4: .fp 8 C CW
                      5: .ds NR "\f2nroff\fP
                      6: .ds TR "\f2troff\fP
                      7: .ds Tr \f2Troff\fP
                      8: .ds Nr \f2Nroff\fP
                      9: .              \" CW - constant width font not from -ms
                     10: .de T&
                     11: .X "END US
                     12: .X "US T&
                     13: ..
                     14: .de CW
                     15: .nr PQ \\n(.f
                     16: .if \\n(.$=0 .ft CW
                     17: .if \\n(.$>0 \%\&\\$3\f(CW\\$1\\f\\n(PQ\\$2
                     18: ..
                     19: .de BI
                     20: .nr PQ \\n(.f
                     21: .if \\n(.$=0 .ft 4
                     22: .if \\n(.$>0 \%\&\\$3\f4\\$1\\f\\n(PQ\\$2
                     23: ..
                     24: .de UC
                     25: \\$3\s-2\\$1\s+2\\$2
                     26: ..
                     27: .am NH
                     28: .nr p \\np+1
                     29: .nr s 0 1
                     30: ..
                     31: .de sc
                     32: .LP
                     33: \f4\\np.\\n+s.\ \ \\$1\f1\0
                     34: ..
                     35: .de bt
                     36: .SP .25
                     37: .LP
                     38: .NE 2.1
                     39: .ta 1i 2i 3i 4i
                     40: \\$1   \\$2    \\$3    \\$4
                     41: .IP "" 0.8i
                     42: ....br
                     43: \\$5
                     44: ..
                     45: .
                     46: .
                     47: .
                     48: .
                     49: .EQ
                     50: delim @@
                     51: define cw % "\&" font CW %
                     52: .EN
                     53: .
                     54: .
                     55: .
                     56: .TL
                     57: Troff User's Manual\(dg
                     58: .AU
                     59: Joseph F. Ossanna
                     60: .br
                     61: Brian W. Kernighan
                     62: .AI
                     63: .MH
                     64: .SH
                     65: Introduction
                     66: .PP
                     67: \*(Tr and \*(NR are text processors 
                     68: that format text for typesetter- and
                     69: typewriter-like terminals, respectively.
                     70: They accept lines of text interspersed with lines of
                     71: format control information and
                     72: format the text into a printable, paginated document
                     73: having a user-designed style.
                     74: \*(Tr and \*(NR offer
                     75: unusual freedom in document styling:
                     76: arbitrary style headers and footers;
                     77: arbitrary style footnotes;
                     78: multiple automatic sequence numbering for paragraphs, sections, etc;
                     79: multiple column output;
                     80: dynamic font and point-size control;
                     81: arbitrary horizontal and vertical local motions at any point;
                     82: and
                     83: a family of automatic overstriking, bracket construction, and
                     84: line-drawing functions.
                     85: .
                     86: .de TL
                     87: .LP
                     88: .ce
                     89: .ps +2
                     90: .ft B
                     91: ..
                     92: .
                     93: .FS
                     94: \(dgThis is a version of |reference(v7man troff reference) revised by B. W. Kernighan.
                     95: .FE
                     96: .PP
                     97: .I Troff
                     98: produces its output in a device-independent form,
                     99: although parameterized for a specific device;
                    100: \*(TR output must be processed by a driver for that
                    101: device to produce printed output.
                    102: .PP
                    103: \*(Tr and \*(NR are highly compatible with each other and it is almost always
                    104: possible to prepare input acceptable to both.
                    105: Conditional input is provided that enables
                    106: the user to embed input expressly destined for either program.
                    107: \*(Nr can prepare output directly for a variety of terminal types and
                    108: is capable of utilizing the full resolution of each terminal.
                    109: A warning for the future, however:
                    110: \*(NR
                    111: is near the end of its useful life,
                    112: and it is not supported or maintained.
                    113: There has been no attempt to add modern 
                    114: \*(TR
                    115: features to
                    116: \*(NR .
                    117: .SH
                    118: Background to the Second Edition
                    119: .PP
                    120: \*(Tr
                    121: was originally written by the late Joe Ossanna
                    122: in about 1973, in assembly language for the
                    123: .UC PDP -11,
                    124: to drive the Graphic Systems CAT typesetter.
                    125: It was rewritten in C around 1975,
                    126: and underwent slow but steady evolution until
                    127: Ossanna's death late in 1977.
                    128: .PP
                    129: In 1979, Brian Kernighan
                    130: modified
                    131: \*(TR
                    132: so that it would produce output for a variety of typesetters,
                    133: while retaining its input specifications.
                    134: Over the decade from 1979 to 1989,
                    135: the internals
                    136: have been modestly revised,
                    137: though much of the code remains as it was when Ossanna wrote it.
                    138: .PP
                    139: \*(Tr
                    140: reads parameter files
                    141: each time it is invoked, to
                    142: set values for machine resolution,
                    143: legal type sizes and fonts, and character names,
                    144: character widths
                    145: and the like.
                    146: \*(Tr
                    147: output is
                    148: .UC ASCII
                    149: characters
                    150: in a simple language
                    151: that describes where each character is to be placed
                    152: and in what size and font.
                    153: A post-processor must be written for each device
                    154: to convert this typesetter-independent language
                    155: into specific instructions for that device.
                    156: .PP
                    157: The output language contains information that was not readily
                    158: identifiable in the older output.
                    159: Most notably, the beginning of each page and line
                    160: is marked,
                    161: so post-processors can do device-specific optimizations
                    162: such as sorting the data vertically or printing it boustrophedonically,
                    163: independent of
                    164: \*(TR.
                    165: .PP
                    166: Capabilities for graphics have been added.
                    167: \*(TR
                    168: now recognizes commands for drawing diagonal lines,
                    169: circles, ellipses, circular arcs,
                    170: and quadratic B-splines;
                    171: there are also ways to pass arbitrary information to the output
                    172: unprocessed by
                    173: \*(TR.
                    174: .PP
                    175: A number of limitations have been eased or eliminated.
                    176: A document may have an arbitrary number of fonts on any page
                    177: (if the output device permits it, of course).
                    178: Fonts may be accessed merely by naming them;
                    179: ``mounting'' is no longer necessary.
                    180: There are no limits on the number of characters.
                    181: \H'8'Character height\H'10' and \S'-1'sl\S'0'a\S'1'nt\S'0' may be set
                    182: independently of width.
                    183: .PP
                    184: The remainder of this document contains a description of
                    185: usage and command-line options;
                    186: a summary of requests, escape sequences, and pre-defined number registers;
                    187: a reference manual;
                    188: tutorial examples;
                    189: and a list of commonly-available characters.
                    190: .SH
                    191: Acknowledgements
                    192: .PP
                    193: Joe Ossanna's
                    194: \*(TR
                    195: remains a remarkable accomplishment.
                    196: For fifteen years, it has proven a robust tool,
                    197: taking unbelievable abuse from a variety of preprocessors
                    198: and being forced into uses that were never conceived of
                    199: in the original design,
                    200: all with considerable grace under fire.
                    201: .PP
                    202: The current version of \*(TR has profited from
                    203: significant code improvements by
                    204: Jaap Akkerhuis, Dennis Ritchie, Ken Thompson, and Molly Wagner.
                    205: Andrew Hume, Doug McIlroy, and Ravi Sethi made valuable suggestions on the manual.
                    206: I fear that the remaining bugs are my fault.
                    207: .SH
                    208: References
                    209: .LP
                    210: |reference_placement
                    211: .sp 100
                    212: .BP
                    213: .TL
                    214: Usage
                    215: .SP
                    216: .PP
                    217: \*(Tr or \*(NR is invoked as
                    218: .P1
                    219: troff  \fIoptions  files\fP
                    220: nroff  \fIoptions  files\fP
                    221: .P2
                    222: where @options@ represents any of a number of option arguments
                    223: and @files@ represents the list of files containing the document
                    224: to be formatted.
                    225: An argument consisting of a single minus
                    226: .CW - ' `
                    227: is taken to be
                    228: a filename corresponding to the standard input.
                    229: If no filenames are given input is taken from the standard input.
                    230: The options, which may appear in any order so long as they appear
                    231: before the files, are:
                    232: .TS
                    233: center;
                    234: lfCW lw(4.5i).
                    235: -m@name@       T{
                    236: Read the macro file
                    237: @cw /usr/lib/tmac. name@
                    238: before the input @files@.
                    239: T}
                    240: -T@name@       T{
                    241: Specifies
                    242: the type of the output device.
                    243: Specific devices are site-dependent.
                    244: For
                    245: \*(TR,
                    246: useful names include
                    247: .CW post
                    248: (Postscript, the default),
                    249: .CW 202
                    250: (Linotron 202), and
                    251: .CW aps 
                    252: (Autologic APS-5).
                    253: For
                    254: \*(NR ,
                    255: useful names include
                    256: @cw "37"@ for the (default) Model 37 Teletype\(rg,
                    257: @cw "450"@ for the \s-1DASI\s+1-450 (Diablo Hyterm),
                    258: @cw lp@ for ``dumb'' line printer terminals (no half-line motions,
                    259: no reverse motions,
                    260: and @cw think@ for the HP ThinkJet printer.
                    261: T}
                    262: -i     T{
                    263: Read standard input after the input files are exhausted.
                    264: T}
                    265: -o@list@       T{
                    266: Print only pages whose page numbers appear in @list@,
                    267: which consists of comma-separated numbers and number ranges.
                    268: A number range has the form @N-M@
                    269: and means pages @N@ through @M@;
                    270: a initial @-N@ means
                    271: from the beginning to page @N@; and a final @N-@ means
                    272: from @N@ to the end.
                    273: T}
                    274: -n@N@  T{
                    275: Number first generated page @N@.
                    276: T}
                    277: -r@aN@ T{
                    278: Set number register @a@ (one-character) to @N@.
                    279: T}
                    280: -s@N@  T{
                    281: Stop every @N@ pages.
                    282: \*(Nr will halt prior to every @N@ pages (default @N=1@)
                    283: to allow paper loading or
                    284: changing, and will resume upon receipt of a newline.
                    285: \*(Tr will include a ``pause'' code every @N@ pages;
                    286: its meaning, if any, depends on the output device.
                    287: T}
                    288: -u@N@  T{
                    289: Set amount of emboldening for the
                    290: .CW bd
                    291: request to @N@.
                    292: T}
                    293: -F@path@       T{
                    294: Look in directory @path@ for font information;
                    295: default is
                    296: .CW /usr/lib/font
                    297: for \*(TR
                    298: and
                    299: .CW /usr/lib/term
                    300: for \*(NR.
                    301: T}
                    302: .sp .5
                    303:        T{
                    304:                   \*(TR Only
                    305: T}
                    306: -a     T{
                    307: Send a printable \s-1(ASCII)\s+1 approximation
                    308: of the results to the standard output.
                    309: T}
                    310: .sp .5
                    311:        T{
                    312:                   \*(NR Only
                    313: T}
                    314: -e     T{
                    315: Produce equally-spaced words in adjusted
                    316: lines, using full terminal resolution.
                    317: T}
                    318: -h     T{
                    319: Use tabs instead of spaces
                    320: to speed up printing.
                    321: T}
                    322: -q     T{
                    323: Invoke the simultaneous input-output mode of the @cw rd@ request.
                    324: T}
                    325: .TE
                    326: .PP
                    327: Each option is a separate argument;
                    328: for example,
                    329: .P1
                    330: troff -Tpost -ms -o4,6,8-10 @file1 ~ file2@
                    331: .P2
                    332: requests formatting of pages 4, 6, and 8 through 10 of a document contained in the files
                    333: named @file1@ and @file2@,
                    334: specifies the output device as a Postscript printer,
                    335: and invokes the macro package
                    336: .CW -ms .
                    337: .PP
                    338: Various pre- and post-processors are available for use with \*(NR and \*(TR.
                    339: These include the equation preprocessor
                    340: .I eqn
                    341: (for \*(TR only),
                    342: the table-construction preprocessor
                    343: .I tbl ,
                    344: and
                    345: .I pic ,
                    346: .I ideal ,
                    347: and
                    348: .I grap
                    349: for various forms of graphics.
                    350: A reverse-line postprocessor
                    351: .I col
                    352: is available for multiple-column \*(NR output on terminals without reverse-line ability;
                    353: .I col
                    354: expects the Model 37 Teletype
                    355: escape sequences that \*(NR produces by default.
                    356: .sp 100
                    357: .BP
                    358: .TL
                    359: Request Summary
                    360: .PP
                    361: In the following table,
                    362: the notation @+- N@ in the
                    363: .BI "Request Form
                    364: column means that the forms @N@, @+N@, or @-N@ are permitted,
                    365: to set the parameter to @N@, increment it by @N@, or decrement it by @N@,
                    366: respectively.
                    367: Plain @N@ means that the value is used to set the parameter.
                    368: .BI "Initial Values
                    369: separated by 
                    370: .CW ;
                    371: are for
                    372: \*(TR
                    373: and
                    374: \*(NR
                    375: respectively.
                    376: In the 
                    377: .BI Notes
                    378: column,
                    379: .TS
                    380: center;
                    381: c lw(4.5i).
                    382: B      T{
                    383: Request normally causes a break.
                    384: The use of
                    385: .CW ' \&
                    386: as control character (instead of
                    387: .CW . )\&
                    388: suppresses the break function.
                    389: T}
                    390: D      T{
                    391: Mode or relevant parameters associated with current diversion level.
                    392: T}
                    393: E      T{
                    394: Relevant parameters are a part of the current environment.
                    395: T}
                    396: O      T{
                    397: Must stay in effect until logical output.
                    398: T}
                    399: P      T{
                    400: Mode must be still or again in effect at the time of physical output.
                    401: T}
                    402: T      T{
                    403: \*(TR only; no effect in \*(NR.
                    404: T}
                    405: @bold v@, @bold p@, @bold m@, @bold u@ T{
                    406: Default scale indicator; if not specified, scale indicators are ignored.
                    407: T}
                    408: .TE
                    409: .sp
                    410: .tr &.
                    411: .ps 9
                    412: .vs 11
                    413: .nr z 0 1
                    414: .TS
                    415: lf4 lf4 lf4 lf4 lf4
                    416: lf4 lf4 lf4 lf4 lf4
                    417: lfCW l l l l.
                    418: Request        Initial If No
                    419: Form   Value   Argument        Notes   Explanation
                    420: .sp .5
                    421: .T&
                    422: lf3 s s s s.
                    423: \\n+z.  General Information
                    424: .sp .5
                    425: .T&
                    426: lf3 s s s s
                    427: lfCW l l l l.
                    428: \\n+z.  Font and Character Size Control
                    429: .sp .5
                    430: &ps @+- N@     10 point        previous        E,T     Point size; also @cw "\es" +- N@.
                    431: &ss @N@        12/36\fBm\fP    ignored E,T     Space-character size set to @N/36@ em.
                    432: &cs @ F~N~ M@  off     -       P,T     Constant character space (width) mode (font @F@).
                    433: &bd @F~N@      off     -       P,T     Embolden font @F@ by @N-1@ units.
                    434: &bd S@~F~N@    off     -       P,T     Embolden Special Font when current font is @F@.
                    435: &ft@~F@        Roman   previous        E       Change to font @F@; also @cw "\ef" x@, @cw "\ef(" xx@, @cw "\ef" N@.
                    436: &fp@~N~F~L@    R,I,B,...,S     ignored -       Mount font named @F@ on physical position @N>=1@;
                    437:                                  long name is @L@ if given.
                    438: .sp .5
                    439: .T&
                    440: lf3 s s s s
                    441: lfCW l l l l.
                    442: \\n+z.  Page Control
                    443: &pl @+- N@     11i     11i     @bold v@        Page length.
                    444: &bp @+- N@     @N=1@   -       B,@bold v@      Eject current page; next page number @N@.
                    445: &pn @+- N@     @N=1@   ignored -       Next page number @N@.
                    446: &po @+- N@     1i; 0   previous        @bold v@        Page offset.
                    447: &ne @N@        -       @N=1 roman v@   D,@bold v@      Need @N@ vertical space.
                    448: &mk @R@        none    internal        D       Mark current vertical place in register @R@.
                    449: &rt @+- N@     none    internal        D,@bold v@      Return (upward only) to marked vertical place.
                    450: .sp .5
                    451: .T&
                    452: lf3 s s s s
                    453: lfCW l l l l.
                    454: \\n+z.  Text Filling, Adjusting, and Centering
                    455: &br    -       -       B       Break.
                    456: &fi    fill    -       B,E     Fill output lines.
                    457: &nf    fill    -       B,E     No filling or adjusting of output lines.
                    458: &ad @c@        adj, both       adjust  E       Adjust output lines with mode @c@;  @c = cw l , cw r , cw c , cw b , none@
                    459: &na    adjust  -       E       No output line adjusting.
                    460: &ce @N@        off     @N=1@   B,E     Center next @N@ input text lines.
                    461: .sp .5
                    462: .T&
                    463: lf3 s s s s
                    464: lfCW l l l l.
                    465: \\n+z.  Vertical Spacing
                    466: &vs @N@        12p; 1/6i       previous        E,@bold p@      Vertical baseline spacing (@V@).
                    467: &ls @N@        @N=1@   previous        E       Output @N-1@ @bold v@'s after each text output line.
                    468: &sp @N@        -       @N=1@v  B,@bold v@      Space vertical distance @N@ in either direction.
                    469: &sv @N@        -       @N=1@v  @bold v@        Save vertical distance @N@.
                    470: &os    -       -       -       Output saved vertical distance.
                    471: &ns    space   -       D       Turn no-space mode on.
                    472: &rs    -       -       D       Restore spacing; turn no-space mode off.
                    473: .sp .5
                    474: .T&
                    475: lf3 s s s s
                    476: lfCW l l l l.
                    477: \\n+z.  Line Length and Indenting
                    478: &ll @+- N@     6.5i    previous        E,@bold m@      Line length.
                    479: &in @+- N@     @N=0@   previous        B,E,@bold m@    Indent.
                    480: &ti @+- N@     -       ignored B,E,@bold m@    Temporary indent.
                    481: .sp .5
                    482: .ne 2.1
                    483: .T&
                    484: lf3 s s s s
                    485: lfCW l l l l.
                    486: \\n+z.  Macros, Strings, Diversion, and Position Traps
                    487: &de @xx~yy@    -       @.yy= cw ".."@  -       Define or redefine macro @xx@; end at call of @yy@.
                    488: &am @xx~yy@    -       @.yy= cw ".."@  -       Append to a macro.
                    489: &ds @xx~string@        -       ignored -       Define a string @xx@ containing @string@.
                    490: &as @xx~string@        -       ignored -       Append @string@ to string @xx@.
                    491: &rm @xx@       -       ignored -       Remove request, macro, or string.
                    492: &rn @xx~yy@    -       ignored -       Rename request, macro, or string @xx@ to @yy@.
                    493: &di @xx@       -       end     D       Divert output to macro @xx@.
                    494: &da @xx@       -       end     D       Divert and append to @xx@.
                    495: &wh @N~xx@     -       -       @bold v@        Set location trap; negative is w.r.t. page bottom.
                    496: &ch @xx~N@     -       -       @bold v@        Change trap location.
                    497: &dt @N~xx@     -       off     D,@bold v@      Set a diversion trap.
                    498: &it @N~xx@     -       off     E       Set an input-line count trap.
                    499: &em @xx@       none    none    -       End macro is @xx@.
                    500: .sp .5
                    501: .T&
                    502: lf3 s s s s
                    503: lfCW l l l l.
                    504: \\n+z.  Number Registers
                    505: &nr @R~+- N~M@         -       @bold u@        Define and set number register @R@; auto-increment by @M@.
                    506: &af @R~c@      arabic  -       -       Assign format to register @R@ (@c= cw "1" , cw i , cw I , cw a , cw A@).
                    507: &rr @R@        -       -       -       Remove register @R@.
                    508: .sp .5
                    509: .T&
                    510: lf3 s s s s
                    511: lfCW l l l l.
                    512: \\n+z.  Tabs, Leaders, and Fields
                    513: &ta@~Nt~. . .@ 0.5i; 0.8n      none    E,@bold m@      Tab settings; left-adjusting, unless @t= cw R@ (right), @cw C@ (centered).
                    514: &tc@~c@        none    none    E       Tab repetition character.
                    515: &lc@~c@        @cw "."@        none    E       Leader repetition character.
                    516: &fc@~a~b@      off     off     -       Set field delimiter @a@ and pad character @b@.
                    517: .sp .5
                    518: .T&
                    519: lf3 s s s s
                    520: lfCW l l l l.
                    521: \\n+z.  Input and Output Conventions and Character Translations
                    522: &ec@~c@        \e      \e      -       Set escape character.
                    523: &eo    on      -       -       Turn off escape character mechanism.
                    524: &lg@~N@        on; -   on      T       Ligature mode on if @N>0@.
                    525: &ul@~N@        off     @N=1@   E       Underline (italicize in \*(TR) @N@ input lines.
                    526: &cu@~N@        off     @N=1@   E       Continuous underline in \*(NR; in \*(TR, like @cw ul@.
                    527: &uf@~F@        Italic  Italic  -       Underline font set to @F@ (to be switched to by @cw ul@).
                    528: &cc@~c@        @cw .@  @cw .@  E       Set control character to @c@.
                    529: &c2@~c@        @cw "'"@        @cw "'"@        E       Set no-break control character to @c@.
                    530: &tr@~abcd....@ none    -       O       Translate @a@ to @b@, etc., on output.
                    531: .sp .5
                    532: .T&
                    533: lf3 s s s s.
                    534: \\n+z.  Local Horizontal and Vertical Motions, and the Width Function
                    535: .sp .5
                    536: .T&
                    537: lf3 s s s s.
                    538: \\n+z.  Overstrike, Bracket, Line-drawing, Graphics, and Zero-width Functions
                    539: .sp .5
                    540: .T&
                    541: lf3 s s s s
                    542: lfCW l l l l.
                    543: \\n+z.  Hyphenation.
                    544: &nh    hyphenate       -       E       No hyphenation.
                    545: &hy@~N@        hyphenate       hyphenate       E       Hyphenate; @N =@ mode.
                    546: &hc@~c@        @cw "\e%"@      @cw "\e%"@      E       Hyphenation indicator character @c@.
                    547: &hw@~word~. . .@               ignored -       Add words to hyphenation dictionary.
                    548: .sp .5
                    549: .T&
                    550: lf3 s s s s
                    551: lfCW l l l l.
                    552: \\n+z.  Three-Part Titles.
                    553: &tl@~'l'c'r'@          -       -       Three-part title; delimiter may be any character.
                    554: &pc@~c@        @cw %@  off     -       Page number character.
                    555: &lt@~+- N@     6.5i    previous        E,@bold m@      Length of title.
                    556: .sp .5
                    557: .T&
                    558: lf3 s s s s
                    559: lfCW l l l l.
                    560: \\n+z.  Output Line Numbering.
                    561: &nm@~+- N^M^S^I@               off     E       Number mode on or off, set parameters.
                    562: &nn@~N@        -       @N=1@   E       Do not number next @N@ lines.
                    563: .sp .5
                    564: .T&
                    565: lf3 s s s s
                    566: lfCW l l l l.
                    567: \\n+z.  Conditional Acceptance of Input
                    568: &if@~c~any@            -       -       If condition @c@ true, accept @any@ as input;
                    569:                                  for multi-line, use @cw "\e{" any cw "\e}"@.
                    570: &if !@c~any@           -       -       If condition @c@ false, accept @any@.
                    571: &if@~N~any@            -       @bold u@        If expression @N > 0@, accept @any@.
                    572: &if !@N~any@           -       @bold u@        If expression @N <= 0@ [sic], accept @any@.
                    573: &if@~ 's1 's2 '~any@           -       -       If string @s1@ identical to @s2@, accept @any@.
                    574: &if !@ 's1 's2 '~any@          -       -       If string @s1@ not identical to @s2@, accept @any@.
                    575: &ie@~c~any@            -       @bold u@        If portion of if-else; all above forms (like @cw "if"@).
                    576: &el@~any@              -       -       Else portion of if-else.
                    577: .sp .5
                    578: .T&
                    579: lf3 s s s s
                    580: lfCW l l l l.
                    581: \\n+z.  Environment Switching
                    582: &ev@~N@        @N=0@   previous        -       Environment switch (push down).
                    583: .sp .5
                    584: .T&
                    585: lf3 s s s s
                    586: lfCW l l l l.
                    587: \\n+z.  Insertions from the Standard Input
                    588: &rd@~prompt@   -       @prompt@=\s-1BEL\s+1    -       Read insertion.
                    589: &ex    -       -       -       Exit.
                    590: .sp .5
                    591: .T&
                    592: lf3 s s s s
                    593: lfCW l l l l.
                    594: \\n+z.  Input/Output File Switching
                    595: &so@~filename@         -       -       Switch source file (push down).
                    596: &nx@~filename@         end-of-file     -       Next file.
                    597: &sy@~string@           -       -       Execute program @string@.  Output is not interpolated.
                    598: &pi@~string@           -       -       Pipe output to program @string@.
                    599: &cf@~filename@         -       -       Copy file contents to \*(TR output.
                    600: .sp .5
                    601: .T&
                    602: lf3 s s s s
                    603: lfCW l l l l.
                    604: \\n+z.  Miscellaneous
                    605: &mc@~c~N@      -       off     E,@bold m@      Set margin character @c@ and separation @N@.
                    606: &tm@~string@   -       newline -       Print @string@ on terminal (standard error).
                    607: &ab@~string@   -       newline -       Print @string@ on standard error, exit program.
                    608: &ig@~yy@       -       @.yy= cw ".."@  -       Ignore input until call of @yy@.
                    609: &lf@~N ~f@             -       -       Set input line number to @N@ and filename to @f@.
                    610: &pm@~t@        -       all     -       Print macro names, sizes; if @t@ present, print only total of sizes.
                    611: &fl    -       -       B       Flush output buffer.
                    612: .sp .5
                    613: .T&
                    614: lf3 s s s s.
                    615: \\n+z.  Output and Error Messages
                    616: .sp .5
                    617: \\n+z.  Output Language
                    618: .sp .5
                    619: \\n+z.  Device and Font Description Files
                    620: .TE
                    621: .br
                    622: .nr zz 9
                    623: .de cl
                    624: .ie \\n+(cl<\n(zz \{\
                    625: .      po +\\n(.lu/\n(zzu
                    626: .      rt\}
                    627: .el \{.po 1i\}
                    628: ..
                    629: .nr cl 0 1
                    630: .di zz
                    631: .ta .35iR
                    632: .nf
                    633: .ps 9
                    634: .vs 10.5
                    635: \f(CWab\fP     20
                    636: \f(CWad\fP     4
                    637: \f(CWaf\fP     8
                    638: \f(CWam\fP     7
                    639: \f(CWas\fP     7
                    640: \f(CWbd\fP     2
                    641: \f(CWbp\fP     3
                    642: \f(CWbr\fP     4
                    643: \f(CWc2\fP     10
                    644: \f(CWcc\fP     10
                    645: \f(CWce\fP     4
                    646: \f(CWcf\fP     19
                    647: \f(CWch\fP     7
                    648: \f(CWcs\fP     2
                    649: \f(CWcu\fP     10
                    650: \f(CWda\fP     7
                    651: \f(CWde\fP     7
                    652: \f(CWdi\fP     7
                    653: \f(CWds\fP     7
                    654: \f(CWdt\fP     7
                    655: \f(CWec\fP     10
                    656: \f(CWel\fP     16
                    657: \f(CWem\fP     7
                    658: \f(CWeo\fP     10
                    659: \f(CWev\fP     17
                    660: \f(CWex\fP     18
                    661: \f(CWfc\fP     9
                    662: \f(CWfi\fP     4
                    663: \f(CWfl\fP     20
                    664: \f(CWfp\fP     2
                    665: \f(CWft\fP     2
                    666: \f(CWhc\fP     13
                    667: \f(CWhw\fP     13
                    668: \f(CWhy\fP     13
                    669: \f(CWie\fP     16
                    670: \f(CWif\fP     16
                    671: \f(CWig\fP     20
                    672: \f(CWin\fP     6
                    673: \f(CWit\fP     7
                    674: \f(CWlc\fP     9
                    675: \f(CWlg\fP     10
                    676: \f(CWlf\fP     20
                    677: \f(CWll\fP     6
                    678: \f(CWls\fP     5
                    679: \f(CWlt\fP     14
                    680: \f(CWmc\fP     20
                    681: \f(CWmk\fP     3
                    682: \f(CWna\fP     4
                    683: \f(CWne\fP     3
                    684: \f(CWnf\fP     4
                    685: \f(CWnh\fP     13
                    686: \f(CWnm\fP     15
                    687: \f(CWnn\fP     15
                    688: \f(CWnr\fP     8
                    689: \f(CWns\fP     5
                    690: \f(CWnx\fP     19
                    691: \f(CWos\fP     5
                    692: \f(CWpc\fP     14
                    693: \f(CWpi\fP     19
                    694: \f(CWpl\fP     3
                    695: \f(CWpm\fP     20
                    696: \f(CWpn\fP     3
                    697: \f(CWpo\fP     3
                    698: \f(CWps\fP     2
                    699: \f(CWrd\fP     18
                    700: \f(CWrm\fP     7
                    701: \f(CWrn\fP     7
                    702: \f(CWrr\fP     8
                    703: \f(CWrs\fP     5
                    704: \f(CWrt\fP     3
                    705: \f(CWso\fP     19
                    706: \f(CWsp\fP     5
                    707: \f(CWss\fP     2
                    708: \f(CWsv\fP     5
                    709: \f(CWsy\fP     19
                    710: \f(CWta\fP     9
                    711: \f(CWtc\fP     9
                    712: \f(CWti\fP     6
                    713: \f(CWtl\fP     14
                    714: \f(CWtm\fP     20
                    715: \f(CWtr\fP     10
                    716: \f(CWuf\fP     10
                    717: \f(CWul\fP     10
                    718: \f(CWvs\fP     5
                    719: \f(CWwh\fP     7
                    720: .di
                    721: .nr aa \n(dn/\n(zz
                    722: .ne \\n(aau+10p
                    723: .sp
                    724: .SP 2
                    725: .TL
                    726: Alphabetical Request and Section Number Cross Reference
                    727: .SP .5
                    728: .LP
                    729: .sp .5
                    730: .nf
                    731: .wh \n(nlu+\n(aau cl
                    732: .nr qq \n(nlu+\n(aau
                    733: .ps
                    734: .vs
                    735: .mk
                    736: .zz
                    737: .rt
                    738: .sp \n(.tu
                    739: .ch cl 12i
                    740: .sp 100
                    741: .BP
                    742: .TL
                    743: Escape Sequences for Characters, Indicators, and Functions
                    744: .SP .5
                    745: .LP
                    746: .ps -1
                    747: .vs -1
                    748: .TS
                    749: center;
                    750: c2 l
                    751: c2 l2 l
                    752: n2 l2fCW l.
                    753: .ft 4
                    754: Section        Escape
                    755: Reference      Sequence        Meaning
                    756: .ft
                    757: .sp .5
                    758: 10.1   \e\e    \e prevents or delays the interpretation of \&\f(CW\e\fP
                    759: 10.1   \ee     Printable version of the current escape character.
                    760: 2.1    \e'     \' (acute accent); equivalent to \&\f(CW\e(aa\fP
                    761: 2.1    \e`     \` (grave accent); equivalent to \&\f(CW\e(ga\fP
                    762: 2.1    \e\-    \- Minus sign in the current font
                    763: 7.     \e\^.   Period (dot) (see \&\f(CWde\fP)
                    764: 11.1   \e\f2space\fP   Unpaddable space-size space character
                    765: 11.1   \e0     Digit width space
                    766: 11.1   \e|     1/6 em narrow space character (zero width in \*(NR)
                    767: 11.1   \e^     1/12 em half-narrow space character (zero width in \*(NR)
                    768: .tr &&
                    769: 4.1    \e&     Non-printing, zero width character
                    770: .tr &.
                    771: 10.6   \e!     Transparent line indicator
                    772: 10.8   \e"     Beginning of comment; continues to end of line
                    773: 13.    \e%     Default optional hyphenation character
                    774: 2.1    \e(@xx@ Character named @xx@
                    775: 7.1    \e*@x,~@\e*(@xx@        Interpolate string @x@ or @xx@
                    776: 7.3    \e$@N@  Interpolate argument @1 <= N <= 9@
                    777: 9.1    \ea     Non-interpreted leader character
                    778: 12.3   \eb'@abc...@'   Bracket building function
                    779: 4.2    \ec     Connect to next input text
                    780: 2.1    \eC'@xyz@'      Character named @xyz@
                    781: 11.1   \ed     Downward 1/2 em vertical motion (1/2 line in \*(NR)
                    782: 12.5   \eD'@c...@'     Draw graphics function @c@ with parameters @. . .@; @c= cw l , cw c , cw e , cw a , cw "~"@
                    783: 2.2    \ef@x,~@\ef(@xx,~@\ef@N@        Change to font named @x@ or @xx@, or position @N@
                    784: 8.     \eg@x,~@\eg(@xx@        Format of number register @x@ or @xx@
                    785: 11.1   \eh'@N@'        Local horizontal motion; move right @N@ (negative left)
                    786: 2.3    \eH'@N@'        Height of current font is @N@
                    787: 11.3   \ek@x@  Mark horizontal input place in register @x@
                    788: 12.4   \el'@Nc@'       Horizontal line drawing function (optionally with @c@ )
                    789: 12.4   \eL'@Nc@'       Vertical line drawing function (optionally with @c@ )
                    790: 8.     \en@x,~@\en(@xx@        Contents of number register @x@ or @xx@
                    791: 2.1    \eN'@N@'        Character number @N@ on current font
                    792: 12.1   \eo'@abc...@'   Overstrike characters @a,~ b,~ c@, ...
                    793: 4.1    \ep     Break and spread output line
                    794: 11.1   \er     Reverse 1 em vertical motion (reverse line in \*(NR)
                    795: 2.3    \es@N,~@\es@+- N@       Point-size change function; also @cw "\es(" nn@, @cw "\es" +- cw "(" nn@
                    796: 2.2    \eS'@N@'        Slant output @N@ degrees
                    797: 9.1    \et     Non-interpreted horizontal tab
                    798: 11.1   \eu     Reverse (up) 1/2 em vertical motion (1/2 line in \*(NR)
                    799: 11.1   \ev'@N@'        Local vertical motion; move down N (negative up)
                    800: 11.2   \ew'@string@'   Width of @string@
                    801: 5.2    \ex'@N@'        Extra line-space function (negative before, positive after)
                    802: 10.7   \eX'@string@'   Ouput @string@ as device control function
                    803: 12.2   \ez@c@  Print @c@ with zero width (without spacing)
                    804: 16.    \e{     Begin conditional input
                    805: 16.    \e}     End conditional input
                    806: 10.8   \e@newline@     Concealed (ignored) newline
                    807: -      \e@Z@   @Z@, any character not listed above
                    808: .TE
                    809: .ps +1
                    810: .vs +1
                    811: .LP
                    812: The escape sequences
                    813: .CW \e\e ,
                    814: .CW \e\^. ,
                    815: .CW \e" ,
                    816: .CW \e$ ,
                    817: .CW \e* ,
                    818: .CW \ea ,
                    819: .CW \en ,
                    820: .CW \et ,
                    821: .CW \eg ,
                    822: and
                    823: .CW \e@newline@
                    824: are interpreted in copy mode (\(sc7.2).
                    825: .SP .5i
                    826: \0
                    827: .sp 100
                    828: .BP
                    829: .TL
                    830: Predefined Number Registers
                    831: .LP
                    832: .ps -1
                    833: .vs -1
                    834: .TS
                    835: c2l
                    836: c2 l2 l
                    837: n2 l2fCW l.
                    838: .ft 4
                    839: Section        Register
                    840: Reference      Name    Description
                    841: .ft
                    842: .sp .5
                    843: 3.     %       Current page number.
                    844: 11.2   ct      Character type (set by \&\fC\ew\fP function).
                    845: 7.4    dl      Width (maximum) of last completed diversion.
                    846: 7.4    dn      Height (vertical size) of last completed diversion.
                    847: -      dw      Current day of the week (1-7).
                    848: -      dy      Current day of the month (1-31).
                    849: 15.    ln      Output line number.
                    850: -      mo      Current month (1-12).
                    851: 4.1    nl      Vertical position of last printed text baseline.
                    852: 11.2   sb      Depth of string below baseline (generated by \&\fC\ew\fP function).
                    853: 11.2   st      Height of string above baseline (generated by \&\fC\ew\fP function).
                    854: -      yr      Last two digits of current year.
                    855: .TE
                    856: .ps +1
                    857: .vs +1
                    858: 
                    859: 
                    860: .TL
                    861: Predefined Read-Only Number Registers
                    862: .LP
                    863: .ps -1
                    864: .vs -1
                    865: .TS
                    866: c2 l
                    867: c2 l2 l
                    868: n2 l2fCW l.
                    869: .ft 4
                    870: Section        Register
                    871: Reference      Name    Description
                    872: .ft
                    873: .sp .5
                    874: 19.    $$      Process id of \*(TR or \*(NR.
                    875: 7.3    &$      Number of arguments available at the current macro level.
                    876: 5.2    &a      Post-line extra line-space most recently used in @cw "\ex'" N cw "'" @.
                    877: -      &A      Set to 1 in \*(TR, if @cw -a@ option used; always 1 in \*(NR.
                    878: 2.3    &b      Emboldening level.
                    879: 20.    &c      Number of lines read from current input file.
                    880: 7.4    &d      Current vertical place in current diversion; equal to @cw nl@, if no diversion.
                    881: 2.2    &f      Current font number.
                    882: 20.    &F      Current input file name [sic].
                    883: 4.     &h      Text baseline high-water mark on current page or diversion.
                    884: 11.1   &H      Available horizontal resolution in basic units.
                    885: 6.     &i      Current indent.
                    886: 4.2    &j      Current @cw ad@ mode.
                    887: 4.1    &k      Current output horizontal position.
                    888: 6.     &l      Current line length.
                    889: 5.1    &L      Current @cw ls@ value.
                    890: 4.     &n      Length of text portion on previous output line.
                    891: 3.     &o      Current page offset.
                    892: 3.     &p      Current page length.
                    893: 7.5    .R      Number of unused number registers.
                    894: -      &T      Set to 1 in \*(NR, if \&\fC\-T\fP option used; always 0 in \*(TR.
                    895: 2.3    &s      Current point size.
                    896: 7.5    &t      Distance to the next trap.
                    897: 4.1    &u      Equal to 1 in fill mode and 0 in nofill mode.
                    898: 5.1    &v      Current vertical line spacing.
                    899: 11.1   &V      Available vertical resolution in basic units.
                    900: 11.2   &w      Width of previous character.
                    901: -      &x      Reserved version-dependent register.
                    902: -      &y      Reserved version-dependent register.
                    903: 7.4    &z      Name [sic] of current diversion.
                    904: .TE
                    905: .ps +1
                    906: .vs +1
                    907: .sp 100
                    908: .BP
                    909: .TL
                    910: Reference Manual
                    911: .NH
                    912: General Explanation
                    913: .sc "Form of input.
                    914: Input consists of \fItext lines\fR, which are destined to be printed,
                    915: interspersed with \fIcontrol lines\fR,
                    916: which set parameters or otherwise control subsequent processing.
                    917: Control lines begin with a \fIcontrol character\fR\(em\
                    918: normally \&\fC.\fR (period) or \&\fC'\fR (single quote)\(em\
                    919: followed by a one or two character name that specifies
                    920: a basic \fIrequest\fR or the substitution of
                    921: a user-defined \fImacro\fR in place of the control line.
                    922: The control character \&\fC'\fR suppresses the \fIbreak\fR function\(em\
                    923: the forced output of a partially filled line\(em\
                    924: caused by certain requests.
                    925: The control character may be separated from the request/macro name by
                    926: white space (spaces and/or tabs) for aesthetic reasons.
                    927: Names should be followed by either
                    928: space or newline.
                    929: Control lines with unrecognized names are ignored.
                    930: .PP
                    931: Various special functions may be introduced anywhere in the input by
                    932: means of an \fIescape\fR character, normally \&\fC\e\fR.
                    933: For example, the function
                    934: .CW \en@R@
                    935: causes the interpolation of the contents of the
                    936: \fInumber register R\fR
                    937: in place of the function;
                    938: here @R@ is either a single character name
                    939: as in \&\fC\en\fIx\fR,
                    940: or a two-character name introduced by
                    941: a left-parenthesis, as in \&\fC\en(\fIxx\fR.
                    942: .sc "Formatter and device resolution.
                    943: \*(Tr internally stores and processes dimensions in units that correspond to
                    944: the particular device for which output is being prepared;
                    945: values from 300 to 1200/inch are typical.
                    946: See \(sc23.
                    947: \*(Nr internally uses 240 units/inch,
                    948: corresponding to the least common multiple of the
                    949: horizontal and vertical resolutions of various
                    950: typewriter-like output devices.
                    951: \*(Tr rounds horizontal/vertical numerical parameter input to the actual
                    952: horizontal/vertical resolution of the output device indicated by the \&\fC-T\fR option
                    953: (default
                    954: .CW post ).
                    955: \*(Nr similarly rounds numerical input to the actual resolution
                    956: of its output device
                    957: (default Model 37 Teletype).
                    958: .sc "Numerical parameter input.
                    959: Both \*(NR and \*(TR
                    960: accept numerical input with the appended scale
                    961: indicators
                    962: shown in the following table,
                    963: where
                    964: \fIS\fR is the current type size in points and
                    965: \fIV\fR is the current vertical line spacing in
                    966: basic units.
                    967: .TS
                    968: center box;
                    969: c|c
                    970: c|c
                    971: c|l.
                    972: Scale
                    973: Indicator      Meaning
                    974: _
                    975: \&\fCi\fR      Inch
                    976: \&\fCc\fR      Centimeter
                    977: \&\fCP\fR      Pica = 1/6 inch
                    978: \&\fCm\fR      Em = \fIS\fR points
                    979: \&\fCn\fR      En = Em/2
                    980: \&\fCp\fR      Point = 1/72 inch
                    981: \&\fCu\fR      Basic unit
                    982: \&\fCv\fR      Vertical line space \fIV\fR
                    983: none   Default, see below
                    984: .TE
                    985: In \*(NR, both the em and the en are taken to be equal to the
                    986: nominal character width,
                    987: which is output-device dependent;
                    988: common values are 1/10 and 1/12 inch.
                    989: Actual character widths in \*(NR need not be all the same and constructed characters
                    990: such as \-> (\(->) are often extra wide.
                    991: The default scaling is
                    992: .CW m
                    993: for the horizontally-oriented requests
                    994: and functions
                    995: .CW ll ,
                    996: .CW in ,
                    997: .CW ti ,
                    998: .CW ta ,
                    999: .CW lt ,
                   1000: .CW po ,
                   1001: .CW mc ,
                   1002: .CW \eh ,
                   1003: .CW \el ,
                   1004: and horizontal coordinates of
                   1005: .CW \eD ;
                   1006: .CW v
                   1007: for the vertically-oriented requests and functions
                   1008: .CW pl ,
                   1009: .CW wh ,
                   1010: .CW ch ,
                   1011: .CW dt ,
                   1012: .CW sp ,
                   1013: .CW sv ,
                   1014: .CW ne ,
                   1015: .CW rt ,
                   1016: .CW \ev ,
                   1017: .CW \ex ,
                   1018: .CW \eL ,
                   1019: and vertical coordinates of
                   1020: .CW \eD ;
                   1021: .CW p
                   1022: for the
                   1023: .CW vs
                   1024: request;
                   1025: and
                   1026: .CW u
                   1027: for the requests
                   1028: .CW nr ,
                   1029: .CW if ,
                   1030: and
                   1031: .CW ie .
                   1032: \fIAll\fR other requests ignore any scale indicators.
                   1033: When a number register containing an already appropriately scaled number
                   1034: is interpolated to provide numerical input,
                   1035: the unit scale indicator
                   1036: \&\fCu\fR may need to be appended to prevent
                   1037: an additional inappropriate default scaling.
                   1038: The number, @N@, may be specified in decimal-fraction form
                   1039: but the parameter finally stored is rounded to an integer number of basic units.
                   1040: Internal computations are performed in integer arithmetic.
                   1041: .PP
                   1042: The \fIabsolute position\fR indicator \&\fC|\fR may be prepended
                   1043: to a number @N@
                   1044: to generate the distance to the vertical or horizontal place @N@.
                   1045: For vertically-oriented requests and functions, \&\fC|\fP@N@
                   1046: becomes the distance in basic units from the current vertical place on the page or in a \fIdiversion\fR (\(sc7.4)
                   1047: to the vertical place @N@.
                   1048: For \fIall\fR other requests and functions,
                   1049: \&\fC|\fP@N@
                   1050: becomes the distance from
                   1051: the current horizontal place on the \fIinput\fR line to the horizontal place @N@.
                   1052: For example,
                   1053: .P1
                   1054: \&.sp |3.2c
                   1055: .P2
                   1056: will space in the required direction to 3.2 centimeters from the top of the page.
                   1057: .sc "Numerical expressions.
                   1058: .tr &&
                   1059: Wherever numerical input is expected an expression involving parentheses,
                   1060: the arithmetic operators \&\fC+\fR, \&\fC-\fR, \&\fC/\fR, \&\fC\(**\fR, \&\fC%\fR (mod),
                   1061: and the logical operators
                   1062: \&\fC<\fR,
                   1063: \&\fC>\fR,
                   1064: \&\fC<=\fR,
                   1065: \&\fC>=\fR,
                   1066: \&\fC=\fR (or \&\fC==\fR),
                   1067: \&\fC&\fR\ (and),
                   1068: \&\fC:\fR\ (or)
                   1069: may be used.
                   1070: Except where controlled by parentheses, evaluation of expressions is left-to-right;
                   1071: there is no operator precedence.
                   1072: In the case of certain requests, an initial \&\fC+\fR or \&\fC-\fR is stripped
                   1073: and interpreted as an increment or decrement indicator respectively.
                   1074: In the presence of default scaling, the desired scale indicator must be
                   1075: attached to \fIevery\fR number in an expression
                   1076: for which the desired and default scaling differ.
                   1077: For example,
                   1078: if the number register \&\fCx\fR contains 2
                   1079: and the current point size is 10,
                   1080: then
                   1081: .P1
                   1082: \&.ll (4.25i+\enxP+3)/2u
                   1083: .P2
                   1084: will set the line length to 1/2 the sum of 4.25 inches + 2 picas + 3 ems.
                   1085: .sc "Notation.
                   1086: Numerical parameters are indicated in this manual in two ways.
                   1087: @+- N@ means that the argument may take the forms @N@, @+N@, or @-N@ and
                   1088: that the corresponding effect is to set the parameter
                   1089: to @N@, to increment it by @N@, or to decrement it by @N@ respectively.
                   1090: Plain @N@ means that an initial algebraic sign is \fInot\fR
                   1091: an increment indicator,
                   1092: but merely the sign of @N@.
                   1093: Generally, unreasonable numerical input is either ignored
                   1094: or truncated to a reasonable value.
                   1095: For example,
                   1096: most requests expect to set parameters to non-negative
                   1097: values;
                   1098: exceptions are
                   1099: .CW sp ,
                   1100: .CW wh ,
                   1101: .CW ch ,
                   1102: .CW nr ,
                   1103: and
                   1104: .CW if .
                   1105: The requests
                   1106: .CW ps ,
                   1107: .CW ft ,
                   1108: .CW po ,
                   1109: .CW vs ,
                   1110: .CW ls ,
                   1111: .CW ll ,
                   1112: .CW in ,
                   1113: and
                   1114: .CW lt 
                   1115: restore the previous parameter value in the absence
                   1116: of an argument.
                   1117: .PP
                   1118: Single character arguments are indicated by single lower case letters
                   1119: and
                   1120: one/two character arguments are indicated by a pair of lower case letters.
                   1121: Character string arguments are indicated by multi-character mnemonics.
                   1122: .NH
                   1123: Font and Character Size Control
                   1124: .sc "Character set.
                   1125: The \*(TR character set is defined by a description file specific to each output device (\(sc23).
                   1126: There are normally several regular fonts and one or more special fonts.
                   1127: Characters are input as themselves (\s-2ASCII\s0),
                   1128: as @cw "\e(" xx@, as @cw "\eC'" name cw "'"@,
                   1129: or as 
                   1130: .CW \eN'@n@' .
                   1131: The form
                   1132: .CW \eC'@name@'
                   1133: permits a name of any length;
                   1134: the form
                   1135: .CW \eN'@n@'
                   1136: refers to the @n@-th character on the current font,
                   1137: whether named or not.
                   1138: .PP
                   1139: Normally the input characters
                   1140: .CW ' ,
                   1141: .CW ` ,
                   1142: and
                   1143: .CW -
                   1144: are printed as `, ', and - respectively;
                   1145: .CW \e' ,
                   1146: .CW \e` ,
                   1147: and
                   1148: .CW \e-
                   1149: produce \', \`, and \-.
                   1150: Non-existent characters are printed as a 1-em space.
                   1151: .PP
                   1152: \*(Nr has an analogous, but different, mechanism for defining legal characters
                   1153: and how to print them.
                   1154: By default all \s-1ASCII\s0 characters are valid.
                   1155: There are such
                   1156: additional characters as may be available on
                   1157: the output device,
                   1158: such characters as may be able to be constructed
                   1159: by overstriking or other combination,
                   1160: and those that can reasonably be mapped
                   1161: into other printable characters.
                   1162: The exact behavior is determined by a driving
                   1163: table prepared for each device.
                   1164: .sc "Fonts.
                   1165: \*(Tr
                   1166: begins execution by reading information for a set of defaults fonts,
                   1167: said to be
                   1168: .I mounted ;
                   1169: conventionally, the first four are
                   1170: Times Roman (\&\fCR\fR),
                   1171: .I "Times Italic
                   1172: (\&\fCI\fR),
                   1173: .B "Times Bold
                   1174: (\&\fCB\fR),
                   1175: and
                   1176: .BI "Times Bold Italic
                   1177: (\&\fCBI\fR) ,
                   1178: and the last is a Special font
                   1179: .CW S ) (
                   1180: containing miscellaneous characters.
                   1181: These fonts are used in this document.
                   1182: The set of fonts and positions is determined by the device description file,
                   1183: described in \(sc23.
                   1184: .PP
                   1185: The current font, initially Roman, may be changed
                   1186: by use of the \&\fCft\fR request,
                   1187: or by embedding at any desired point
                   1188: either \&\fC\ef\fIx\fR, \&\fC\ef(\fIxx\fR, or \&\fC\ef\fP@N@,
                   1189: where
                   1190: \fIx\fR and \fIxx\fR are the name of a font
                   1191: and @N@ is a numerical font position.
                   1192: .PP
                   1193: It is not necessary to change to the Special font;
                   1194: characters on that font are automatically handled
                   1195: as if they were physically part of the current font.
                   1196: The Special font may actually be several fonts;
                   1197: the name
                   1198: .CW S
                   1199: is reserved and is generally used for one of these.
                   1200: All special fonts must be mounted after regular fonts.
                   1201: .PP
                   1202: \*(Tr can be informed that any particular font is mounted
                   1203: by use of the \&\fCfp\fR request.
                   1204: The list of known fonts is installation dependent.
                   1205: In the subsequent discussion of font-related requests,
                   1206: @F@ represents either a one/two-character
                   1207: font name or the numerical font position.
                   1208: The current font is available (as a numerical position) in the read-only number register \&\fC.f\fR.
                   1209: .PP
                   1210: A request for a named but not-mounted font is honored
                   1211: if the font description information exists.
                   1212: In this way, there is no limit on the number of fonts that may be printed
                   1213: in any part of a document.
                   1214: Mounted fonts may be handled more efficiently,
                   1215: and they may be referred to by their mount positions,
                   1216: but there is no other difference.
                   1217: .PP
                   1218: The function
                   1219: .CW \eS'@+- N@'
                   1220: causes the current font to be slanted by
                   1221: @+- N@
                   1222: degrees.
                   1223: Not all devices support slanting.
                   1224: .PP
                   1225: \*(Nr understands font control
                   1226: and normally underlines italic characters (see \(sc10.5).
                   1227: .sc "Character size.
                   1228: Character point sizes available depend on the specific output device;
                   1229: a typical (historical) set of values is
                   1230: 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, and 36.
                   1231: This is a range of 1/12 inch to 1/2 inch.
                   1232: The \&\fCps\fR request is used to change or restore the point size.
                   1233: Alternatively the point size may be changed between any two characters
                   1234: by embedding a
                   1235: .CW \es@N@
                   1236: at the desired point
                   1237: to set the size to @N@,
                   1238: or a
                   1239: .CW "\&\fC\es@+- N@
                   1240: (@1<=N<=9@)
                   1241: to increment/decrement the size by @N@;
                   1242: .CW \es0
                   1243: restores the previous size.
                   1244: Requested point size values that are between two valid
                   1245: sizes yield the larger of the two.
                   1246: .PP
                   1247: Note that through an accident of history, a construction like
                   1248: .CW \es39
                   1249: is parsed as size 39, and thus converted to size 36 (given the sizes above),
                   1250: while
                   1251: .CW \es40
                   1252: is parsed as size 4 followed by
                   1253: .CW 0 .
                   1254: The syntax
                   1255: @cw "\es(" nn@ and @cw "\es" +- cw "(" nn@
                   1256: permits specification of sizes that would otherwise be ambiguous.
                   1257: .PP
                   1258: The current size is available in the \&\fC.s\fR register.
                   1259: \*(Nr ignores type size requests.
                   1260: .PP
                   1261: The function
                   1262: .CW "\eH'@+- N@'
                   1263: sets \H'+2'the height of the current font\H'0' to
                   1264: @N@, or increments it by @+N@, or decrements it by @-N@;
                   1265: if @N=0@, the height is restored to the current point size.
                   1266: In each case, the width is unchanged.
                   1267: Not all devices support independent height and width for characters.
                   1268: .FS
                   1269: *The fields have the same meaning as described earlier in the Request Summary.
                   1270: .FE
                   1271: .SP .5
                   1272: .LP
                   1273: .ne 2.1
                   1274: .ta 1i 2i 3i 4i
                   1275: \f4Request\fR  \f4Initial\fR   \f4If\ No\fR
                   1276: .br
                   1277: \f4Form\fR     \f4Value\fR     \f4Argument\fR  \f4Notes\fR
                   1278: .bt "\&\fC.ps\fI \(+-N\fR*" "10\|point" "previous" "E" "Point size
                   1279: set to \(+-@N@.
                   1280: Alternatively embed
                   1281: .CW \es@N@
                   1282: or
                   1283: .CW "\&\fC\es@+- N@" .
                   1284: Any positive size value may be requested;
                   1285: if invalid, the next larger valid size will result, with a
                   1286: maximum of 36.
                   1287: A paired sequence
                   1288: @+N@, @-N@
                   1289: will work because the previous requested value is also remembered.
                   1290: Ignored in \*(NR.
                   1291: .bt "\&\fC.ss\fI N\fR" "12/36\|em" "ignored" "E" "Space-character size
                   1292: (i.e., inter-word gap)
                   1293: is set to @N@/36 ems.
                   1294: This size is the minimum word spacing in adjusted text.
                   1295: Ignored in \*(NR.
                   1296: .bt "\&\fC.cs\fI\|F\|N\|M\fR" "off" "-" "P" "Constant character space
                   1297: (width) mode is
                   1298: set on for font @F@ (if mounted); the width of every character will be
                   1299: taken to be @N@/36 ems.
                   1300: If @M@ is absent,
                   1301: the em is that of the character's point size;
                   1302: if @M@ is given,
                   1303: the em is @M@ points.
                   1304: All affected characters
                   1305: are centered in this space, including those with an actual width
                   1306: larger than this space.
                   1307: Special Font characters occurring while the current font
                   1308: is @F@ are also so treated.
                   1309: If @N@ is absent, the mode is turned off.
                   1310: The mode must be in effect when the characters are physically printed.
                   1311: Ignored in \*(NR.
                   1312: .bt "\&\fC.bd\fI F N\fR" "off" "-" "P" "The characters in font @F@ will be artificially
                   1313: emboldened by printing each one twice, separated by @N-1@ basic units.
                   1314: A reasonable value for @N@ is 3 when the character size is near 10 points.
                   1315: If @N@ is missing the embolden mode is turned off.
                   1316: The emboldening value @N@ is in the \&\fC.b\fP register.
                   1317: .IP
                   1318: .bd R 3
                   1319: This paragraph is printed with \&\fC.bd R 3\fR.
                   1320: The mode must be in effect when the characters are physically printed.
                   1321: Ignored in \*(NR.
                   1322: .br
                   1323: .bd R
                   1324: .bt "\&\fC.bd S \fIF N\fR" "off" "-" "P" "The characters in the Special font
                   1325: will be emboldened whenever the current font is @F@.
                   1326: The mode must be in effect when the characters are physically printed.
                   1327: Ignored in \*(NR.
                   1328: .bt "\&\fC.ft\fP @F@" "Roman" "previous" "E" "Font changed to
                   1329: @F@.
                   1330: Alternatively, embed
                   1331: .CW \ef@F@ .
                   1332: The font name \&\fCP\fR is reserved to mean the previous font,
                   1333: and the name
                   1334: .CW S
                   1335: for the special font.
                   1336: .bt "\&\fC.fp \fIN F L\fR" "R,I,B,...,S" "ignored" "-" "Font position.
                   1337: This is a statement
                   1338: that a font named @F@ is associated with position @N@.
                   1339: It is a fatal error if @F@ is not known.
                   1340: For fonts with names longer than two characters,
                   1341: .I L
                   1342: refers to the long name,
                   1343: and
                   1344: .I F
                   1345: becomes a synonym.
                   1346: There is generally a limit of about 10 mounted fonts.
                   1347: .NH
                   1348: Page control
                   1349: .PP
                   1350: Top and bottom margins are not automatically provided;
                   1351: it is conventional to define two \fImacros\fR and to set \fItraps\fR
                   1352: for them at vertical positions 0 (top) and @-N@ (distance @N@ up from the bottom).
                   1353: See \(sc7 and Tutorial Examples \(scT2.
                   1354: A pseudo-page transition onto the first page occurs
                   1355: either when the first \fIbreak\fR occurs or
                   1356: when the first \fInon-diverted\fR text processing occurs.
                   1357: Arrangements
                   1358: for a trap to occur at the top of the first page
                   1359: must be completed before this transition.
                   1360: In the following, references to the \fIcurrent diversion\fR (\(sc7.4)
                   1361: mean that the mechanism being described works during both
                   1362: ordinary and diverted output (the former considered as the top diversion level).
                   1363: .PP
                   1364: The limitations on \*(TR and \*(NR output dimensions
                   1365: are device dependent.
                   1366: .bt "\&\fC.pl\fI \(+-N\fR" "11\|in" "11\|in" "\fBv\fR" "Page length set to @+- N@.
                   1367: The current page length is available in the \&\fC.p\fR register.
                   1368: .bt "\&\fC.bp\fI \(+-N\fR" "\fIN\(eq\fR1" "-" "B,\fBv\fR" "Begin page.
                   1369: The current page is ejected and a new page is begun.
                   1370: If @+- N@ is given, the new page number will be @+- N@.
                   1371: Also see request \&\fCns\fR.
                   1372: .bt "\&\fC.pn\fI \(+-N\fR" "@N@\(eq1" "ignored" "-" "Page number.
                   1373: The next page (when it occurs) will have the page number @+- N@.
                   1374: A \&\fCpn\fR must occur before the initial pseudo-page transition
                   1375: to affect the page number of the first page.
                   1376: The current page number is in the \&\fC%\fR register.
                   1377: .bt "\&\fC.po\fI \(+-N\fR" "1\|in; 0" "previous" "\fBv\fR" "Page offset.
                   1378: The current \fIleft margin\fR is set to @+- N@.
                   1379: The \*(TR initial value provides 1 inch of paper margin
                   1380: on a typical device.
                   1381: The current page offset is available in the \&\fC.o\fR register.
                   1382: .bt "\&\fC.ne\fI N\fR" "-" "\fIN\(eq\fR1\|\fIV\fR" "D,\fBv\fR" "Need @N@ vertical space.
                   1383: If the distance \fID\fR to the next trap position (see \(sc7.5) is less than @N@,
                   1384: a forward vertical space of size \fID\fR occurs,
                   1385: which will spring the trap.
                   1386: If there are no remaining
                   1387: traps on the page,
                   1388: \fID\fR is the distance to the bottom of the page.
                   1389: If @D<V@, another line could still be output
                   1390: and spring the trap.
                   1391: In a diversion, \fID\fR is the distance to the \fIdiversion trap\fR, if any,
                   1392: or is very large.
                   1393: .bt "\&\fC.mk\fI R\fR" "none" "internal" "D" "Mark the current vertical place
                   1394: in an internal register (both associated with the current diversion level),
                   1395: or in register @R@, if given.
                   1396: See \&\fCrt\fR request.
                   1397: .bt "\&\fC.rt\fI \(+-N\fR" "none" "internal" "D,\fBv\fR" "Return \fIupward only\fR to a marked vertical place
                   1398: in the current diversion.
                   1399: If @+- N@ (with respect to current place) is given,
                   1400: the place is @+- N@ from the top of the page or diversion
                   1401: or, if @N@ is absent, to a
                   1402: place marked by a previous \&\fCmk\fR.
                   1403: The \&\fCsp\fR request (\(sc5.3) may be used
                   1404: in all cases instead of \&\fCrt\fR
                   1405: by spacing to the absolute place stored in a explicit register,
                   1406: e.g., using the sequence
                   1407: .CW ".mk
                   1408: @R@ ...\&
                   1409: .CW ".sp
                   1410: .CW |\en@R@u ;
                   1411: this also works when the motion is downwards.
                   1412: .NH
                   1413: Text Filling, Adjusting, and Centering
                   1414: .sc "Filling and adjusting.
                   1415: Normally,
                   1416: words are collected from input text lines
                   1417: and assembled into a output text line
                   1418: until some word does not fit.
                   1419: An attempt is then made
                   1420: to hyphenate the word to put part
                   1421: of it into the output line.
                   1422: The spaces between the words on the output line
                   1423: are then increased to spread out the line
                   1424: to the current \fIline length\fR
                   1425: minus any current \fIindent\fR.
                   1426: A \fIword\fR is any string of characters delimited by
                   1427: the \fIspace\fR character or the beginning/end of the input line.
                   1428: Any adjacent pair of words that must be kept together
                   1429: (neither split across output lines nor spread apart
                   1430: in the adjustment process)
                   1431: can be tied together by separating them with the
                   1432: \fIunpaddable space\fR character
                   1433: ``\&\fC\e\ \fR'' (backslash-space).
                   1434: The adjusted word spacings are uniform in \*(TR
                   1435: and the minimum interword spacing can be controlled
                   1436: with the \&\fCss\fR request (\(sc2).
                   1437: In \*(NR, they are normally nonuniform because of
                   1438: quantization to character-size spaces;
                   1439: however,
                   1440: the command line option \&\fC-e\fR causes uniform
                   1441: spacing with full output device resolution.
                   1442: Filling, adjustment, and hyphenation (\(sc13) can all be
                   1443: prevented or controlled.
                   1444: The text length on the last line output is available in the \&\fC.n\fR register,
                   1445: and text baseline position on the page for this line is in the \&\fCnl\fR register.
                   1446: The text baseline high-water mark (lowest place) on the current page is in
                   1447: the \&\fC.h\fR register.
                   1448: The current horizontal output position is in the \&\fC.k\fP register.
                   1449: .PP
                   1450: An input text line ending with \&\fC.\fR\^, \&\fC?\fR, or \&\fC!\fR,
                   1451: optionally followed by any number of
                   1452: .CW \&" ,
                   1453: .CW ' ,
                   1454: .CW ) ,
                   1455: .CW ] ,
                   1456: .CW * ,
                   1457: or
                   1458: \(dg,
                   1459: is taken
                   1460: to be the end of a sentence, and an additional space character is
                   1461: automatically provided during filling.
                   1462: To prevent this, add
                   1463: .CW \e&
                   1464: to the end of the input line.
                   1465: Multiple inter-word space characters found in the input are retained,
                   1466: except for trailing spaces;
                   1467: initial spaces also cause a break.
                   1468: .PP
                   1469: When filling is in effect, a \&\fC\ep\fR may be embedded or attached to a word to
                   1470: cause a break at the end of the word and have the resulting output
                   1471: line spread out to fill the current line length.
                   1472: .PP
                   1473: .tr &&
                   1474: A text input line that happens to begin
                   1475: with a control character can
                   1476: be made not to look like a control line
                   1477: by prefixing it with
                   1478: the non-printing, zero-width filler character \&\fC\e&\fR.
                   1479: Still another way is to specify output translation of some
                   1480: convenient character into the control character
                   1481: using \&\fCtr\fR (\(sc10.5).
                   1482: .tr &.
                   1483: .sc "Interrupted text.
                   1484: The copying of a input line in \fInofill\f (non-fill) mode can be interrupted
                   1485: by terminating
                   1486: the partial line with a \&\fC\ec\fR.
                   1487: The next encountered input text line will be considered to be a continuation
                   1488: of the same line of input text.
                   1489: Similarly,
                   1490: a word within \fIfilled\fR text may be interrupted by terminating the
                   1491: word (and line) with \&\fC\ec\fR;
                   1492: the next encountered text will be taken as a continuation of the
                   1493: interrupted word.
                   1494: If the intervening control lines cause a break,
                   1495: any partial line will be forced out along with any partial word.
                   1496: .bt "\&\fC.br\fR" "-" "-" "B" "Break.
                   1497: The filling of the line currently
                   1498: being collected is stopped and
                   1499: the line is output without adjustment.
                   1500: Text lines beginning with space characters
                   1501: (but not tabs)
                   1502: and empty text lines (blank lines) also cause a break.
                   1503: .bt "\&\fC.fi\fR" "fill on" - B,E "Fill subsequent output lines.
                   1504: The register \&\fC.u\fR is 1 in fill mode and 0 in nofill mode.
                   1505: .bt "\&\fC.nf\fR" "fill on" "-" "B,E" "Nofill.
                   1506: Subsequent output lines are neither filled nor adjusted.
                   1507: Input text lines are copied directly to output lines
                   1508: without regard for the current line length.
                   1509: .bt "\&\fC.ad\fI c\fR" "adj, both" "adjust" "E" "Line adjustment is begun.
                   1510: If fill mode is not on, adjustment will be deferred until
                   1511: fill mode is back on.
                   1512: If the type indicator @c@ is present,
                   1513: the adjustment type is changed as shown in the following table.
                   1514: .TS
                   1515: center box;
                   1516: c|c
                   1517: c|l.
                   1518: Indicator      Adjust Type
                   1519: _
                   1520: \&\fCl\fR      adjust left margin only
                   1521: \&\fCr\fR      adjust right margin only
                   1522: \&\fCc\fR      center
                   1523: \&\fCb\fR or \&\fCn\fR adjust both margins
                   1524: absent unchanged
                   1525: .TE
                   1526: The number register
                   1527: .CW .j
                   1528: contains the current value of the
                   1529: .CW ad
                   1530: setting;
                   1531: its value can be recorded and used subsequently to set adjustment.
                   1532: .bt "\&\fC.na\fR" "adjust" "-" "E" "Noadjust.
                   1533: Adjustment is turned off;
                   1534: the right margin will be ragged.
                   1535: The adjustment type for \&\fCad\fR is not changed.
                   1536: Output line filling still occurs if fill mode is on.
                   1537: .bt "\&\fC.ce\fI N\fR" "off" "@N=1@" "B,E" "Center the next @N@ input text lines
                   1538: within the current available horizontal space (line-length minus indent).
                   1539: If @N=0@, any residual count is cleared.
                   1540: A break occurs after each of the @N@ input lines.
                   1541: If the input line is too long,
                   1542: it will be left adjusted.
                   1543: .NH
                   1544: Vertical Spacing
                   1545: .sc "Baseline spacing.
                   1546: The vertical spacing @(V)@ between the baselines of successive
                   1547: output lines can be set
                   1548: using the \&\fCvs\fR request.
                   1549: \fIV\fR should be large enough to accommodate the character sizes
                   1550: on the affected output lines.
                   1551: For the common type sizes (9-12 points),
                   1552: usual typesetting practice is to set \fIV\fR to 2 points greater than the
                   1553: point size;
                   1554: \*(TR default is 10-point type on a 12-point spacing
                   1555: (as in this document).
                   1556: The current \fIV\fR is available in the \&\fC.v\fR register.
                   1557: Multiple-\fIV\|\fR line separation (e.g., double spacing) may be requested
                   1558: with \&\fCls\fR,
                   1559: but it is better to use a large
                   1560: .CW vs
                   1561: instead;
                   1562: certain preprocessors assume single spacing.
                   1563: The current line spacing is available in the \&\fC.L\fP register.
                   1564: .sc "Extra line-space.
                   1565: If a word contains a vertically tall construct requiring
                   1566: the output line containing it to have extra vertical space
                   1567: before and/or after it,
                   1568: the \fIextra-line-space\fR function \&\fC\ex'\fIN\fP'\fR
                   1569: can be embedded in or attached to that word.
                   1570: If @N@ is negative,
                   1571: the output line containing the word will
                   1572: be preceded by @N@ extra vertical space;
                   1573: if @N@ is positive,
                   1574: the output line containing the word
                   1575: will be followed by @N@ extra vertical space.
                   1576: If successive requests for extra space apply to the same line,
                   1577: the maximum values are used.
                   1578: The most recently utilized post-line extra line-space is available in the \&\fC.a\fR register.
                   1579: .PP
                   1580: In
                   1581: .CW \ex'\f2...\fP'
                   1582: and other functions having a pair of delimiters around
                   1583: their parameter,
                   1584: the delimiter choice (here 
                   1585: .CW ' )
                   1586: is arbitrary,
                   1587: except that it can not look like the continuation of a number expression for @N@.
                   1588: .sc "Blocks of vertical space.
                   1589: A block of vertical space is ordinarily requested using \&\fCsp\fR,
                   1590: which honors the \fIno-space\fR mode and which does
                   1591: not space past a trap.
                   1592: A contiguous block of vertical space may be reserved using \&\fCsv\fR.
                   1593: .bt "\&\fC.vs \fIN\fR" "12pts; 1/6in" "previous" "E,\fBp\fR" "Set vertical baseline spacing size \fIV\fR.
                   1594: Transient extra vertical space is available with \&\fC\ex\fI'N\|\|'\fR (see above).
                   1595: .bt "\&\fC.ls \fIN\fR" "@N=1@" "previous" "E" "\fILine\fR spacing
                   1596: set to @+- N@.
                   1597: @N-1@ \fIV\fR\^s (blank lines) are
                   1598: appended to each output text line.
                   1599: Appended blank lines are omitted, if the text or previous appended blank line reached a trap position.
                   1600: .bt "\&\fC.sp \fIN\fR" "-" "@N=1~V@" "B,\fBv\fR" "Space vertically in either direction.
                   1601: If @N@ is negative, the motion is backward (upward)
                   1602: and is limited to the distance to the top of the page.
                   1603: Forward (downward) motion is truncated to the distance to the
                   1604: nearest trap.
                   1605: If the no-space mode is on,
                   1606: no spacing occurs (see \&\fCns\fR, and \&\fCrs\fR below).
                   1607: .bt "\&\fC.sv\fI N\fR" "-" "@N=1~V@" "\fBv\fR" "Save a contiguous vertical block of size @N@.
                   1608: If the distance to the next trap is greater
                   1609: than @N@, @N@ vertical space is output.
                   1610: No-space mode has no effect.
                   1611: If this distance is less than @N@,
                   1612: no vertical space is immediately output,
                   1613: but @N@ is remembered for later output (see \&\fCos\fR).
                   1614: Subsequent \&\fCsv\fR requests will overwrite any still remembered @N@.
                   1615: .bt "\&\fC.os\fR" "-" "-" "-" "Output saved vertical space.
                   1616: No-space mode has no effect.
                   1617: Used to finally output a block of vertical space requested
                   1618: by an earlier \&\fCsv\fR request.
                   1619: .bt "\&\fC.ns\fR" "space" "-" "D" "No-space mode turned on.
                   1620: When on, no-space mode inhibits \&\fCsp\fR requests and
                   1621: \&\fCbp\fR requests \fIwithout\fR a next page number.
                   1622: No-space mode is turned off when a line of
                   1623: output occurs, or with \&\fCrs\fR.
                   1624: .bt "\&\fC.rs\fR" "space" "-" "D" "Restore spacing.
                   1625: The no-space mode is turned off.
                   1626: .bt "\&Blank text line." "" "-" "B" "Causes a break and
                   1627: output of a blank line exactly like \&\fCsp 1\fR.
                   1628: .NH
                   1629: Line Length and Indenting
                   1630: .PP
                   1631: The maximum line length for fill mode may be set with \&\fCll\fR.
                   1632: The indent may be set with \&\fCin\fR;
                   1633: an indent applicable to only the next output line may be set with \&\fCti\fR.
                   1634: The line length includes indent space but not
                   1635: page offset space.
                   1636: The line length minus the indent is the basis for centering with \&\fCce\fR.
                   1637: The effect of \&\fCll\fR, \&\fCin\fR, or \&\fCti\fR
                   1638: is delayed, if a partially collected line exists,
                   1639: until after that line is output.
                   1640: In fill mode the length of text on an output line is less than or equal to
                   1641: the line length minus the indent.
                   1642: The current line length and indent are available in registers \&\fC.l\fR and \&\fC.i\fR respectively.
                   1643: The length of \fIthree-part titles\fR produced by \&\fCtl\fR
                   1644: (see \(sc14) is independently set by \&\fClt\fR.
                   1645: .bt "\&\fC.ll\fI \(+-N\fR" "6.5\|in" "previous" "E,\fBm\fR" "Line length is set to \(+-@N@.
                   1646: .bt "\&\fC.in\fI \(+-N\fR" "\fIN\(eq\^\fR0" "previous" "B,E,\fBm\fR" "Indent is set to @+- N@.
                   1647: The indent is prepended to each output line.
                   1648: .bt "\&\fC.ti\fI \(+-N\fR" "-" "ignored" "B,E,\fBm\fR" "Temporary indent.
                   1649: The next output text line will be indented a distance @+- N@
                   1650: with respect to the current indent.
                   1651: The resulting total indent may not be negative.
                   1652: The current indent is not changed.
                   1653: .NH
                   1654: Macros, Strings, Diversion, and Position Traps
                   1655: .sc "Macros and strings.
                   1656: A \fImacro\fR is a named set of arbitrary \fIlines\fR that may be invoked by name or
                   1657: with a \fItrap\fR.
                   1658: A \fIstring\fR is a named string of \fIcharacters\fR,
                   1659: not including a newline character,
                   1660: that may be interpolated by name at any point.
                   1661: Request, macro, and string names share the same name list.
                   1662: Macro and string names
                   1663: may be one or two characters long and may usurp previously defined
                   1664: request, macro, or string names;
                   1665: this implies that built-in operations may be (irrevocably) redefined.
                   1666: Any of these entities may be renamed with \&\fCrn\fR
                   1667: or removed with \&\fCrm\fR.
                   1668: .PP
                   1669: Macros are created by \&\fCde\fR and \&\fCdi\fR, and appended to by \&\fCam\fR and \&\fCda\fR;
                   1670: \&\fCdi\fR and \&\fCda\fR cause normal output to be stored in a macro.
                   1671: A macro is invoked in the same way as a request;
                   1672: a control line beginning \&\fC.\fIxx\fR will interpolate the contents of macro \fIxx\fR.
                   1673: The remainder of the line may contain up to nine \fIarguments\fR.
                   1674: .PP
                   1675: Strings are created by \&\fCds\fR and appended to by \&\fCas\fR.
                   1676: The strings \fIx\fR and \fIxx\fR are interpolated at any desired point with
                   1677: \&\fC\e\(**\fIx\fR and \&\fC\e\(**(\fIxx\fR respectively.
                   1678: String references and macro invocations may be nested.
                   1679: .sc "Copy mode input interpretation.
                   1680: During the definition and extension
                   1681: of strings and macros (not by diversion)
                   1682: the input is read in \fIcopy mode\fR.
                   1683: In copy mode, input is copied without interpretation
                   1684: except that:
                   1685: .IP
                   1686: .ds + \v'-.1m'\s-4\(bu\s+4\v'+.1m'
                   1687: .nf
                   1688: \*+ The contents of number registers indicated by \&\fC\en\fR are interpolated.
                   1689: \*+ Strings indicated by \&\fC\e\(**\fR are interpolated.
                   1690: \*+ Arguments indicated by \&\fC\e$\fR are interpolated.
                   1691: \*+ Concealed newlines indicated by \&\fC\e\fP\f2newline\fP are eliminated.
                   1692: \*+ Comments indicated by \&\fC\e"\fR are eliminated.
                   1693: \*+ \&\fC\et\fR and \&\fC\ea\fR are interpreted as \s-1ASCII\s+1 horizontal tab and \s-1SOH\s+1 respectively (\(sc9).
                   1694: \*+ \&\fC\e\e\fR is interpreted as \&\fC\e\fR.
                   1695: \*+ \&\fC\e.\fR is interpreted as ``\&\fC.\fR''.
                   1696: .LP
                   1697: These interpretations can be suppressed by
                   1698: prepending
                   1699: a \&\fC\e\fR.
                   1700: For example, since \&\fC\e\e\fR maps into a \&\fC\e\fR, \&\fC\e\en\fR will copy as \&\fC\en\fR, which
                   1701: will be interpreted as a number register indicator when the
                   1702: macro or string is reread.
                   1703: .sc "Arguments.
                   1704: When a macro is invoked by name, the remainder of the line is
                   1705: taken to contain up to nine arguments.
                   1706: The argument separator is the space character (not tab), and arguments
                   1707: may be surrounded by double quotes to permit embedded space characters.
                   1708: Pairs of double quotes may be embedded in double-quoted arguments to
                   1709: represent a single double-quote character.
                   1710: The argument
                   1711: .CW \&""
                   1712: is explicitly null.
                   1713: If the desired arguments won't fit on a line,
                   1714: a concealed newline may be used to continue on the next line.
                   1715: A trailing double quote may be omitted.
                   1716: .PP
                   1717: When a macro is invoked the \fIinput level\fR is \fIpushed down\fR and
                   1718: any arguments available at the previous level become unavailable
                   1719: until the macro is completely read and the previous level is restored.
                   1720: A macro's own arguments can be interpolated at any point
                   1721: within the macro with
                   1722: .CW \e$@N@ ,
                   1723: which interpolates the @N@\^th
                   1724: argument
                   1725: (1\(<=@N@\^\(<=9).
                   1726: If an invoked argument does not exist,
                   1727: a null string results.
                   1728: For example, the macro \fIxx\fR may be defined by
                   1729: .P1
                   1730: .ta .75i
                   1731: &de xx \e" begin definition
                   1732: Today is \e\e$1 the \e\e$2.
                   1733: &.     \e" end definition
                   1734: .P2
                   1735: and called by
                   1736: .P1
                   1737: &xx Monday 14th
                   1738: .P2
                   1739: to produce the text
                   1740: .P1
                   1741: Today is Monday the 14th.
                   1742: .P2
                   1743: Note that each \&\fC\e$\fR
                   1744: was concealed in the definition with a prepended \&\fC\e\fR.
                   1745: The number of
                   1746: arguments is in the \&\fC.$\fR register.
                   1747: .PP
                   1748: No arguments are available at the top (non-macro) level,
                   1749: within a string, or within a trap-invoked macro.
                   1750: .PP
                   1751: Arguments are copied in copy mode onto a stack
                   1752: where they are available for reference.
                   1753: It is advisable to
                   1754: conceal string references (with an extra \&\fC\e\fR\|)
                   1755: to delay interpolation until argument reference time.
                   1756: .sc "Diversions.
                   1757: Processed output may be diverted into a macro for purposes
                   1758: such as footnote processing (see Tutorial \(scT5)
                   1759: or determining the horizontal and vertical size of some text for
                   1760: conditional changing of pages or columns.
                   1761: A single diversion trap may be set at a specified vertical position.
                   1762: The number registers \&\fCdn\fR and \&\fCdl\fR respectively contain the
                   1763: vertical and horizontal size of the most
                   1764: recently ended diversion.
                   1765: Processed text that is diverted into a macro
                   1766: retains the vertical size of each of its lines when reread
                   1767: in \fInofill\fR mode
                   1768: regardless of the current \fIV\fR.
                   1769: Constant-spaced (\&\fCcs\fR) or emboldened (\&\fCbd\fR) text that is diverted
                   1770: can be reread correctly only if these modes are again or still in effect
                   1771: at reread time.
                   1772: One way to do this is to embed in the diversion the appropriate
                   1773: \&\fCcs\fR or \&\fCbd\fR requests with the \fItransparent\fR
                   1774: mechanism described in \(sc10.6.
                   1775: .PP
                   1776: Diversions may be nested
                   1777: and certain parameters and registers
                   1778: are associated
                   1779: with the current diversion level
                   1780: (the top non-diversion level may be thought of as the
                   1781: 0th diversion level).
                   1782: These are the diversion trap and associated macro,
                   1783: no-space mode,
                   1784: the internally-saved marked place (see \&\fCmk\fR and \&\fCrt\fR),
                   1785: the current vertical place (\&\fC.d\fR register),
                   1786: the current high-water text baseline (\&\fC.h\fR register),
                   1787: and the current diversion name (\&\fC.z\fR register).
                   1788: .sc "Traps.
                   1789: Three types of trap mechanisms are available\(empage traps, a diversion trap, and
                   1790: an input-line-count trap.
                   1791: Macro-invocation traps may be planted using \&\fCwh\fR at any page position including the top.
                   1792: This trap position may be changed using \&\fCch\fR.
                   1793: Trap positions at or below the bottom of the page
                   1794: have no effect unless or until
                   1795: moved to within the page or rendered effective by an increase in page length.
                   1796: Two traps may be planted at the same position only by first planting them at different
                   1797: positions and then moving one of the traps;
                   1798: the first planted trap will conceal the second unless and until the first one is moved
                   1799: (see Tutorial Examples).
                   1800: If the first one is moved back, it again conceals the second trap.
                   1801: The macro associated with a page trap is automatically
                   1802: invoked when a line of text is output whose vertical size reaches
                   1803: or sweeps past the trap position.
                   1804: Reaching the bottom of a page springs the top-of-page trap, if any,
                   1805: provided there is a next page.
                   1806: The distance to the next trap position is available in the \&\fC.t\fR register;
                   1807: if there are no traps between the current position and the bottom of the page,
                   1808: the distance returned is the distance to the page bottom.
                   1809: .PP
                   1810: A macro-invocation trap effective in the current diversion may be planted using \&\fCdt\fR.
                   1811: The \&\fC.t\fR register works in a diversion; if there is no subsequent trap a large
                   1812: distance is returned.
                   1813: For a description of input-line-count traps, see \&\fCit\fR below.
                   1814: .bt "\&\fC&de\fI xx yy\fR" "-" "\fI.yy=\&\fC..\fR" "-" "Define or redefine the macro \fIxx\fR.
                   1815: The contents of the macro begin on the next input line.
                   1816: Input lines are copied in \fIcopy mode\fR until the definition is terminated by a
                   1817: line beginning with \&\fC.\fIyy\fR,
                   1818: whereupon the macro \fIyy\fR is called.
                   1819: In the absence of \fIyy\fR, the definition
                   1820: is terminated by a
                   1821: line beginning with ``\&\fC..\fR''.
                   1822: A macro may contain \&\fCde\fR requests
                   1823: provided the terminating macros differ
                   1824: or the contained definition terminator is concealed.
                   1825: \&``\&\fC..\fR'' can be concealed as
                   1826: \&\fC\e\e..\fR which will copy as \&\fC\e..\fR and be reread as ``\&\fC..\fR''.
                   1827: .bt "\&\fC&am\fI xx yy\fR" "-" "\fI.yy=\&\fC..\fR" "-" "Append to macro
                   1828: .I xx
                   1829: (append version of \&\fCde\fR).
                   1830: .bt "\&\fC&ds\fI xx string\fR" "-" "ignored" "-" "Define a string
                   1831: \fIxx\fR containing \fIstring\fR.
                   1832: Any initial double quote in \fIstring\fR is stripped off to permit
                   1833: initial blanks.
                   1834: .bt "\&\fC&as\fI xx string\fR" "-" "ignored" "-" "Append
                   1835: \fIstring\fR to string \fIxx\fR
                   1836: (append version of \&\fCds\fR).
                   1837: .bt "\&\fC&rm\fI xx\fR" "-" "ignored" "-" "Remove
                   1838: request, macro, or string.
                   1839: The name \fIxx\fR is removed from the name list and
                   1840: any related storage space is freed.
                   1841: Subsequent references will have no effect.
                   1842: If many macros and strings are being created dynamically, it
                   1843: may become necessary to remove unused ones
                   1844: to recapture internal storage space for newer registers.
                   1845: .bt "\&\fC&rn\fI xx yy\fR" "-" "ignored" "-" "Rename request, macro, or string
                   1846: \fIxx\fR to \fIyy\fR.
                   1847: If \fIyy\fR exists, it is first removed.
                   1848: .bt "\&\fC&di\fI xx\fR" "-" "end" "D" "Divert output to macro \fIxx\fR.
                   1849: Normal text processing occurs during diversion
                   1850: except that page offsetting is not done.
                   1851: The diversion ends when the request \&\fCdi\fR or \&\fCda\fR is encountered without an argument;
                   1852: extraneous
                   1853: requests of this type should not appear when nested diversions are being used.
                   1854: .bt "\&\fC&da \fIxx\fR" "-" "end" "D" "Divert, appending to macro \fIxx\fR
                   1855: (append version of \&\fCdi\fR).
                   1856: .bt "\&\fC&wh\fI N xx\fR" "-" "-" "\fBv\fR" "Install
                   1857: a trap to invoke \fIxx\fR at page position \fIN\fR;
                   1858: a negative N will be interpreted as a distance from the
                   1859: page bottom.
                   1860: Any macro previously planted at @N@ is replaced by \fIxx\fR.
                   1861: A zero @N@ refers to the top of a page.
                   1862: In the absence of \fIxx\fR, the first trap found at @N@, if any, is removed.
                   1863: .bt "\&\fC&ch\fI xx N\fR" "-" "-" "\fBv\fR" "Change
                   1864: the trap position for macro \fIxx\fR to be @N@.
                   1865: In the absence of @N@, the trap, if any, is removed.
                   1866: .bt "\&\fC&dt\fI N xx\fR" "-" "off" "D,\fBv\fR" "Install a diversion trap
                   1867: at position @N@ in the \fIcurrent\fR diversion to invoke
                   1868: macro \fIxx\fR.
                   1869: Another \&\fCdt\fR will redefine the diversion trap.
                   1870: If no arguments are given, the diversion trap is removed.
                   1871: .bt "\&\fC&it\fI N xx\fR" "-" "off" "E" "Set an input-line-count trap
                   1872: to invoke the macro \fIxx\fR after @N@ lines of \fItext\fR input
                   1873: have been read
                   1874: (control or request lines do not count).
                   1875: The text may be inline text or
                   1876: text interpolated by inline or trap-invoked macros.
                   1877: .bt "\&\fC&em\fI xx\fR" "none" "none" "-" "The
                   1878: macro \fIxx\fR will be invoked
                   1879: when all input has ended.
                   1880: The effect is almost as if the contents of \fIxx\fR had been at the end
                   1881: of the last file processed,
                   1882: but all processing ceases at the next page eject.
                   1883: .NH
                   1884: Number Registers
                   1885: .PP
                   1886: A variety of parameters are available to the user as
                   1887: predefined \fInumber registers\fR (see Summary, page \n(*%).
                   1888: In addition, users may define their own registers.
                   1889: Register names are one or two characters long and do not conflict
                   1890: with request, macro, or string names.
                   1891: Except for certain predefined read-only registers,
                   1892: a number register can be read, written, automatically
                   1893: incremented or decremented, and interpolated
                   1894: into the input in a variety of formats.
                   1895: One common use of user-defined registers is to
                   1896: automatically number sections, paragraphs, lines, etc.
                   1897: A number register may be used any time numerical input is expected or desired
                   1898: and may be used in numerical \fIexpressions\fR (\(sc1.4).
                   1899: .PP
                   1900: Number registers are created and modified using \&\fCnr\fR, which
                   1901: specifies the name, numerical value, and the auto-increment size.
                   1902: Registers are also modified, if accessed
                   1903: with an auto-incrementing sequence.
                   1904: If the registers \fIx\fR and \fIxx\fR both contain
                   1905: @N@ and have the auto-increment size @M@,
                   1906: the following access sequences have the effect shown:
                   1907: .TS
                   1908: center box;
                   1909: c2|c2|c
                   1910: c2|c2|c2
                   1911: l2|c2|c2
                   1912: l2|c2|c2
                   1913: l2|l2|c2.
                   1914:        Effect on       Value
                   1915: Sequence       Register        Interpolated
                   1916: _
                   1917: \&\fC\en\fIx\fR        none    @N@
                   1918: \&\fC\en(\fIxx\fR      none    @N@
                   1919: \&\fC\en+\fIx\fR       \fIx\fR incremented by @M@      \fIN+M\fR
                   1920: \&\fC\en\-\fIx\fR      \fIx\fR decremented by @M@      \fIN\-M\fR
                   1921: \&\fC\en+(\fIxx\fR     \fIxx\fR incremented by @M@     \fIN+M\fR
                   1922: \&\fC\en\-(\fIxx\fR    \fIxx\fR decremented by @M@     \fIN\-M\fR
                   1923: .TE
                   1924: When interpolated, a number register is converted to
                   1925: decimal (default),
                   1926: decimal with leading zeros,
                   1927: lower-case Roman,
                   1928: upper-case Roman,
                   1929: lower-case sequential alphabetic,
                   1930: or
                   1931: upper-case sequential alphabetic
                   1932: according to the format specified by \&\fCaf\fR.
                   1933: .bt "\&\fC&nr\fI R \(+-N M\fR" "" "-" "\fBu\fR" "The number register
                   1934: @R@ is assigned the value @+- N@
                   1935: with respect to the previous value, if any.
                   1936: The increment for auto-incrementing is set to @M@.
                   1937: .bt "\&\fC&af\fI R c\fR" "arabic" "-" "-" "Assign
                   1938: format @c@ to register @R@.
                   1939: The available formats are:
                   1940: .Tm number register format     s
                   1941: .TS
                   1942: center box;
                   1943: c2|c
                   1944: c2|c
                   1945: c2|l.
                   1946:        Numbering
                   1947: Format Sequence
                   1948: _
                   1949: \&\fC1\fR      0, 1, 2, 3, 4, 5, ...
                   1950: \&\fC001\fR    000, 001, 002, 003, 004, 005, ...
                   1951: \&\fCi\fR      0, i, ii, iii, iv, v, ...
                   1952: \&\fCI\fR      0, I, II, III, IV, V, ...
                   1953: \&\fCa\fR      0, a, b, c, ..., z, aa, ab, ..., zz, aaa, ...
                   1954: \&\fCA\fR      0, A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, ...
                   1955: .TE
                   1956: An arabic format having @N@ digits
                   1957: specifies a field width of @N@ digits (example 2 above).
                   1958: The read-only registers and the width function
                   1959: .CW \ew
                   1960: (\(sc11.2)
                   1961: are always arabic.
                   1962: Warning: the value of a number register in a non-arabic format
                   1963: is not numeric, and will not produce the expected results in expressions.
                   1964: .IP
                   1965: The function
                   1966: .CW \eg@x@
                   1967: or
                   1968: .CW \eg(@xx@
                   1969: returns the format of a number register in a form suitable for
                   1970: .CW af ;
                   1971: it returns nothing if the register has not been used.
                   1972: .bt "\&\fC&rr\fI R\fR" "-" "ignored" "-" "Remove number register @R@.
                   1973: If many registers are being created dynamically, it
                   1974: may become necessary to remove unused registers
                   1975: to recapture internal storage space for newer registers.
                   1976: The register
                   1977: .CW .R
                   1978: contains the number of number registers still available.
                   1979: .NH
                   1980: Tabs, Leaders, and Fields
                   1981: .sc "Tabs and leaders.
                   1982: The \s-1ASCII\s+1 horizontal tab character and the \s-1ASCII\s+1
                   1983: \s-1SOH\s+1 (control-A, hereafter called the \fIleader\fR character)
                   1984: can both be used to generate either horizontal motion or
                   1985: a string of repeated characters.
                   1986: The length of the generated entity is governed
                   1987: by internal \fItab stops\fR specifiable
                   1988: with \&\fCta\fR.
                   1989: The default difference is that tabs generate motion and leaders generate
                   1990: a string of periods;
                   1991: \&\fCtc\fR and \&\fClc\fR
                   1992: offer the choice of repeated character or motion.
                   1993: There are three types of internal tab stops\(em\
                   1994: \fIleft\fR adjusting, \fIright\fR adjusting,
                   1995: and \fIcentering\fR.
                   1996: In the following table,
                   1997: \fID\fR is the distance from the current position on the \fIinput\fR line
                   1998: (where a tab or leader was found)
                   1999: to the next tab stop,
                   2000: \fInext-string\fR consists
                   2001: of the input characters following the tab (or leader) up to the next tab (or leader) or end of line,
                   2002: and
                   2003: \fIW\fR is the width of \fInext-string\fR.
                   2004: .TS
                   2005: center box;
                   2006: c2|c2|c
                   2007: c2|c2|c
                   2008: c2|c2|l.
                   2009: Tab    Length of motion or     Location of
                   2010: type   repeated characters     \fInext-string\fR
                   2011: _
                   2012: Left   \fID\fR Following \fID\fR
                   2013: Right  \fID\-W\fR      Right adjusted within \fID\fR
                   2014: Centered       \fID\-W/\fR2    Centered on right end of \fID\fR
                   2015: .TE
                   2016: The length of generated motion is allowed to be negative, but
                   2017: that of a repeated character string cannot be.
                   2018: Repeated character strings contain an integer number of characters, and
                   2019: any residual distance is prepended as motion.
                   2020: Tabs or leaders found after the last tab stop are ignored, but may be used
                   2021: as \fInext-string\fR terminators.
                   2022: .PP
                   2023: Tabs and leaders are not interpreted in copy mode.
                   2024: \&\fC\et\fR and \&\fC\ea\fR always generate a non-interpreted
                   2025: tab and leader respectively, and
                   2026: are equivalent to actual tabs and leaders in copy mode.
                   2027: .sc "Fields.
                   2028: A \fIfield\fR is contained between
                   2029: a pair of \fIfield delimiter\fR characters,
                   2030: and consists of sub-strings
                   2031: separated by \fIpadding\fR indicator characters.
                   2032: The field length is the distance on the
                   2033: \fIinput\fR line from the position where the field begins to the next tab stop.
                   2034: The difference between the total length of all the sub-strings
                   2035: and the field length is incorporated as horizontal
                   2036: padding space that is divided among the indicated
                   2037: padding places.
                   2038: The incorporated padding is allowed to be negative.
                   2039: For example,
                   2040: if the field delimiter is \&\fC#\fR and the padding indicator is \&\fC^\fR,
                   2041: \&\fC#^\fIxxx\&\fC^\fIright\|\&\fC#\fR
                   2042: specifies a right-adjusted string with the string \fIxxx\fR centered
                   2043: in the remaining space.
                   2044: .h1
                   2045: .bt "\&\fC&ta\fI Nt ...\fR" "0.8; 0.5in" "none" "E,\fBm\fR" "Set tab stops and types.
                   2046: \fIt=\&\fCR\fR, right adjusting;
                   2047: \fIt=\&\fCC\fR, centering;
                   2048: \fIt\fR absent, left adjusting.
                   2049: \*(Tr tab stops are preset every 0.5in.,
                   2050: \*(NR every 0.8in.
                   2051: The stop values are separated by spaces, and
                   2052: a value preceded by \&\fC+\fR
                   2053: is treated as an increment to the previous stop value.
                   2054: .bt "\&\fC&tc\fI c\fR" "none" "none" "E" "The tab repetition character
                   2055: becomes @c@,
                   2056: or is removed, thus specifying motion.
                   2057: .bt "\&\fC&lc\fI c\fR" "\&\fC.\fR" "none" "E" "The leader repetition character
                   2058: becomes @c@,
                   2059: or is removed, thus specifying motion.
                   2060: .bt "\&\fC&fc\fI a b\fR" "off" "off" "-" "The field delimiter
                   2061: is set to \fIa\fR;
                   2062: the padding indicator is set to the space character or to
                   2063: \fIb\fR, if given.
                   2064: In the absence of arguments the field mechanism is turned off.
                   2065: .NH
                   2066: Input and Output Conventions and Character Translations
                   2067: .sc "Input character translations.
                   2068: Ways of inputting the valid character set were
                   2069: discussed in \(sc2.1.
                   2070: The \s-1ASCII\s+1 control characters horizontal tab (\(sc9.1),
                   2071: \s-1SOH\s+1 (\(sc9.1), and backspace (\(sc10.3) are discussed elsewhere.
                   2072: The newline delimits input lines.
                   2073: In addition,
                   2074: \s-1STX\s+1, \s-1ETX\s+1, \s-1ENQ\s+1, \s-1ACK\s+1, and \s-1BEL\s+1
                   2075: are accepted,
                   2076: and may be used as delimiters or translated into a graphic with \&\fCtr\fR (\(sc10.5).
                   2077: All others are ignored.
                   2078: .PP
                   2079: The \fIescape\fR character \&\fC\e\fR
                   2080: introduces \fIescape sequences\fR,
                   2081: which cause the following character to mean
                   2082: another character, or to indicate
                   2083: some function.
                   2084: .nr %% \n(*%-1
                   2085: A complete list of such sequences is given in the Summary on page \n(%%.
                   2086: The escape character \&\fC\e\fR
                   2087: should not be confused with the \s-1ASCII\s+1 control character \s-1ESC\s+1.
                   2088: The escape character \&\fC\e\fR can be input with the sequence \&\fC\e\e\fR.
                   2089: The escape character can be changed with \&\fCec\fR,
                   2090: and all that has been said about the default \&\fC\e\fR becomes true
                   2091: for the new escape character.
                   2092: \&\fC\ee\fR can be used to print whatever the current escape character is.
                   2093: The escape mechanism may be turned off with \&\fCeo\fR,
                   2094: and restored with \&\fCec\fR.
                   2095: .h1
                   2096: .bt "\&\fC&ec\fI c\fR" "\&\fC\e\fR" "\&\fC\e\fR" "-" "Set escape character
                   2097: to \&\fC\e\fR, or to @c@, if given.
                   2098: .bt "\&\fC&eo\fR" "on" "-" "-" "Turn escape mechanism off.
                   2099: .sc "Ligatures.
                   2100: .lg0
                   2101: The set of available ligatures is device and font dependent,
                   2102: but is often a subset of
                   2103: \&\fC\(fi\fR, \&\fC\(fl\fR, \&\fC\(ff\fR, \&\fC\(Fi\fR, and \&\fC\(Fl\fR.
                   2104: They may be input by
                   2105: \&\fC\e(fi\fR, \&\fC\e(fl\fR, \&\fC\e(ff\fR, \&\fC\e(Fi\fR, and \&\fC\e(Fl\fR respectively.
                   2106: .lg
                   2107: The ligature mode is normally on in \*(TR, and automatically invokes 
                   2108: ligatures during input.
                   2109: .h1
                   2110: .bt "\&\fC&lg\fI N\fR" "on; off" "on" "-" "Ligature mode
                   2111: is turned on if @N@ is absent or non-zero,
                   2112: and turned off if @N=0@.
                   2113: If @N=2@, only the two-character ligatures are automatically invoked.
                   2114: Ligature mode is inhibited for
                   2115: request, macro, string, register, or file names,
                   2116: and in copy mode.
                   2117: No effect in \*(NR.
                   2118: .sc "Backspacing, underlining, overstriking, etc.
                   2119: Unless in copy mode, the \s-1ASCII\s+1 backspace character is replaced
                   2120: by a backward horizontal motion having the width of the
                   2121: space character.
                   2122: Underlining as a form of line-drawing is discussed in \(sc12.4.
                   2123: A generalized overstriking function is described in \(sc12.1.
                   2124: .PP
                   2125: \*(Nr automatically underlines
                   2126: characters in the \fIunderline\fR font,
                   2127: specifiable with \&\fCuf\fR,
                   2128: normally that on font position 2.
                   2129: In addition to \&\fCft\fR and
                   2130: .CW \ef@F@ ,
                   2131: the underline font may be selected by \&\fCul\fR and \&\fCcu\fR.
                   2132: Underlining is restricted to an output-device-dependent
                   2133: subset of reasonable characters.
                   2134: .bt "\&\fC&ul\fI N\fR" "off" "@N=1@" "E" "Italicize in \*(TR
                   2135: (underline in \*(NR) the next @N@
                   2136: input text lines.
                   2137: Actually, switch to underline font, saving the
                   2138: current font for later restoration;
                   2139: other font changes within the span of a \&\fCul\fR
                   2140: will take effect,
                   2141: but the restoration will undo the last change.
                   2142: Output generated by \&\fCtl\fR (\(sc14) is affected by the
                   2143: font change, but does not decrement @N@.
                   2144: If @N>1@, there is the risk that
                   2145: a trap interpolated macro may provide text
                   2146: lines within the span;
                   2147: environment switching can prevent this.
                   2148: .bt "\&\fC&cu\fI N\fR" "off" "@N=1@" "E" "Continuous underline.
                   2149: A variant
                   2150: of \&\fCul\fR that causes \fIevery\fR character to be underlined in \*(NR.
                   2151: Identical to \&\fCul\fR in \*(TR.
                   2152: .bt "\&\fC&uf\fI F\fR" "Italic" "Italic" "-" "Underline font set to @F@.
                   2153: In \*(NR,
                   2154: @F@ may not be on position 1.
                   2155: .sc "Control characters.
                   2156: Both the control character \&\fC.\fR and the \fIno-break\fR
                   2157: control character \&\fC'\fR may be changed.
                   2158: Such a change must be compatible with the design
                   2159: of any macros used in the span of the change,
                   2160: and
                   2161: particularly of any trap-invoked macros.
                   2162: .bt "\&\fC&cc\fI c\fR" "\&\fC.\fR" "\&\fC.\fR" "E" "The basic control character
                   2163: is set to @c@,
                   2164: or reset to ``\&\fC.\fR''.
                   2165: .bt "\&\fC&c2\fI c\fR" "\&\fC'" "'\fR" "E" "The \fIno-break\fR control character is set
                   2166: to @c@, or reset to ``\&\fC'\fR''.
                   2167: .sc "Output translation.
                   2168: One character can be made a stand-in for another character using \&\fCtr\fR.
                   2169: All text processing (e.g., character comparisons) takes place
                   2170: with the input (stand-in) character which appears to have the width of the final
                   2171: character.
                   2172: The graphic translation occurs at the moment of output
                   2173: (including diversion).
                   2174: .bt "\&\fC&tr\fI abcd....\fR" "none" "-" "O" "Translate
                   2175: \fIa\fR into \fIb\fR, @c@ into \fId\fR, etc.
                   2176: If an odd number of characters is given,
                   2177: the last one will be mapped into the space character.
                   2178: To be consistent, a particular translation
                   2179: must stay in effect from \fIinput\fR to \fIoutput\fR time.
                   2180: .sc "Transparent throughput.
                   2181: An input line beginning with a \&\fC\e!\fR is read in copy mode and \fItrans\%parently\fR output
                   2182: (without the initial \&\fC\e!\fR);
                   2183: the text processor is otherwise unaware of the line's presence.
                   2184: This mechanism may be used to pass control information to a post-processor
                   2185: or to embed control lines in a macro created by a diversion.
                   2186: .sc "Transparent output
                   2187: The sequence
                   2188: .CW \eX'@anything@'
                   2189: copies
                   2190: .I anything
                   2191: to the output, as a device control function of the form
                   2192: .CW x
                   2193: .CW X 
                   2194: .I anything 
                   2195: (\(sc22).
                   2196: Escape sequences in
                   2197: .I anything
                   2198: are processed.
                   2199: .sc "Comments and concealed newlines.
                   2200: An uncomfortably long input line that must stay
                   2201: one line (e.g., a string definition, or nofilled text)
                   2202: can be split into several physical lines by ending all but
                   2203: the last one with the escape \&\fC\e\fR.
                   2204: The sequence \&\fC\e\fR@newline@ is always ignored,
                   2205: except in a comment.
                   2206: Comments may be embedded at the end of any line by
                   2207: prefacing them with \&\fC\e"\fR.
                   2208: The newline at the end of a comment cannot be concealed.
                   2209: A line beginning with \&\fC\e"\fR will appear as a blank line and
                   2210: behave like
                   2211: .CW ".sp\ 1" ;
                   2212: a comment can be on a line by itself by beginning the line with \&\fC.\e"\fR.
                   2213: .NH
                   2214: Local Horizontal and Vertical Motions, and the Width Function
                   2215: .sc "Local Motions.
                   2216: The functions \&\fC\ev'\fIN\&\fC'\fR and
                   2217: \&\fC\eh'\fIN\&\fC'\fR
                   2218: can be used for \fIlocal\fR vertical and horizontal motion respectively.
                   2219: The distance @N@ may be negative; the positive directions
                   2220: are rightward and downward.
                   2221: A local motion is one contained within a line.
                   2222: To avoid unexpected vertical dislocations, it is necessary that
                   2223: the net vertical local motion within a word in filled text
                   2224: and otherwise within a line balance to zero.
                   2225: The above and certain other escape sequences providing local motion are
                   2226: summarized in the following table.
                   2227: .ds Y \0\0\0
                   2228: .TS
                   2229: center box;
                   2230: c2|cs2||c2|cs2
                   2231: c1|c2c2||c2|c2c2.
                   2232: Vertical       Effect in       Horizontal      Effect in
                   2233: Local Motion   \*(TR   \*(NR   Local Motion    \*(TR   \*(NR
                   2234: _
                   2235: .sp.4
                   2236: .TC
                   2237: l2|ls2||l2|ls2.
                   2238: \&\fC\*Y\ev'\fIN\|\fC'\fR      Move distance @N@       \
                   2239: \&\fC\*Y\eh'\fIN\|\fC'\fR      Move distance @N@
                   2240: .TC
                   2241: _2|_2_2||l2|ls2.
                   2242: x      x       x       \&\fC\*Y\e\fP\f2space\fP        Unpaddable space-size space
                   2243: .TC
                   2244: l2|l2|l2||l2|ls2.
                   2245: \&\fC\*Y\eu\fR \(12 em up      \(12 line up    \&\fC\*Y\e0\fR  Digit-size space
                   2246: .TC
                   2247: l2|l2|l2||_2|_2_2.
                   2248: \&\fC\*Y\ed\fR \(12 em down    \(12 line down  x       x       x
                   2249: .TC
                   2250: l2|l2|l2||l2|l2|l2.
                   2251: \&\fC\*Y\er\fR 1 em up 1 line up       \&\fC\*Y\e|\fR  1/6 em space    ignored
                   2252:                        \&\fC\*Y\e^\fR  1/12 em space   ignored
                   2253: .sp.4
                   2254: .TE
                   2255: As an example,
                   2256: \&\fCE\s-2\v'-.4m'2\v'.4m'\s+2\fR
                   2257: could be generated by the sequence
                   2258: \&\fCE\es\-2\ev'\-0.4m'2\ev'0.4m'\es+2\fR;
                   2259: note that
                   2260: the 0.4 em vertical motions are at the smaller size.
                   2261: .sc "Width Function.
                   2262: The \fIwidth\fR function \&\fC\ew'\fIstring\&\fC'\fR
                   2263: generates the numerical width of \fIstring\fR (in basic units).
                   2264: Size and font changes may be embedded in \fIstring\fR,
                   2265: and will not affect the current environment.
                   2266: For example,
                   2267: \&\&\fC.ti\ \-\ew'\efB1.\ 'u\fR could be used to
                   2268: temporarily indent leftward a distance equal to the
                   2269: size of the string ``\&\fC1.\ \fR'' in font
                   2270: .CW B .
                   2271: .PP
                   2272: The width function also sets three number registers.
                   2273: The registers \&\fCst\fR and \&\fCsb\fR are set respectively to the highest and
                   2274: lowest extent of \fIstring\fR relative to the baseline;
                   2275: then, for example,
                   2276: the total height of the string is \&\fC\en(stu\-\en(sbu\fR.
                   2277: In \*(TR the number register \&\fCct\fR is set to a value
                   2278: between 0 and 3.
                   2279: The value
                   2280: 0 means that all of the characters in \fIstring\fR were short lower
                   2281: case characters without descenders (like \&\fCe\fR);
                   2282: 1 means that at least one character has a descender (like \&\fCy\fR);
                   2283: 2 means that at least one character is tall (like \&\fCH\fR);
                   2284: and 3 means that both tall characters and characters with
                   2285: descenders are present.
                   2286: .sc "Mark horizontal place.
                   2287: The function \&\fC\ek\fIx\fR causes the current horizontal
                   2288: position in the \fIinput line\fR to be stored in register \fIx\fR.
                   2289: For example,
                   2290: the construction \&\fC\ekx\fIword\fC\eh'|\enxu+3u'\fIword\&\fC\fR
                   2291: will embolden \fIword\fR by backing up to almost its beginning and overprinting it,
                   2292: resulting in \kz\fIword\fR\h'|\nzu+3u'\fIword\fR.
                   2293: .NH
                   2294: Overstrike, Bracket, Line-drawing, Graphics, and Zero-width Functions
                   2295: .sc "Overstriking.
                   2296: Automatically centered overstriking of up to nine characters
                   2297: is provided by the \fIoverstrike\fR function
                   2298: \&\fC\eo'\fIstring\&\fC\|'\fR.
                   2299: The characters in \fIstring\fR are overprinted with centers aligned; the total width
                   2300: is that of the widest character.
                   2301: \fIstring\fR may not contain local vertical motion.
                   2302: As examples,
                   2303: \&\fC\eo'e\e''\fR produces \o'e\'', and
                   2304: \&\fC\eo'\e(mo\e(sl'\fR produces \o'\(mo\(sl'.
                   2305: .sc "Zero-width characters.
                   2306: The function
                   2307: .CW \ez@c@
                   2308: will output @c@ without spacing over
                   2309: it, and can be used to produce left-aligned overstruck
                   2310: combinations.
                   2311: As examples,
                   2312: \&\fC\ez\e(ci\e(pl\fR will produce \&\fC\z\(ci\(pl\fR, and
                   2313: \&\fC\e(br\ez\e(rn\e(ul\e(br\fR will produce a small
                   2314: constructed box \&\fC\(br\z\(rn\(ul\(br\fR\|.
                   2315: .sc "Large Brackets.
                   2316: The Special Font usually contains a number of bracket construction pieces
                   2317: \|\|\(lt\|\|\(lb\|\|\(rt\|\|\(rb\|\|\(lk\|\|\(rk\|\|\(bv\|\|\(lf\|\|\(rf\|\|\(lc\|\|\(rc\|\|
                   2318: that can be combined into various bracket styles.
                   2319: The function \&\fC\eb'\fIstring\&\fC\|'\fR may be used to pile
                   2320: up vertically the characters in \fIstring\fR
                   2321: (the first character on top and the last at the bottom);
                   2322: the characters are vertically separated by 1 em and the total
                   2323: pile is centered 1/2 em above the current baseline
                   2324: (\(12 line in \*(NR).
                   2325: For example,
                   2326: .P1
                   2327: \eb'\e(lc\e(lf'E\eb'\e(rc\e(rf'\ex'\-0.5m'\ex'0.5m'
                   2328: .P2
                   2329: produces
                   2330: \x'-.5m'\x'.5m'\b'\(lc\(lf'E\b'\(rc\(rf'.
                   2331: .sc "Line drawing.
                   2332: .tr &&
                   2333: The function \&\fC\el'\fINc\fC'\fR (backslash-ell) draws a string of repeated @c@'s towards the right for a distance @N@.
                   2334: If @c@ looks like a continuation of
                   2335: an expression for @N@, it may be insulated from @N@ with a \&\fC\e&\fR.
                   2336: If @c@ is not specified, the \&\fC\(ru\fR (baseline rule) is used
                   2337: (underline character in \*(NR).
                   2338: If @N@ is negative, a backward horizontal motion
                   2339: of size @N@ is made before drawing the string.
                   2340: Any space resulting from @N@/(size of @c@) having a remainder is put at the beginning (left end)
                   2341: of the string.
                   2342: If @N@ is less than the width of @c@,
                   2343: a single @c@ is centered on a distance @N@.
                   2344: In the case of characters
                   2345: that are designed to be connected, such as
                   2346: baseline-rule\ \&\fC\(ru\fR\|,
                   2347: under-rule\ \&\fC\(ul\fR\|,
                   2348: and
                   2349: root-en\ \&\fC\(rn\fR\|,
                   2350: the remainder space is covered by overlapping.
                   2351: As an example, a macro to underscore a string can be written
                   2352: .tr &.
                   2353: .P1
                   2354: .ne 2.1
                   2355: &de us
                   2356: \e\e$1\e\|l\|'|0\e(ul'
                   2357: &&
                   2358: .P2
                   2359: .ne2.1
                   2360: .de xu
                   2361: \\$1\l'|0\(ul'
                   2362: ..
                   2363: or one to draw a box around a string
                   2364: .P1
                   2365: &de bx
                   2366: \e(br\e|\e\e$1\e|\e(br\e\|l\|'|0\e(rn'\e\|l\|'|0\e(ul'
                   2367: &&
                   2368: .P2
                   2369: .de bx
                   2370: \(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
                   2371: ..
                   2372: such that
                   2373: .P1
                   2374: &ul "underlined words"
                   2375: .P2
                   2376: and
                   2377: .P1
                   2378: &bx "words in a box"
                   2379: .P2
                   2380: yield
                   2381: .xu "underlined words"
                   2382: and
                   2383: .bx "words in a box"
                   2384: \h'-\w'.'u'.
                   2385: .PP
                   2386: The function \&\fC\eL'\fINc\&\fC'\fR draws a vertical line consisting
                   2387: of the (optional) character @c@ stacked vertically apart 1\|em
                   2388: (1 line in \*(NR),
                   2389: with the first two characters overlapped,
                   2390: if necessary, to form a continuous line.
                   2391: The default character is the \fIbox rule\fR \|\(br\| (\&\fC\|\e(br\fR);
                   2392: the other suitable character is the \fIbold vertical\fR \|\(bv\| (\&\fC\|\e(bv\fR).
                   2393: The line is begun without any initial motion relative to the
                   2394: current baseline.
                   2395: A positive @N@ specifies a line drawn downward and
                   2396: a negative @N@ specifies a line drawn upward.
                   2397: After the line is drawn no compensating
                   2398: motions are made;
                   2399: the instantaneous baseline is at the end of the line.
                   2400: .PP
                   2401: .de eb
                   2402: .sp -1
                   2403: .nf
                   2404: \h'-.5n'\L'|\\nzu-1'\l'\\n(.lu+1n\(ul'\L'-|\\nzu+1'\l'|0u-.5n\(ul'
                   2405: .fi
                   2406: ..
                   2407: .ne 2i
                   2408: .mk z
                   2409: .nr z \nz+1
                   2410: The horizontal and vertical line drawing functions may be used
                   2411: in combination to produce large boxes.
                   2412: The zero-width \fIbox-rule\fR and the \(12-em wide \fIunder-rule\fR
                   2413: were designed to form corners when using 1-em vertical
                   2414: spacings.
                   2415: For example the macro
                   2416: .nr x \n(DV
                   2417: .nr DV 0
                   2418: .P1 .15i
                   2419: \&.de eb
                   2420: \&.sp \-1      \e"compensate for next automatic baseline spacing
                   2421: \&.nf  \e"avoid possibly overflowing word buffer
                   2422: \&\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
                   2423: \&.fi
                   2424: \&..
                   2425: .P2
                   2426: .nr DV \nx 
                   2427: will draw a box around some text whose beginning vertical place was
                   2428: saved in number register \fIa\fR
                   2429: (e.g., using \&\fC.mk\ a\fR)
                   2430: as was done for this paragraph.
                   2431: .eb
                   2432: .sc "Graphics.
                   2433: The function
                   2434: .CW \eD'@c...@'
                   2435: draws a graphic object of type @c@
                   2436: according to a sequence of parameters,
                   2437: which are generally pairs of numbers.
                   2438: .IP
                   2439: .nf
                   2440: .ta 1.7i
                   2441: \fC\eD'l @dh~ dv@'     \f1draw line from current position by @dh,~dv@\fC
                   2442: \fC\eD'c @d@'  \f1draw circle of diameter @d@ with left side at current position\fC
                   2443: \fC\eD'e @d sub 1 d sub 2@'    \f1draw ellipse of diameters @d sub 1@ and @d sub 2@\fC
                   2444: \fC\eD'a @dh sub 1~ dv sub 1~ dh sub 2~ dv sub 2@'\fC  \f1draw arc from current position to @dh sub 1 +dh sub 2@, @dv sub 1 +dv sub 2@,\fC
                   2445:           \f1with center at @dh sub 1 ,~ dv sub 1@ from current position\fC
                   2446: \fC\eD'~ @dh sub 1 dv sub 1 dh sub 2 dv sub 2 "..."@'\fC       \f1draw B-spline from current position by @dh sub 1, dv sub 1@,\fC
                   2447:           \f1then by @dh sub 2 , dv sub 2@, then by @dh sub 2 , dv sub 2@, then ...\fC
                   2448: .LP
                   2449: For example,
                   2450: .CW "\eD'e0.2i 0.1i'"
                   2451: draws the ellipse
                   2452: \D'e.2i .1i'\|,
                   2453: and
                   2454: .CW "\eD'l.2i -.1i'\eD'l.1i .1i'"
                   2455: the line
                   2456: \D'l.2i -.1i'\D'l.1i .1i'\|.
                   2457: A
                   2458: .CW \\eD
                   2459: with an unknown @c@ is processed and copied through to the output
                   2460: for unspecified interpretation.
                   2461: .PP
                   2462: Numbers taken as horizontal (first, third, etc.) have default scaling of ems;
                   2463: vertical numbers (second, fourth, etc.) have default scaling of @V^@s (\(sc1.3).
                   2464: The position after a graphical object has been drawn is
                   2465: at its end; for circles and ellipses, the ``end''
                   2466: is at the right side.
                   2467: .NH
                   2468: Hyphenation.
                   2469: .PP
                   2470: Automatic hyphenation may be switched off and on.
                   2471: When switched on with \&\fChy\fR,
                   2472: several variants may be set.
                   2473: A \fIhyphenation indicator\fR character may be embedded in a word to
                   2474: specify desired hyphenation points,
                   2475: or may be prepended to suppress hyphenation.
                   2476: In addition,
                   2477: the user may specify a small list of exception words.
                   2478: .PP
                   2479: Only words that consist of a central alphabetic string
                   2480: surrounded by (usually null) non-alphabetic strings
                   2481: are candidates for automatic hyphenation.
                   2482: Words that contain hyphens
                   2483: (minus),
                   2484: em-dashes (\&\fC\e(em\fR),
                   2485: or hyphenation indicator characters
                   2486: are always subject to splitting after those characters,
                   2487: whether automatic hyphenation is on or off.
                   2488: .bt "\&\fC&nh\fR" "hyphenate" "-" "E" "Automatic hyphenation is turned off.
                   2489: .bt "\&\fC&hy\fP@~N@" "on, @N=1@" "on, @N=1@" "E" "Automatic hyphenation is turned on
                   2490: for @N>=1@, or off for @N=0@.
                   2491: If @N=2@, last lines (ones that will cause a trap)
                   2492: are not hyphenated.
                   2493: For @N=4@ and 8, the last and first two characters
                   2494: respectively of a word are not split off.
                   2495: These values are additive;
                   2496: i.e., @N=14@ will invoke all three restrictions.
                   2497: .bt "\&\fC&hc\fI c\fR" "\&\fC\e%" "\e%\fR" "E" "Hyphenation indicator character is set
                   2498: to @c@ or to the default \&\fC\e%\fR.
                   2499: The indicator does not appear in the output.
                   2500: .bt "\&\fC&hw\fI word ...\fR" "" "ignored" "-" "Specify
                   2501: hyphenation points in words
                   2502: with embedded minus signs.
                   2503: Versions of a word with terminal \fIs\fR are implied;
                   2504: i.e.,
                   2505: .CW dig-it
                   2506: implies
                   2507: .CW dig-its .
                   2508: This list is examined initially and after
                   2509: each suffix stripping.
                   2510: The space available is small\(emabout 128 characters.
                   2511: .NH
                   2512: Three-Part Titles.
                   2513: .PP
                   2514: The titling function \&\fCtl\fR provides for automatic placement
                   2515: of three fields at the left, center, and right of a line
                   2516: with a title length
                   2517: specifiable with \&\fClt\fR.
                   2518: \&\fCtl\fR may be used anywhere, and is independent of the
                   2519: normal text collecting process.
                   2520: A common use is in header and footer macros.
                   2521: .h1
                   2522: .bt "\&\fC&tl '\fIleft\fP'\fIcenter\fP'\fIright\fP'\fR" "" "-" "-" "The strings
                   2523: \fIleft\fR, \fIcenter\fR, and \fIright\fR are
                   2524: respectively left-adjusted, centered, and right-adjusted
                   2525: in the current title length.
                   2526: Any of the strings may be empty,
                   2527: and overlapping is permitted.
                   2528: If the page-number character (initially \&\fC%\fR) is found within any of the fields it is replaced
                   2529: by the current page number in the format assigned to register \&\fC%\fR.
                   2530: Any character may be used in place of
                   2531: .CW '
                   2532: as the string delimiter.
                   2533: .bt "\&\fC&pc\fI c\fR" "\&\fC%\fR" "off" "-" "The page number character is set to @c@,
                   2534: or removed.
                   2535: The page number register remains \&\fC%\fR.
                   2536: .bt "\&\fC&lt\fI \(+-N\fR" "6.5\|in" "previous" "E,\fBm\fR" "Length of title
                   2537: is set to @+- N@.
                   2538: The line length and the title length are independent.
                   2539: Indents do not apply to titles; page offsets do.
                   2540: .NH
                   2541: Output Line Numbering.
                   2542: .PP
                   2543: .ll -\w'0000'u
                   2544: .nm 1 3
                   2545: Automatic sequence numbering of output lines may be
                   2546: requested with \&\fCnm\fR.
                   2547: When in effect,
                   2548: a three-digit, arabic number plus a digit-space
                   2549: is prepended to output text lines.
                   2550: The text lines are thus offset by four digit-spaces,
                   2551: and otherwise retain their line length;
                   2552: a reduction in line length may be desired to keep the right margin
                   2553: aligned with an earlier margin.
                   2554: Blank lines, other vertical spaces, and lines generated by \&\fCtl\fR
                   2555: are not numbered.
                   2556: Numbering can be temporarily suspended with \&\fCnn\fR,
                   2557: or with an \&\fC.nm\fR followed by a later \&\fC.nm +0\fR.
                   2558: In addition,
                   2559: a line number indent \fII\fR, and the number-text separation \fIS\fR
                   2560: may be specified in digit-spaces.
                   2561: Further, it can be specified that only those line numbers that are
                   2562: multiples of some number @M@ are to be printed (the others will appear
                   2563: as blank number fields).
                   2564: .br
                   2565: .nm
                   2566: .ll
                   2567: .bt "\&\fC&nm\fI \(+-N M S I\fR" "" "off" "E" "Line number mode.
                   2568: If @+- N@ is given,
                   2569: line numbering is turned on,
                   2570: and the next output line numbered is numbered @+- N@.
                   2571: Default values are @M=1@, @S=1@, and @I=0@.
                   2572: Parameters corresponding to missing arguments are unaffected;
                   2573: a non-numeric argument is considered missing.
                   2574: In the absence of all arguments, numbering is turned off;
                   2575: the next line number is preserved for possible further use
                   2576: in number register \&\fCln\fR.
                   2577: .bt "\&\fC&nn\fI N\fR" "-" "@N=1@" "E" "The next @N@ text output lines are not
                   2578: numbered.
                   2579: .PP
                   2580: .ll -\w'0000'u
                   2581: .nm +0
                   2582: As an example, the paragraph portions of this section
                   2583: are numbered with \fIM=\fR\|3:
                   2584: \&\&\fC.nm\ 1\ 3\fR was placed at the beginning;
                   2585: \&\&\fC.nm\fR was placed at the end of the first paragraph;
                   2586: and \&\fC.nm\ +0\fR was placed in front of this paragraph;
                   2587: and \&\fC.nm\fR finally placed at the end.
                   2588: Line lengths were also changed (by \&\fC\ew'0000'u\fR) to keep the right side aligned.
                   2589: Another example is
                   2590: .CW .nm
                   2591: .CW +5
                   2592: .CW 5
                   2593: .CW x
                   2594: .CW 3 ,
                   2595: which turns on numbering with the line number of the next
                   2596: line to be 5 greater than the last numbered line,
                   2597: with @M=5@, with spacing \fIS\fR untouched, and with the indent \fII\fR set to 3.
                   2598: .br
                   2599: .ll
                   2600: .nm
                   2601: .NH
                   2602: Conditional Acceptance of Input
                   2603: .PP
                   2604: In the following,
                   2605: @c@ is a one-character built-in \fIcondition\fR name,
                   2606: \&\fC!\fR signifies \fInot\fR,
                   2607: @N@ is a numerical expression,
                   2608: \fIstring1\fR and \fIstring2\fR are strings delimited by any non-blank, non-numeric character not in the strings,
                   2609: and
                   2610: \fIanything\fR represents what is conditionally accepted.
                   2611: .bt "\&\fC&if\fI c anything\fR" "" "-" "-" "If condition
                   2612: @c@ true, accept \fIanything\fR as input;
                   2613: in multi-line case use \fI\e{anything\|\e}\fR.
                   2614: .bt "\&\fC&if !\fIc anything\fR" "-" "-" "" "If condition @c@ false, accept \fIanything\fR.
                   2615: .bt "\&\fC&if\fI N anything\fR" "" "-" "\fBu\fR" "If expression @N@ > 0, accept \fIanything\fR.
                   2616: .bt "\&\fC&if !\fIN anything\fR" "-" "\fBu\fR" "" "If expression @N@ \(<= 0, accept \fIanything\fR.
                   2617: .bt "\&\fC&if '\fIstring1\fC'\fIstring2\fC'\fI anything\fR" "" "-" "" "If \fIstring1\fR identical to \fIstring2\fR,
                   2618: accept \fIanything\fR.
                   2619: .bt "\&\fC&if !'\fIstring1\fC'\fIstring2\fC'\fI anything\fR" "" "-" "" "If \fIstring1\fR not identical to \fIstring2\fR,
                   2620: accept \fIanything\fR.
                   2621: .bt "\&\fC&ie\fI c anything\fR" "" "-" "\fBu\fR" "If portion of if-else;
                   2622: all of the forms for \&\fCif\fR above are valid.
                   2623: .bt "\&\fC&el\fI anything\fR" "" "-" "-" "Else portion of if-else.
                   2624: .PP
                   2625: The built-in condition names are:
                   2626: .TS
                   2627: center box;
                   2628: c2|c2
                   2629: c2|c2
                   2630: c2|l2.
                   2631: Condition
                   2632: Name   True If
                   2633: _
                   2634: \&\fCo\fR      Current page number is odd
                   2635: \&\fCe\fR      Current page number is even
                   2636: \&\fCt\fR      Formatter is \*(TR
                   2637: \&\fCn\fR      Formatter is \*(NR
                   2638: .TE
                   2639: If the condition @c@ is true, or if the number @N@ is greater than zero,
                   2640: or if the strings compare identically (including motions and character size and font),
                   2641: \fIanything\fR is accepted as input.
                   2642: If a \&\fC!\fR precedes the condition, number, or string comparison,
                   2643: the sense of the acceptance is reversed.
                   2644: .PP
                   2645: Any spaces between the condition and the beginning of \fIanything\fR are skipped over.
                   2646: The \fIanything\fR can be either a single input line (text, macro, or whatever)
                   2647: or a number of input lines.
                   2648: In the multi-line case,
                   2649: the first line must begin with a left delimiter \&\fC\e{\fR and
                   2650: the last line must end with a right delimiter \&\fC\e}\fR.
                   2651: .PP
                   2652: The request \&\fCie\fR (if-else) is identical to \&\fCif\fR
                   2653: except that the acceptance state is remembered.
                   2654: A subsequent and matching \&\fCel\fR (else) request then uses the reverse sense of that state.
                   2655: \&\fCie\fR-\&\fCel\fR pairs may be nested.
                   2656: .PP
                   2657: Some examples are:
                   2658: .P1
                   2659: &if e .tl '\|Even Page %'''
                   2660: .P2
                   2661: which outputs a title if the page number is even; and
                   2662: .P1
                   2663: &ie \en%>1 \e{\e
                   2664: \&'    sp 0.5i
                   2665: &      tl 'Page %'''
                   2666: \&'    sp |1.2i \e}
                   2667: &el .sp |2.5i
                   2668: .P2
                   2669: which treats page 1 differently from other pages.
                   2670: .NH
                   2671: Environment Switching.
                   2672: .PP
                   2673: A number of the parameters that
                   2674: control the text processing are gathered together into an
                   2675: \fIenvironment\fR, which can be switched by the user.
                   2676: The environment parameters are those associated
                   2677: with requests noting E in their \fINotes\fR column;
                   2678: in addition, partially collected lines and words are in the environment.
                   2679: Everything else is global; examples are page-oriented parameters,
                   2680: diversion-oriented parameters, number registers, and macro and string definitions.
                   2681: All environments are initialized with default parameter values.
                   2682: .bt "\&\fC&ev\fI N\fR" "@N=0@" "previous" "-" "Environment switched to
                   2683: environment @0<=N<=2@.
                   2684: Switching is done in push-down fashion so that
                   2685: restoring a previous environment \fImust\fR be done with \&\fC.ev\fR
                   2686: rather than specific reference.
                   2687: Note that what is pushed down and restored is the environment
                   2688: .I number,
                   2689: not its contents.
                   2690: .NH
                   2691: Insertions from the Standard Input
                   2692: .PP
                   2693: The input can be temporarily switched to the system standard input
                   2694: with \&\fCrd\fR,
                   2695: which will switch back when two consecutive newlines
                   2696: are found (the extra blank line is not used).
                   2697: This mechanism is intended for insertions in form-letter-like documentation.
                   2698: On \s-1UNIX\s+1, the standard input can be the user's keyboard,
                   2699: a pipe, or a file.
                   2700: .bt "\&\fC&rd\fI prompt\fR" "-" "\fIprompt=\fR\s-1BEL\s+1" "-" "Read insertion
                   2701: from the standard input until two newlines in a row are found.
                   2702: If the standard input is the user's keyboard, \fIprompt\fR (or a \s-1BEL\s+1)
                   2703: is written onto the standard output.
                   2704: \&\fCrd\fR behaves like a macro,
                   2705: and arguments may be placed after \fIprompt\fR.
                   2706: .bt "\&\fC&ex\fR" "-" "-" "-" "Exit from \*(NR/\*(TR.
                   2707: Text processing is terminated exactly as if all input had ended.
                   2708: .PP
                   2709: If insertions are to be
                   2710: taken from the terminal keyboard while output is being printed
                   2711: on the terminal, the command line option \&\fC\-q\fR will turn off the echoing
                   2712: of keyboard input and prompt only with \s-1BEL\s+1.
                   2713: The regular input and insertion input cannot
                   2714: simultaneously come from the standard input.
                   2715: .PP
                   2716: As an example,
                   2717: multiple copies of a form letter may be prepared by entering the insertions
                   2718: for all the copies in one file to be used as the standard input,
                   2719: and causing the file containing the letter to reinvoke itself with \&\fCnx\fR (\(sc19);
                   2720: the process would ultimately be ended by an \&\fCex\fR in the insertion file.
                   2721: .NH
                   2722: Input/Output File Switching
                   2723: .bt "\&\fC&so\fI filename\fR" "" "-" "-" "Switch source file.
                   2724: The top input (file reading) level is switched to \fIfilename\fR.
                   2725: When the new file ends,
                   2726: input is again taken from the original file.
                   2727: \&\fCso\fR's may be nested.
                   2728: .bt "\&\fC&nx\fI filename\fR" "" "end-of-file" "-" "Next file is \fIfilename\fR.
                   2729: The current file is considered ended, and the input is immediately switched
                   2730: to \fIfilename\fR.
                   2731: .bt "\&\fC&sy\fI string\fR" "" "-" "-" "Execute program from \fIstring\fR,
                   2732: which is the rest of the input line.
                   2733: The output is not collected automatically.
                   2734: The number register
                   2735: .CW $$ ,
                   2736: which contains the process id of the \*(TR process,
                   2737: may be useful in generating unique filenames for output.
                   2738: .bt "\&\fC&pi\fI string\fR" "" "-" "-" "Pipe output to \fIstring\fR,
                   2739: which is the rest of the input line.
                   2740: This request must occur before any printing occurs.
                   2741: .bt "\&\fC&cf\fI filename\fR" "" "-" "-" "Copy
                   2742: contents of file
                   2743: .I filename
                   2744: to output, completely unprocessed.
                   2745: The file is assumed to contain something meaningful
                   2746: to subsequent processes.
                   2747: .NH
                   2748: Miscellaneous
                   2749: .br
                   2750: .mc \s12\(br\s0
                   2751: .bt "\&\fC.mc\fI c N\fR" - off E,\fBm\fR "Specifies
                   2752: that a \fImargin\fR character @c@ appear a distance
                   2753: @N@ to the right of the right margin
                   2754: after each non-empty text line (except those produced by \&\fCtl\fR).
                   2755: If the output line is too long (as can happen in nofill mode)
                   2756: the character will be appended to the line.
                   2757: If @N@ is not given, the previous @N@ is used; the initial @N@ is
                   2758: 0.2 inches in \*(NR and 1 em in \*(TR.
                   2759: The margin character used with this paragraph was a 12-point box-rule.
                   2760: .br
                   2761: .mc
                   2762: .bt "\&\fC.tm\fI string\fR" "-" "newline" "-" "After skipping initial blanks,
                   2763: \fIstring\fR (rest of the line) is read in copy mode
                   2764: and written on the standard error.
                   2765: .bt "\&\fC&ab\fI string\fR" "-" "newline" "-" "After skipping initial blanks,
                   2766: \fIstring\fR (rest of the line) is read in copy mode
                   2767: and written on the standard error.
                   2768: \*(Tr or \*(NR then exit.
                   2769: .bt "\&\fC.ig\fI yy\fR" "-" "\fI.yy=\&\fC..\fR" "-" "Ignore
                   2770: input lines.
                   2771: \&\fCig\fR behaves exactly like \&\fCde\fR (\(sc7) except that the
                   2772: input is discarded.
                   2773: The input is read in copy mode, and any auto-incremented
                   2774: registers will be affected.
                   2775: .bt "\&\fC.lf\fI N filename\fR" "" "-" "-" "Set
                   2776: line number to @N@ and filename to @filename@
                   2777: for purposes of subsequent error messages, etc.
                   2778: The number register [sic]
                   2779: .CW .F
                   2780: contains the name of the current input file,
                   2781: as set by command line argument,
                   2782: .CW so ,
                   2783: .CW nx ,
                   2784: or
                   2785: .CW lf .
                   2786: The number register
                   2787: .CW .c
                   2788: contains the number of input lines read from the current file,
                   2789: again perhaps as modified by
                   2790: .CW lf .
                   2791: .CW 
                   2792: .bt "\&\fC.pm\fI t\fR" "-" "all" "-" "Print macros.
                   2793: The names and sizes of all of the defined macros and strings are printed
                   2794: on the standard error;
                   2795: if \fIt\fR is given, only the total of the sizes is printed.
                   2796: The sizes is given in blocks
                   2797: of 128 characters.
                   2798: .bt "\&\fC.fl\fR" - - B "Flush output buffer.
                   2799: Force output, including any pending position information.
                   2800: ......
                   2801: .NH
                   2802: Output and Error Messages.
                   2803: .PP
                   2804: The output from \&\fCtm\fR, \&\fCpm\fR, and the prompt from \&\fCrd\fR,
                   2805: as well as various error messages are written onto
                   2806: the standard error.
                   2807: The latter is different from the standard output,
                   2808: where formatted text goes.
                   2809: By default, both are written onto the user's terminal,
                   2810: but they can be independently redirected.
                   2811: .PP
                   2812: Various error conditions may occur during
                   2813: the operation of \*(NR and \*(TR.
                   2814: Certain less serious errors having only local impact do not
                   2815: cause processing to terminate.
                   2816: Two examples are \fIword overflow\fR, caused by a word that is too large
                   2817: to fit into the word buffer (in fill mode), and
                   2818: \fIline overflow\fR, caused by an output line that grew too large
                   2819: to fit in the line buffer.
                   2820: In both cases, a message is printed, the offending excess
                   2821: is discarded,
                   2822: and the affected word or line is marked at the point of truncation
                   2823: with a \(** in \*(NR and a \(lh in \*(TR.
                   2824: Processing continues if possible,
                   2825: on the grounds that output useful for debugging may be produced.
                   2826: If a serious error occurs, processing terminates,
                   2827: and a message is printed, along with a list of the macro names currently active.
                   2828: Examples of serious errors include the inability to create, read, or write files,
                   2829: and the exceeding of certain internal limits that
                   2830: make future output unlikely to be useful.
                   2831: .NH
                   2832: Output Language
                   2833: .PP
                   2834: \*(Tr
                   2835: produces its output in a language that is independent of any
                   2836: specific output device,
                   2837: except that the numbers in it have been computed on the basis
                   2838: of the resolution of the device,
                   2839: and the sizes, fonts, and characters that that device can print.
                   2840: Nevertheless it is quite possible to interpret that output
                   2841: on a different device, within the latter's capabilities.
                   2842: .IP
                   2843: .nf
                   2844: .ta .7i
                   2845: @cw s n@       set point size to @n@
                   2846: @cw f n@       set font to @n@
                   2847: @cw c c@       print \s-1ASCII\s0 character @c@
                   2848: @cw C xx@      print character @xx@;  terminate @xx@ by white space
                   2849: @cw N n@       print character @n@ on current font
                   2850: @cw H n@       go to absolute horizontal position \f2n\fP (@n>=0@)
                   2851: @cw V n@       go to absolute vertical position \f2n\fP (@n>=0@, down is positive)
                   2852: @cw h n@       go \f2n\fP units horizontally; @n < 0@ is to the left
                   2853: @cw v n@       go \f2n\fP units vertically; @n < 0@ is up
                   2854: @nnc@  move right \f2nn\fP, then print \s-1ASCII\s0 character \f2c\fP;  \f2nn\fP must be exactly 2 digits
                   2855: @cw p n@       new page \f2n\fP begins\(emset vertical position to 0
                   2856: @cw n b~a@     end of line (information only\(emno action);  \f2b\fP = space before line, \f2a\fP = after
                   2857: @cw w@ paddable word space (information only\(emno action)
                   2858: @cw D c@ ...\en        graphics function @c@; see below
                   2859: @cw x@ ...\en  device control functions; see below
                   2860: @cw "#"@ ...\en        comment
                   2861: .LP
                   2862: All position values are in units.
                   2863: Sequences that end in digits must be followed by a non-digit.
                   2864: Blanks, tabs and newlines may occur as separators
                   2865: in the input, and are mandatory to separate constructions
                   2866: that would otherwise be confused.
                   2867: Graphics functions, device control functions, and comments extend to the
                   2868: end of the line they occur on.
                   2869: .PP
                   2870: The device control and graphics commands are intended as open-ended
                   2871: families, to be expanded as needed.
                   2872: The graphics functions coincide directly with the
                   2873: .CW \eD 
                   2874: sequences:
                   2875: .IP
                   2876: .nf
                   2877: .ta 1.7i
                   2878: @cw Dl@ \f2dh dv\fP    draw line from current position by @dh,~ dv@
                   2879: @cw Dc@ \f2d\fP        draw circle of diameter \f2d\fP with left side here
                   2880: @cw De@ @dh sub 1~dv sub 2@    draw ellipse of diameters @dh sub 1@ and @ dv sub 2@\fP
                   2881: @cw Da ~dh sub 1~ dv sub 1 ~ dh sub 2 ~dv sub 2@       draw arc from current position to @dh sub 1 +dh sub 2 ,~ dv sub 1 +dv sub 2@,
                   2882:                   center at @dh sub 1 ,~ dv sub 1@ from current position
                   2883: @cw "D~" ~dh sub 1 ~dv sub 1 ~dh sub 2 ~dv sub 2@ ...  draw B-spline from current position to @dh sub 1 ,~ dv sub 1@,
                   2884:                   then to @dh sub 2 , ~dv sub 2@, then to ...
                   2885: @cw "D"z ~dh sub 1 ~dv sub 1 ~dh sub 2 ~dv sub 2@ ...  for any other @z@ is uninterpreted
                   2886: .LP
                   2887: In all of these, @dh, ~dv@ is an increment on the current horizontal and
                   2888: vertical position,
                   2889: with down and right positive.
                   2890: All distances and dimensions are in units.
                   2891: .PP
                   2892: The device control functions begin with
                   2893: .CW x ,
                   2894: then a command, then other parameters.
                   2895: .IP
                   2896: .ta .8i
                   2897: .nf
                   2898: .ft CW
                   2899: x T \f2s\fP    \f1name of typesetter is @s@\fC
                   2900: x r \f2n h v\fP        \f1resolution is @n@ units/inch;\fC  \f1@h@ = minimum horizontal motion, @v@ = minimum vertical\fC
                   2901: x i    \f1initialize\fP
                   2902: x f \f2n s\fP  \f1mount font @s@ on font position @n@\fC
                   2903: x p    \f1pause\(emcan restart\fC
                   2904: x s    \f1stop\(emdone forever\fC
                   2905: x t    \f1generate trailer information, if any\fC
                   2906: x H \f2n\fP    \f1set character height to @n@\fC
                   2907: x S \f2n\fP    \f1set slant to @n@\fC
                   2908: x X \f2any\fP  \f1generated by the \&\fC\eX\fP function\fC
                   2909: x \f2any\fP    \f1to be ignored if not recognized\fC
                   2910: .LP
                   2911: Subcommands like
                   2912: .CW i '' ``
                   2913: may be spelled out like
                   2914: .CW init ''. ``
                   2915: .PP
                   2916: The commands
                   2917: .CW "x T" ,
                   2918: .CW "x r " ...,
                   2919: and
                   2920: .CW "x i"
                   2921: must occur first;
                   2922: fonts must be mounted before they can be used;
                   2923: .CW "x s
                   2924: comes last.
                   2925: There are no other order requirements.
                   2926: .PP
                   2927: The following is the output from
                   2928: .CW hello, "" ``
                   2929: .CW world ''
                   2930: for a typical Postscript printer,
                   2931: as described in \(sc23:
                   2932: .P1
                   2933: x T post
                   2934: x res 720 1 1
                   2935: x init
                   2936: V0
                   2937: p1
                   2938: .P2
                   2939: .P1
                   2940: x font 1 R
                   2941: x font 2 I
                   2942: x font 3 B
                   2943: x font 4 BI
                   2944: x font 5 CW
                   2945: x font 6 H
                   2946: x font 7 HB
                   2947: x font 8 HX
                   2948: x font 9 S1
                   2949: x font 10 S
                   2950: .P2
                   2951: .P1
                   2952: s10
                   2953: f1
                   2954: H0
                   2955: s10
                   2956: f1
                   2957: V0
                   2958: H720
                   2959: V120
                   2960: ch
                   2961: 50e44l28l28o50,w58w72o50r33l28dn120 0
                   2962: x trailer
                   2963: V7920
                   2964: x stop
                   2965: .P2
                   2966: .PP
                   2967: \*(Tr output is normally not redundant;
                   2968: size and font changes and position information are not included
                   2969: unless needed.
                   2970: Nevertheless, each page is self-contained, for the benefit of postprocessors
                   2971: that re-order pages or process only a subset.
                   2972: .NH
                   2973: Device and Font Description Files
                   2974: .PP
                   2975: The parameters that describe a output device
                   2976: .I name
                   2977: are read
                   2978: from the directory
                   2979: .CW /usr/lib/font/dev@name@ ,
                   2980: each time
                   2981: \*(TR
                   2982: is invoked.
                   2983: The device name is provided by default,
                   2984: by the environment variable
                   2985: .CW TYPESETTER ,
                   2986: or by a command-line argument
                   2987: .CW -T@name@ .
                   2988: The default device name is
                   2989: .CW post ,
                   2990: for Postscript.
                   2991: The pre-defined string
                   2992: .CW .T
                   2993: contains the name of the device.
                   2994: The
                   2995: .CW -F
                   2996: command-line option may be used to change the default directory.
                   2997: .......
                   2998: .sc "Device description file.
                   2999: The file 
                   3000: .CW DESC
                   3001: in
                   3002: .CW /usr/lib/font/dev@name@
                   3003: contains general parameters of the device, one per line,
                   3004: as a sequence of names and values.
                   3005: \*(Tr recognizes these parameters, and ignores any
                   3006: others that may be present for specific drivers:
                   3007: .IP
                   3008: .nf
                   3009: .ta 1i
                   3010: @cw fonts ~ n ~ F sub 1  ~F sub 2  ~. . .~ F sub n@
                   3011: @cw sizes ~ s sub 1 ~ s sub 2 ~ . . . cw 0@
                   3012: @cw res ~n@
                   3013: @cw hor ~n@
                   3014: @cw vert ~n@
                   3015: @cw unitwidth ~n@
                   3016: @cw charset@
                   3017: \f2list of multi-character character names (optional)\fP
                   3018: .LP
                   3019: The @F sub i@ are font names
                   3020: to be initially mounted.
                   3021: The list of sizes is a set of integers representing
                   3022: some or all of the legal sizes the device can produce,
                   3023: terminated by a zero.
                   3024: The 
                   3025: .CW res
                   3026: parameter gives the resolution of the machine in units per inch;
                   3027: .CW hor
                   3028: and
                   3029: .CW ver
                   3030: give the minimum number of units that can be moved
                   3031: horizontally and vertically.
                   3032: .PP
                   3033: Character widths for each font are assumed to be given in machine units
                   3034: at point size
                   3035: .CW unitwidth .
                   3036: (In other words, a character with a width of
                   3037: @n@ is @n@ units wide at size
                   3038: .CW unitwidth .)
                   3039: .PP
                   3040: A list of valid character names may be introduced by
                   3041: .CW charset ;
                   3042: the list of names is optional.
                   3043: .PP
                   3044: A line whose first non-blank character is
                   3045: .CW #
                   3046: is a comment.
                   3047: Except that
                   3048: .CW charset
                   3049: must occur last, parameters may appear in any order.
                   3050: .PP
                   3051: Here is a subset of the
                   3052: .CW DESC
                   3053: file for a typical Postscript printer:
                   3054: .P1
                   3055: # Description file for Postscript printers.
                   3056: 
                   3057: fonts 10 R I B BI CW H HB HX S1 S
                   3058: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
                   3059:    24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 44 48 54 60 72 0
                   3060: res 720
                   3061: hor 1
                   3062: vert 1
                   3063: unitwidth 10
                   3064: charset
                   3065: hy ct fi fl ff Fi Fl dg em 14 34 12 en aa
                   3066: ga ru sc dd -> br Sl ps cs cy as os =. ld
                   3067: rd le ge pp -+ ob vr
                   3068: sq bx ci fa te ** pl mi eq ~= *A *B *X *D
                   3069: *E *F *G *Y *I *K *L *M *N *O *P *R *H *S *T *U *W
                   3070: *C *Q *Z ul rn *a *b *x *d *e *f *g *y *i *k
                   3071: *l *m *n *o *p *h *r *s *t *u *w *c *q *z
                   3072: .P2
                   3073: .sc "Font description files.
                   3074: Each font is described by an analogous description file,
                   3075: which begins with parameters of the font, one per line, followed by a
                   3076: list of characters and widths.
                   3077: The file for font
                   3078: .I f
                   3079: is
                   3080: .CW /usr/lib/font/dev@name@/@f@ .
                   3081: .IP
                   3082: .ta 1.7i
                   3083: .nf
                   3084: @cw name ~str@ name of font is @str@
                   3085: @cw ligatures ~ ". . ." ~ cw "0"@      list of ligatures
                   3086: @cw spacewidth ~n@     width of a space on this font
                   3087: @cw special@   this is a special font
                   3088: @cw charset@
                   3089: \f2list of character name, width, ascender/descender, code\fP
                   3090: .LP
                   3091: The
                   3092: .CW name
                   3093: and
                   3094: .CW charset
                   3095: fields are mandatory;
                   3096: .CW charset
                   3097: must be last.
                   3098: Comments are permitted,
                   3099: as are other unrecognized parameters.
                   3100: .PP
                   3101: Each line following
                   3102: .CW charset 
                   3103: describes one character: its name, its width in units as described above,
                   3104: ascender/descender information, and a decimal, octal or hexadecimal value
                   3105: by which the output device knows it
                   3106: (the
                   3107: .CW \eN
                   3108: ``number'' of the character).
                   3109: The character name is arbitrary, except that
                   3110: .CW ---
                   3111: signifies an unnamed character.
                   3112: If the width field contains
                   3113: .CW \&" ,
                   3114: the name is a synonym for the previous character.
                   3115: The ascender/descender field is 1 if
                   3116: the character has a descender (hangs below the baseline, like
                   3117: .CW y ),
                   3118: is 2 if it has an ascender (is tall, like
                   3119: .CW Y ),
                   3120: is 3 if both,
                   3121: and is 0 if neither.
                   3122: The value is returned
                   3123: in the 
                   3124: .CW ct
                   3125: register, as computed by the
                   3126: .CW \ew
                   3127: function (\(sc11.2).
                   3128: .PP
                   3129: Here are excerpts from a typical font description file
                   3130: for the same Postscript printer.
                   3131: .P1
                   3132: hy     33      0       45      hyphen \e(hy
                   3133: -      "                       - is a synonym for \e(hy
                   3134: .sp .3
                   3135: Q      72      3       81
                   3136: .sp .3
                   3137: a      44      0       97
                   3138: b      50      2       98
                   3139: c      44      0       99
                   3140: d      50      2       100
                   3141: y      50      1       121
                   3142: .sp .3
                   3143: em     100     0       208
                   3144: ---    44      2       220     English pound currency symbol \eN'220'
                   3145: ---    36      0       221     centered dot \eN'221'
                   3146: .P2
                   3147: This says, for example, that the width of the letter
                   3148: .CW a
                   3149: is 44 units at point size 10,
                   3150: the value of 
                   3151: .CW unitwidth .
                   3152: Point sizes are scaled linearly and rounded, so the width of
                   3153: .CW a
                   3154: will be 44 at size 10, 40 at size 9, 35 at size 8,
                   3155: and so on.
                   3156: .sp 100
                   3157: .BP
                   3158: .fp 8 C CW
                   3159: .tr &.
                   3160: .tr |
                   3161: .tr ~|
                   3162: .TL
                   3163: Tutorial Examples
                   3164: .SP
                   3165: .2C
                   3166: .sp .25i
                   3167: .SH
                   3168: Introduction
                   3169: .PP
                   3170: It is almost always necessary to
                   3171: prepare at least a small set of macro definitions
                   3172: to describe a document.
                   3173: Such common formatting needs
                   3174: as page margins and footnotes
                   3175: are deliberately not built into \*(NR and \*(TR.
                   3176: Instead,
                   3177: the macro and string definition, number register, diversion,
                   3178: environment switching, page-position trap, and conditional input mechanisms
                   3179: provide the basis for user-defined implementations.
                   3180: .PP
                   3181: For most uses, a standard package like
                   3182: .CW -ms
                   3183: or
                   3184: .CW -mm
                   3185: is the right choice.
                   3186: The next stage is to augment that,
                   3187: or to selectively replace macros from the standard package.
                   3188: The last stage, much harder,
                   3189: is to write one's own from scratch.
                   3190: .PP
                   3191: The examples discussed here are intended to be useful and somewhat realistic,
                   3192: but will not necessarily cover all relevant contingencies.
                   3193: Explicit numerical parameters are used
                   3194: in the examples
                   3195: to make them easier to read and to
                   3196: illustrate typical values.
                   3197: In many cases, number registers would really be used
                   3198: to reduce the number of places where numerical
                   3199: information is kept,
                   3200: and to concentrate conditional parameter initialization
                   3201: like that which depends on whether \*(TR or \*(NR is being used.
                   3202: .SH
                   3203: Page Margins
                   3204: .PP
                   3205: As discussed in \(sc3,
                   3206: header and footer macros are usually defined
                   3207: to describe the top and bottom page margin areas respectively.
                   3208: A trap is planted at page position 0 for the header, and at
                   3209: \fI\-N\fR (\fIN\fR from the page bottom) for the footer.
                   3210: The simplest such definitions might be
                   3211: .P1 .1i
                   3212: &de hd \e"define header
                   3213: \&'sp 1i
                   3214: &&     \e"end definition
                   3215: &de fo \e"define footer
                   3216: \&'bp
                   3217: &&     \e"end definition
                   3218: &wh 0 hd
                   3219: &wh -1i fo
                   3220: .P2
                   3221: which provide blank 1 inch top and bottom margins.
                   3222: The header will occur on the \fIfirst\fR page,
                   3223: only if the definition and trap exist prior to
                   3224: the initial pseudo-page transition (\(sc3).
                   3225: In fill mode, the output line that springs the footer trap
                   3226: was typically forced out because some part or whole word didn't fit on it.
                   3227: If anything in the footer and header that follows causes a break,
                   3228: that word or part word will be forced out.
                   3229: In this and other examples,
                   3230: requests like \&\fCbp\fR and \&\fCsp\fR that normally cause breaks are invoked using
                   3231: the no-break control character \&\fC'\fR
                   3232: to avoid this.
                   3233: When the header/footer design contains material
                   3234: requiring independent text processing, the
                   3235: environment may be switched, avoiding
                   3236: most interaction with the running text.
                   3237: .PP
                   3238: A more realistic example would be
                   3239: .P1 .1i
                   3240: &de hd \e"header
                   3241: &if \e\en%>1 \e{\e
                   3242: \&'sp ~0.5i-1  \e"tl base at 0.5i
                   3243: &tl ''- % -''  \e"centered page number
                   3244: &ps    \e"restore size
                   3245: &ft    \e"restore font
                   3246: &vs  \e}       \e"restore vs
                   3247: \&'sp ~1.0i    \e"space to 1.0i
                   3248: &ns    \e"turn on no-space mode
                   3249: &&
                   3250: &de fo \e"footer
                   3251: &ps 10 \e"set footer/header size
                   3252: &ft R  \e"set font
                   3253: &vs 12p        \e"set baseline spacing
                   3254: &if \e\en%=1 \e{\e
                   3255: \&'sp ~\e\en(.pu-0.5i-1  \e"tl base 0.5i up
                   3256: &tl ''- % -'' \e}  \e"first page number
                   3257: \&'bp
                   3258: &&
                   3259: &wh 0 hd
                   3260: &wh -1i fo
                   3261: .P2
                   3262: which sets the size, font, and baseline spacing for the
                   3263: header/footer material, and ultimately restores them.
                   3264: The material in this case is a page number at the bottom of the
                   3265: first page and at the top of the remaining pages.
                   3266: The \&\fCsp\fR's refer to absolute positions to avoid
                   3267: dependence on the baseline spacing.
                   3268: Another reason for doing this in the footer
                   3269: is that the footer is invoked by printing a line whose
                   3270: vertical spacing swept past the trap position by possibly
                   3271: as much as the baseline spacing.
                   3272: No-space mode is turned on at the end of \&\fChd\fR
                   3273: to render ineffective
                   3274: accidental occurrences of \&\fCsp\fR at the top of the running text.
                   3275: .PP
                   3276: The above method of restoring size, font, etc., presupposes
                   3277: that such requests (that set \fIprevious\fR value) are \fInot\fR
                   3278: used in the running text.
                   3279: A better scheme is save and restore both the current \fIand\fR
                   3280: previous values as shown for size in the following:
                   3281: .P1 .1i
                   3282: &de fo
                   3283: &nr s1 \e\en(.s        \e"current size
                   3284: &ps
                   3285: &nr s2 \e\en(.s        \e"previous size
                   3286: &  --- \e"rest of footer
                   3287: &&
                   3288: &de hd
                   3289: &  --- \e"header stuff
                   3290: &ps \e\en(s2  \e"restore previous size
                   3291: &ps \e\en(s1  \e"restore current size
                   3292: &&
                   3293: .P2
                   3294: Page numbers may be printed in the bottom margin
                   3295: by a separate macro triggered during the footer's
                   3296: page ejection:
                   3297: .P1 .1i
                   3298: &de bn \e"bottom number
                   3299: &tl ''- % -''  \e"centered page number
                   3300: &&
                   3301: &wh -0.5i-1v bn         \e"tl base 0.5i up
                   3302: .P2
                   3303: .SH
                   3304: Paragraphs and Headings
                   3305: .PP
                   3306: The housekeeping
                   3307: associated with starting a new paragraph should be collected
                   3308: in a paragraph macro
                   3309: that, for example,
                   3310: does the desired preparagraph spacing,
                   3311: forces the correct font, size, baseline spacing, and indent,
                   3312: checks that enough space remains for \fImore than one\fR line,
                   3313: and
                   3314: requests a temporary indent.
                   3315: .P1 .1i
                   3316: &de pg    \e"paragraph
                   3317: &br       \e"break
                   3318: &ft R     \e"force font,
                   3319: &ps 10    \e"size,
                   3320: &vs 12p   \e"spacing,
                   3321: &in 0     \e"and indent
                   3322: &sp 0.4   \e"prespace
                   3323: &ne 1+\e\en(.Vu  \e"want more than 1 line
                   3324: &ti 0.2i         \e"temp indent
                   3325: &&
                   3326: .P2
                   3327: The first break in \&\fCpg\fR
                   3328: will force out any previous partial lines,
                   3329: and must occur before the \&\fCvs\fR.
                   3330: The forcing of font, etc. is
                   3331: partly a defense against prior error and
                   3332: partly to permit
                   3333: things like section heading macros to
                   3334: set parameters only once.
                   3335: The prespacing parameter is suitable for \*(TR;
                   3336: a larger space, at least as big as the output device vertical resolution, would be
                   3337: more suitable in \*(NR.
                   3338: The choice of remaining space to test for in the \&\fCne\fR
                   3339: is the smallest amount greater than one line
                   3340: (the \&\fC.V\fR is the available vertical resolution).
                   3341: .PP
                   3342: A macro to automatically number section headings
                   3343: might look like:
                   3344: .P1 .1i
                   3345: &de sc \e"section
                   3346: &  --- \e"force font, etc.
                   3347: &sp 0.4        \e"prespace
                   3348: &ne 2.4+\e\en(.Vu \e"want 2.4+ lines
                   3349: .lg 0
                   3350: &fi
                   3351: .lg
                   3352: \e\en+S.
                   3353: &&
                   3354: &nr S 0 1      \e"init S
                   3355: .P2
                   3356: The usage is \&\fC.sc\fR,
                   3357: followed by the section heading text,
                   3358: followed by \&\fC.pg\fR.
                   3359: The \&\fCne\fR test value includes one line of heading,
                   3360: 0.4 line in the following \&\fCpg\fR, and
                   3361: one line of the paragraph text.
                   3362: A word consisting of the next section number and a period is
                   3363: produced to begin the heading line.
                   3364: The format of the number may be set by \&\fCaf\fR (\(sc8).
                   3365: .PP
                   3366: Another common form is the labeled, indented paragraph,
                   3367: where the label protrudes left into the indent space.
                   3368: .P1 .1i
                   3369: &de lp \e"labeled paragraph
                   3370: &pg
                   3371: &in 0.5i       \e"paragraph indent
                   3372: &ta 0.2i 0.5i  \e"label, paragraph
                   3373: &ti 0
                   3374: \et\e\e$1\et\ec        \e"flow into paragraph
                   3375: &&
                   3376: .P2
                   3377: The intended usage is ``\&\fC.lp\fR \fIlabel\fR\|'';
                   3378: \fIlabel\fR will begin at 0.2 inch, and
                   3379: cannot exceed a length of 0.3 inch without intruding into
                   3380: the paragraph.
                   3381: The label could be right adjusted against 0.4 inch by
                   3382: setting the tabs instead with \&\fC.ta|0.4iR|0.5i\fR.
                   3383: The last line of \&\fClp\fR ends with \&\fC\ec\fR so that
                   3384: it will become a part of the first line of the text
                   3385: that follows.
                   3386: .SH
                   3387: Multiple Column Output
                   3388: .PP
                   3389: The production of multiple column pages requires
                   3390: the footer macro to decide whether it was
                   3391: invoked by other than the last column,
                   3392: so that it will begin a new column rather than
                   3393: produce the bottom margin.
                   3394: The header can initialize a column register that
                   3395: the footer will increment and test.
                   3396: The following is arranged for two columns, but
                   3397: is easily modified for more.
                   3398: .P1 .1i
                   3399: &de hd \e"header
                   3400: &  ---
                   3401: &nr cl 0 1     \e"init column count
                   3402: &mk    \e"mark top of text
                   3403: &&
                   3404: .P2
                   3405: .P1 .1i
                   3406: &de fo \e"footer
                   3407: &ie \e\en+(cl<2 \e{\e
                   3408: &po +3.4i      \e"next column; 3.1+0.3
                   3409: &rt    \e"back to mark
                   3410: &ns \e}        \e"no-space mode
                   3411: &el \e{\e
                   3412: &po \e\enMu    \e"restore left margin
                   3413: &  ---
                   3414: \&'bp \e}
                   3415: &&
                   3416: &ll 3.1i       \e"column width
                   3417: &nr M \e\en(.o \e"save left margin
                   3418: .P2
                   3419: Typically a portion of the top of the first page
                   3420: contains full width text;
                   3421: the request for the narrower line length,
                   3422: as well as another \&\fC.mk\fR would
                   3423: be made where the two column output was to begin.
                   3424: .SH
                   3425: Footnotes
                   3426: .PP
                   3427: The footnote mechanism to be described is used by
                   3428: embedding the footnotes in the input text at the
                   3429: point of reference,
                   3430: demarcated by an initial \&\fC.fn\fR and a terminal \&\fC.ef\fR:
                   3431: .P1 .1i
                   3432: &fn
                   3433: \fIFootnote text and control lines...\fP
                   3434: &ef
                   3435: .P2
                   3436: In the following,
                   3437: footnotes are processed in a separate environment and diverted
                   3438: for later printing in the space immediately prior to the bottom
                   3439: margin.
                   3440: There is provision for the case where the last collected
                   3441: footnote doesn't completely fit in the available space.
                   3442: .P1 .1i
                   3443: &de hd \e"header
                   3444: &  ---
                   3445: &nr x 0 1      \e"init footnote count
                   3446: &nr y 0-\e\enb \e"current footer place
                   3447: &ch fo -\e\enbu        \e"reset footer trap
                   3448: &if \e\en(dn .fz       \e"leftover footnote
                   3449: &&
                   3450: .P2
                   3451: .P1 .1i
                   3452: &de fo \e"footer
                   3453: &nr dn 0  \e"zero last diver. size
                   3454: &if \e\enx \e{\e
                   3455: &ev 1  \e"expand footnotes in ev1
                   3456: &nf    \e"retain vertical size
                   3457: &FN    \e"footnotes
                   3458: &rm FN \e"delete it
                   3459: .P2
                   3460: .P1 .1i
                   3461: &if "\e\en(.z"fy" .di  \e"end overflow di
                   3462: &nr x 0        \e"disable fx
                   3463: &ev  \e}       \e"pop environment
                   3464: &  ---
                   3465: \&'bp
                   3466: &&
                   3467: .P2
                   3468: .P1 .1i
                   3469: &de fx \e"process footnote overflow
                   3470: &if \e\enx .di fy      \e"divert overflow
                   3471: &&
                   3472: .P2
                   3473: .P1 .1i
                   3474: &de fn \e"start footnote
                   3475: &da FN \e"divert (append) footnote
                   3476: &ev 1  \e"in environment 1
                   3477: &if \e\en+x=1 .fs   \e"if 1st, separator
                   3478: &fi    \e"fill mode
                   3479: &&
                   3480: .P2
                   3481: .P1 .1i
                   3482: &de ef \e"end footnote
                   3483: &br    \e"finish output
                   3484: &nr z \e\en(.v \e"save spacing
                   3485: &ev    \e"pop ev
                   3486: &di    \e"end diversion
                   3487: &nr y -\e\en(dn        \e"new footer position,
                   3488: &if \e\enx=1 .nr y -(\e\en(.v-\e\enz) \e
                   3489:        \e"uncertainty correction
                   3490: &ch fo \e\enyu \e"y is negative
                   3491: &if (\e\en(nl+1v)>(\e\en(.p+\e\eny) \e
                   3492: &ch fo \e\en(nlu+1v     \e"didn't fit
                   3493: &&
                   3494: .P2
                   3495: .P1 .1i
                   3496: &de fs \e"separator
                   3497: \el'1i'        \e"1 inch rule
                   3498: &br
                   3499: &&
                   3500: .P2
                   3501: .P1 .1i
                   3502: &de fz \e"get leftover footnote
                   3503: &fn
                   3504: &nf    \e"retain vertical size
                   3505: &fy    \e"where fx put it
                   3506: &ef
                   3507: &&
                   3508: .P2
                   3509: .P1 .1i
                   3510: &nr b 1.0i  \e"bottom margin size
                   3511: &wh 0 hd    \e"header trap
                   3512: &wh 12i fo  \e"footer trap->temp pos
                   3513: &wh -\e\enbu fx        \e"fx at footer position
                   3514: &ch fo -\e\enbu        \e"conceal fx with fo
                   3515: .P2
                   3516: .PP
                   3517: The header \&\fChd\fR initializes a footnote count register \&\fCx\fR,
                   3518: and sets both the current footer trap position register \&\fCy\fR and
                   3519: the footer trap itself to a nominal position specified in
                   3520: register \&\fCb\fR.
                   3521: In addition, if the register \&\fCdn\fR indicates a leftover footnote,
                   3522: \&\fCfz\fR is invoked to reprocess it.
                   3523: The footnote start macro \&\fCfn\fR begins a diversion (append) in environment 1,
                   3524: and increments the count \&\fCx\fR; if the count is one, the footnote separator \&\fCfs\fR
                   3525: is interpolated.
                   3526: The separator is kept in a separate macro to permit user redefinition.
                   3527: .PP
                   3528: The footnote end macro \&\fCef\fR restores
                   3529: the previous environment and ends the diversion after saving the spacing size in register \&\fCz\fR.
                   3530: \&\fCy\fR is then decremented by the size of the footnote, available in \&\fCdn\fR;
                   3531: then on the first footnote, \&\fCy\fR is further decremented by the difference
                   3532: in vertical baseline spacings of the two environments, to
                   3533: prevent the late triggering the footer trap from causing the last
                   3534: line of the combined footnotes to overflow.
                   3535: The footer trap is then set to the lower (on the page) of \&\fCy\fR or the current page position (\&\fCnl\fR)
                   3536: plus one line, to allow for printing the reference line.
                   3537: .PP
                   3538: If indicated by \&\fCx\fR, the footer \&\fCfo\fR rereads the footnotes from \&\fCFN\fR in nofill mode
                   3539: in environment 1,
                   3540: and deletes \&\fCFN\fR.
                   3541: If the footnotes were too large to fit, the macro \&\fCfx\fR will be trap-invoked to redivert
                   3542: the overflow into \&\fCfy\fR,
                   3543: and the register \&\fCdn\fR will later indicate to the header whether \&\fCfy\fR is empty.
                   3544: .PP
                   3545: Both \&\fCfo\fR and \&\fCfx\fR are planted in the nominal footer trap position in an order
                   3546: that causes \&\fCfx\fR to be concealed unless the \&\fCfo\fR trap is moved.
                   3547: The footer then terminates the overflow diversion, if necessary, and
                   3548: zeros \&\fCx\fR to disable \&\fCfx\fR,
                   3549: because the uncertainty correction
                   3550: together with a not-too-late triggering of the footer can result
                   3551: in the footnote rereading finishing before reaching the \&\fCfx\fR trap.
                   3552: .PP
                   3553: A good exercise for the student is to combine the multiple-column and footnote mechanisms.
                   3554: .SH
                   3555: The Last Page
                   3556: .PP
                   3557: After the last input file has ended, \*(NR and \*(TR
                   3558: invoke the \fIend macro\fR (\(sc7), if any,
                   3559: and when it finishes, eject the remainder of the page.
                   3560: During the eject, any traps encountered are processed normally.
                   3561: At the end of this last page, processing terminates
                   3562: unless a partial line, word, or partial word remains.
                   3563: If it is desired that another page be started, the end-macro
                   3564: .P1 .1i
                   3565: &de en \e"end-macro
                   3566: \ec
                   3567: \&'bp
                   3568: &&
                   3569: &em en
                   3570: .P2
                   3571: will deposit a null partial word,
                   3572: and produce another last page.
                   3573: .1C
                   3574: .sp 100
                   3575: .BP
                   3576: ........
                   3577: .TL
                   3578: Special Character Names
                   3579: .SP
                   3580: .PP
                   3581: The following table lists names for a set of characters,
                   3582: most of which have typically been available with \*(TR.
                   3583: Not all print on any particular device, including this one.
                   3584: .TS
                   3585: center;
                   3586: l l20fCW l l20fCW l l20fCW.
                   3587: \&\'   \e'     \(*m    \e(*m   \(~=    \e(~=
                   3588: \`     \e`     \(*n    \e(*n   \(ap    \e(ap
                   3589: \(em   \e(em   \(*c    \e(*c   \(!=    \e(!=
                   3590: -      \e-     \(*o    \e(*o   \(->    \e(->
                   3591: \(hy   \e(hy   \(*p    \e(*p   \(<-    \e(<-
                   3592: \-     \e-     \(*r    \e(*r   \(ua    \e(ua
                   3593: \(bu   \e(bu   \(*s    \e(*s   \(da    \e(da
                   3594: \(sq   \e(sq   \(ts    \e(ts   \(mu    \e(mu
                   3595: \(ru   \e(ru   \(*t    \e(*t   \(di    \e(di
                   3596: \(14   \e(14   \(*u    \e(*u   \(+-    \e(+-
                   3597: \(12   \e(12   \(*f    \e(*f   \(cu    \e(cu
                   3598: \(34   \e(34   \(*x    \e(*x   \(ca    \e(ca
                   3599: \(fi   \e(fi   \(*q    \e(*q   \(sb    \e(sb
                   3600: \(fl   \e(fl   \(*w    \e(*w   \(sp    \e(sp
                   3601: \(ff   \e(ff   \(*A    \e(*A   \(ib    \e(ib
                   3602: \(Fi   \e(Fi   \(*B    \e(*B   \(ip    \e(ip
                   3603: \(Fl   \e(Fl   \(*G    \e(*G   \(if    \e(if
                   3604: \(de   \e(de   \(*D    \e(*D   \(pd    \e(pd
                   3605: \(dg   \e(dg   \(*E    \e(*E   \(gr    \e(gr
                   3606: \(fm   \e(fm   \(*Z    \e(*Z   \(no    \e(no
                   3607: \(ct   \e(ct   \(*Y    \e(*Y   \(is    \e(is
                   3608: \(rg   \e(rg   \(*H    \e(*H   \(pt    \e(pt
                   3609: \(co   \e(co   \(*I    \e(*I   \(es    \e(es
                   3610: \(pl   \e(pl   \(*K    \e(*K   \(mo    \e(mo
                   3611: \(mi   \e(mi   \(*L    \e(*L   \(br    \e(br
                   3612: \(eq   \e(eq   \(*M    \e(*M   \(dd    \e(dd
                   3613: \(**   \e(**   \(*N    \e(*N   \(rh    \e(rh
                   3614: \(sc   \e(sc   \(*C    \e(*C   \(lh    \e(lh
                   3615: \(aa   \e(aa   \(*O    \e(*O   \(L1    \e(bs
                   3616: \(ga   \e(ga   \(*P    \e(*P   \(or    \e(or
                   3617: \(ul   \e(ul   \(*R    \e(*R   \(ci    \e(ci
                   3618: \(sl   \e(sl   \(*S    \e(*S   \(lt    \e(lt
                   3619: \(*a   \e(*a   \(*T    \e(*T   \(lb    \e(lb
                   3620: \(*b   \e(*b   \(*U    \e(*U   \(rt    \e(rt
                   3621: \(*g   \e(*g   \(*F    \e(*F   \(rb    \e(rb
                   3622: \(*d   \e(*d   \(*X    \e(*X   \(lk    \e(lk
                   3623: \(*e   \e(*e   \(*Q    \e(*Q   \(rk    \e(rk
                   3624: \(*z   \e(*z   \(*W    \e(*W   \(bv    \e(bv
                   3625: \(*y   \e(*y   \(sr    \e(sr   \(lf    \e(lf
                   3626: \(*h   \e(*h   \(rn    \e(rn   \(rf    \e(rf
                   3627: \(*i   \e(*i   \(>=    \e(>=   \(lc    \e(lc
                   3628: \(*k   \e(*k   \(<=    \e(<=   \(rc    \e(rc
                   3629: \(*l   \e(*l   \(==    \e(==
                   3630: .TE

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.