Annotation of 43BSDReno/share/doc/usd/10.etiq/tmac.n, revision 1.1.1.1

1.1       root        1: .\"    @(#)tmac.n      6.1 (Berkeley) 5/26/86
                      2: .\"
                      3: .\" The News macro package
                      4: .\"
                      5: .\" This  is  the macro package that is used to format news documents.  It
                      6: .\" was written because many sites do not have one of the -mm or -ms pack-
                      7: .\" ages that the documents use.   This is NOT compatible with EITHER, but
                      8: .\" (I hope) will become the standard for all news  documents  (man  pages
                      9: .\" excepted, since everyone seems to have -man.)
                     10: .\"
                     11: .\" This package was written using  only  the  "NROFF/TROFF Users' Guide",
                     12: .\" and  therefore  if  you  can run NROFF/TROFF, you can legitimately use
                     13: .\" this package.  However, because NROFF/TROFF are proprietary  programs,
                     14: .\" I  cannot  place  this  package in the public domain.  This should not
                     15: .\" matter, because if you legitimately have  NROFF/TROFF,  you  have  the
                     16: .\" documentation; if not, you can't run off the documentation anyway.
                     17: .\"
                     18: .\" This  package may be circulated freely with the news documentation; it
                     19: .\" may not be sold, but is to be distributed with  the  unformatted  news
                     20: .\" documents.  However,  the name of the author and the place at which it
                     21: .\" was written (in the author's own  time,  of  course)  are  not  to  be
                     22: .\" removed  from the package regardless of how it is modified or altered.
                     23: .\" Further, please do not distribute this package if you make any changes
                     24: .\" because  I  don't want to get bug reports of macros I haven't written;
                     25: .\" if you have a goodie you want me to add, send it to me and we'll talk.
                     26: .\" (I really do like feedback!)  I'd really appreciate your cooperation.
                     27: .\"
                     28: .\" Author:    Matt Bishop
                     29: .\"            Research Institute for Advanced Computer Science
                     30: .\"            Mail Stop 230-5
                     31: .\"            NASA Ames Research Center
                     32: .\"            Moffett Field, CA  94035
                     33: .\"
                     34: .\" version 1.0                September 28, 1985      [email protected]
                     35: .\"    initial version
                     36: .\" version 1.1                October 25, 1985        [email protected]
                     37: .\"    fixed an incredibly obscure footnote bug (that occurred twice in
                     38: .\"    the news documentation!) which put footnoted words on  one  page
                     39: .\"    and the footnote on the next if the word was in the next-to-last
                     40: .\"    or last line; commented it, and generally cleaned up
                     41: .\" Version 1.2                October 27, 1985        [email protected]
                     42: .\"    Added a few more comments and a check to keep footnotes lined up
                     43: .\"    with the bottom margin.
                     44: .\" Version 1.3                February 12, 1986       [email protected]
                     45: .\"    Added an error check to catch unmatched ef's and ed's
                     46: .\"
                     47: .\" **********
                     48: .\" these preserve and restore various things
                     49: .\" they are used to shorten other macros
                     50: .de yf                                 \" restore fonts
                     51: .ft \\n(f2                             \" previous font
                     52: .ft \\n(f1                             \" current font
                     53: ..
                     54: .de yi                                 \" restore indents
                     55: 'in \\n(i2u                            \" previous indent
                     56: 'in \\n(i1u                            \" current indent
                     57: ..
                     58: .de ys                                 \" restore point sizes
                     59: .ps \\n(s2                             \" previous point size
                     60: .ps \\n(s1                             \" current point size
                     61: ..
                     62: .de yv                                 \" restore vertical spacings
                     63: .vs \\n(v2u                            \" previous vertical spacing
                     64: .vs \\n(v1u                            \" current vertical spacing
                     65: ..
                     66: .de ya                                 \" restore everything
                     67: .yf                                    \" restore fonts
                     68: .yi                                    \" restore indents
                     69: .ys                                    \" restore point sizes
                     70: .yv                                    \" restore vertical spacing
                     71: ..
                     72: .de zf                                 \" preserve fonts
                     73: .nr f1 \\n(.f                          \" current font
                     74: .ft                                    \" switch to previous font
                     75: .nr f2 \\n(.f                          \" previous font
                     76: .ft                                    \" back to current font
                     77: ..
                     78: .de zi                                 \" preserve indents
                     79: .nr i1 \\n(.iu                         \" current indent
                     80: 'in                                    \" switch to previous indent
                     81: .nr i2 \\n(.iu                         \" previous indent
                     82: 'in                                    \" back to current indent
                     83: ..
                     84: .de zs                                 \" preserve point sizes
                     85: .nr s1 \\n(.su                         \" current point size
                     86: .ps                                    \" switch to previous point size
                     87: .nr s2 \\n(.su                         \" previous point size
                     88: .ps                                    \" back to current point size
                     89: ..
                     90: .de zv                                 \" preserve vertical spacings
                     91: .nr v1 \\n(.vu                         \" current vertical spacing
                     92: .vs                                    \" switch to previous vertical spacing
                     93: .nr v2 \\n(.vu                         \" previous vertical spacing
                     94: .vs                                    \" back to current vertical spacing
                     95: ..
                     96: .de za                                 \" save everything
                     97: .zf                                    \" save fonts
                     98: .zi                                    \" save indents
                     99: .zs                                    \" save point sizes
                    100: .zv                                    \" save vertical spacings
                    101: ..
                    102: .\" **********
                    103: .\" these actually print the header and footer titles
                    104: .\" they are defined separately from the "hd" and "fo" macros
                    105: .\" to make user redefinition easy
                    106: .de pt                                 \" print header title
                    107: .                                      \" omit header on first page
                    108: .if \\n%>1 \{\
                    109: '      sp |\\$1u                       \" move to proper position
                    110: .      ft 1                            \" change to default font
                    111: .      ps \\n(ps                       \" change to default point size
                    112: .      vs \\n(vs                       \" change to default spacing
                    113: .      if \\n% .if o .tl '\\*(h0'\\*(h1'\\*(h2'        \" odd page title
                    114: .      if \\n% .if e .tl '\\*(h2'\\*(h1'\\*(h0'        \" even page title
                    115: .      vs                              \" restore current vertical spacing
                    116: .      ps                              \" restore current point size
                    117: .      ft                              \" restore current font
                    118: .\}
                    119: ..
                    120: .de pf                                 \" print footer title
                    121: .ft 1                                  \" change to default font
                    122: .ps \\n(ps                             \" change to default point size
                    123: .vs \\n(vs                             \" change to default spacing
                    124: .ie \\n%=1 .tl '\\*(h0'\\*(h1'\\*(h2'  \" on first page, print the header here
                    125: .el        .tl '\\*(f0'\\*(f1'\\*(f2'  \" on other pages, print the footer
                    126: .vs                                    \" restore current vertical spacing
                    127: .ps                                    \" restore current point size
                    128: .ft                                    \" restore current font
                    129: ..
                    130: .\" **********
                    131: .\" these are the top of page (header) and bottom of page (footer) macros
                    132: .\" they don't actually print anything, just call the right macros
                    133: .de hd                                 \" header -- do top of page processing
                    134: .if t .if \\n(cm .tl '\(rn'''          \" drop cut mark if needed
                    135: .pt \\n(ttu                            \" print header
                    136: .nr fc 0 1                             \" init footnote count
                    137: .nr fs \\n(.pu-\\n(bmu-1u              \" if any footnotes, start print here
                    138: .nr fp 0-\\n(bmu                       \" reset current footer place
                    139: .ch fo -\\n(bmu                                \" reset footer trap
                    140: .if \\n(dn .fz                         \" put leftover footnotes st bottom
                    141: .ya                                    \" restore font, etc.
                    142: 'sp |\\n(tmu                           \" move to top of body
                    143: .ns                                    \" don't allow any more space
                    144: ..
                    145: .de fo                                 \" footer -- do bottom of page processing
                    146: .za                                    \" save font, etc.
                    147: .rs                                    \" you want motions here
                    148: .nr dn 0                               \" clobber diversion size register
                    149: .if \\n(fc .fd                         \" now print the footnotes, if any
                    150: 'bp                                    \" force out page
                    151: ..
                    152: .\" **********
                    153: .\" these are the footnote macros
                    154: .\" here's an overview:
                    155: .\"    Footnotes are processed in environment #1, which is  initialized
                    156: .\"    at the bottom of this package.  When "fn" is called, nroff/troff
                    157: .\"    switches to this environment.  The body of the footnote is saved
                    158: .\"    in  the  diversion  "tf" (for "temporary footnote"), so you will
                    159: .\"    NEVER spring a trap during the first reading of a footnote. When
                    160: .\"    "ef" ("end footnote" is called,  the  diversion  is  closed.  If
                    161: .\"    this  is the first footnote on the page (ie, the number register
                    162: .\"    "fc" is 1), and the footnote height (plus the height of 1  line)
                    163: .\"    crosses  the  bottom  margin,  you get the footnoted word on one
                    164: .\"    page and the footnote on the other.  In this case we  just  call
                    165: .\"    "fo"  manually  (taking case it cannot be re-invoked on the same
                    166: .\"    page!)  If this situation does not occur,  we  just  adjust  the
                    167: .\"    footer  trap's  position upwards (we'll get to how far in a min-
                    168: .\"    ute); if this puts the trap above the current line,  we  reposi-
                    169: .\"    tion  the trap just beneath the current line to be sure of trig-
                    170: .\"    triggering it once the current line is forced out.
                    171: .\"     To reposition the footer trap, we proceed as  follows.  Because
                    172: .\"    the  trap  may be sprung in the middle of a line, it is possible
                    173: .\"    that the footnote will not fit on the page (regardless of  where
                    174: .\"    on the page the footnoted word occurs -- really!) if we move the
                    175: .\"    trap up by the size of  the  footnote  diversion  "tf".  So,  we
                    176: .\"    fudge things a little bit -- for the first footnote on each page
                    177: .\"    we move the footer trap up 1 extra line ("line" being 1v in env-
                    178: .\"    ironment  #0).   Unless  the point size and vertical spacing are
                    179: .\"    increased between the first footnote and the footer trap's being
                    180: .\"    sprung,  this  will  keep  the footnotes on the same page as the
                    181: .\"    footnoted word.  But as there may be now as much as 1v of  space
                    182: .\"    between the footnote and the bottom margin, which looks HIDEOUS,
                    183: .\"    we use the number register "fs" to mark where  the  footer  trap
                    184: .\"    would  REALLY go, and just space to it when it comes time to put
                    185: .\"    out the footnotes.
                    186: .de fd                                 \" dump footnotes
                    187: .nr gs 1v                              \" get a measure of 1 line in env #0
                    188: .ev 1                                  \" switch to footnote environment
                    189: .nr gs +2v                             \" min of 2 lines of footnotes
                    190: .                                      \" if the number register ns > 0,
                    191: .                                      \" the last text line may contain a
                    192: .                                      \" footnote that is too big to fit;
                    193: .                                      \" this checks for such a note and
                    194: .                                      \" if so, forces the footnote into
                    195: .                                      \" the "fy" diversion that carries
                    196: .                                      \" it onto the next text page
                    197: .ie (\\n(nsu>0)&(\\n(gsu>=\\n(.tu) 'sp \\n(gsu \" be sure you can get it down
                    198: .el .if \\n(fsu>\\n(nlu 'sp \\n(fsu-\\n(nlu    \" move to footnote start position
                    199: 'nf                                    \" don't reprocess footnotes
                    200: 'in 0                                  \" don't indent them any more either
                    201: .tf                                    \" drop text of footnotes
                    202: .rm tf
                    203: .if '\\n(.z'fy' .di                    \" end overflow diversion, if any
                    204: .nr fc 0                               \" re-init footnote count
                    205: .ev                                    \" return to usual environment
                    206: ..
                    207: .de fn                                 \" start footnote
                    208: .                                      \" look for nested footnotes -- ILLEGAL
                    209: .ie \\n(if>0 .er "footnote within footnote"
                    210: .el .da tf                             \" append footnote to footnote diversion
                    211: .nr if +1                              \" increment level of footnoting
                    212: .nr fc +1                              \" one more footnote on this page
                    213: .if \\n(fc=1 .nr fp -1v                        \" The reason for this "fudge factor"
                    214: .                                      \" is that there is no way to force
                    215: .                                      \" NROFF/TROFF to invoke a macro at
                    216: .                                      \" the end of each line.  At times,
                    217: .                                      \" the trap boundary will not match up
                    218: .                                      \" with the bottom of a line, so the
                    219: .                                      \" "fo" trap which is set at 2320 may
                    220: .                                      \" not be triggered until 2340 -- and
                    221: .                                      \" then the footnote won't fit.  This
                    222: .                                      \" gives some slack so the footnote is
                    223: .                                      \" more likely to fit. *sigh*
                    224: .ev 1                                  \" enter footnote environment
                    225: .if \\n(fc=1 .fs                       \" drop separator if first footnote
                    226: .br                                    \" flush out any previous line in footnote
                    227: .fi                                    \" process footnote in fill mode
                    228: ..
                    229: .de ef                                 \" end footnote
                    230: .br                                    \" flush out the line in footnote
                    231: .ie \\n(if<=0 .er "end footnote has no corresponding begin footnote"
                    232: .el \{\
                    233: .      nr if -1                        \" decrement level of footnoting
                    234: .      nr fg 2v                        \" remember this for repositioning fo
                    235: .      ev                              \" back to usual environment
                    236: .      if \\n(if=0 \{\
                    237: .              di                      \" end of footnote proper
                    238: .              nr fp -\\n(dnu          \" "fo" will be moved at least up this far
                    239: .              nr fs -\\n(dnu          \" increase size of footnote
                    240: .              ch fo \\n(fpu           \" reposition "fo" trap (first guess)
                    241: .                                      \" the first part of the "ie" clause
                    242: .                                      \" is taken in the special case
                    243: .                                      \" described above
                    244: .              ie (\\n(fc=1)&((\\n(nlu+1v+\\n(fgu)>=(\\n(.pu-\\n(bmu)) \{\
                    245: .                      nr ns \\n(dnu   \" suppress footnote separator
                    246: .                                      \" since this footnote contains it
                    247: .                                      \" keep "fo" from being invoked twice
                    248: .                      ch fo \\n(.pu+1i
                    249: .                      fo              \" force the page out AT ONCE
                    250: .                      nr ns 0         \" re-enable footnote separator
                    251: .              \}
                    252: .                                      \" footnote won't fit completely
                    253: .              el .if (\\n(nlu+1v)>=(\\n(.pu+\\n(fpu) .ch fo \\n(nlu+1u
                    254: .      \}
                    255: .\}
                    256: ..
                    257: .de fs                                 \" drop footnote separator
                    258: .                                      \" only if not already dropped
                    259: .if \\n(ns=0 \l'1i'
                    260: .nr ns 0                               \" in case footnotes are over 1 page long
                    261: ..
                    262: .de fx                                 \" process footnote overflow
                    263: .if \\n(fc .di fy                      \" stuff them in the right place
                    264: ..
                    265: .de fz                                 \" deposit footnote overflow
                    266: .fn                                    \" treat it as a footnote
                    267: .nf                                    \" it's already been processed
                    268: .in 0                                  \"   and indented
                    269: .fy                                    \" "fx" put it here
                    270: .ef                                    \" end the footnote
                    271: ..
                    272: .\" **********
                    273: .\" the ones after here are user-invoked (like "fn" and "ef" above)
                    274: .\" title, author, etc.
                    275: .de mt                                 \" main title
                    276: \&
                    277: .sp |\\n(mtu                           \" space
                    278: .ft 3                                  \" in bold
                    279: .ps \\n(ps+2p                          \" large point size and
                    280: .vs \\n(vs+2p                          \" vertical spacing
                    281: .ce 1000                               \" center the title
                    282: .nr t2 1                               \" space it
                    283: ..
                    284: .de au                                 \" author
                    285: .nr t2 0                               \" spacing here
                    286: .sp 2v                                 \" space
                    287: .ft 2                                  \" in italics
                    288: .ps \\n(ps                             \" usual point size and
                    289: .vs \\n(vs                             \" vertical spacing
                    290: .ce 1000                               \" center the name(s)
                    291: ..
                    292: .de ai                                 \" author's institution
                    293: .if \\n(t2 .sp 2v                      \" space after a title
                    294: .nr t2 0                               \" institution
                    295: .ft 2                                  \" in italics
                    296: .ps \\n(ps                             \" usual point size and
                    297: .vs \\n(vs                             \" vertical spacing
                    298: .ce 1000                               \" center the name(s)
                    299: ..
                    300: .de bt                                 \" begin text macro
                    301: .nr t2 0                               \" hold it here
                    302: .nr it +1                              \" mark as called
                    303: .ce 0                                  \" end any centering
                    304: .sn 3v                                 \" a little bit of space
                    305: ..
                    306: .\" paragraph
                    307: .de si                                 \" start indented section
                    308: .nr lo \\n(lm                          \" remember the current level
                    309: .nr lm +1                              \" go to the next level
                    310: .ie '\\$1'' .nr l\\n(lm \\n(l\\n(lo+5n \" if no arg, indent 5n
                    311: .el         .nr l\\n(lm \\$1n          \" otherwise, indent that much
                    312: ..
                    313: .de ei                                 \" end indent
                    314: .nr lm -1                              \" down one level
                    315: .if \\n(lm<0 .nr lm 0                  \" make sure you don't go too far
                    316: ..
                    317: .de pg                                 \" plain old paragraph
                    318: .if !\\n(it .bt                                \" end the title and such
                    319: .sn \\n(pdu                            \" inter-paragraph spacing
                    320: .ft 1                                  \" reset a few things (paranoia)
                    321: .                                      \" these ONLY if not in footnote
                    322: .ie \\n(if=0 \{\
                    323: .      ps \\n(ps                       \" reset point size
                    324: .      vs \\n(vs                       \" reset vertical spacing
                    325: .      ne 1v+\\n(.Vu                   \" slightly more than 1 line
                    326: .\}
                    327: .el \{\
                    328: .      ps \\n(ps-2p                    \" reset point size
                    329: .      vs \\n(vs-2p                    \" reset vertical spacing
                    330: .\}
                    331: .in \\n(l\\n(lmu                       \" stop any indenting
                    332: .ce 0                                  \" stop any centering
                    333: .if !'\\$1'L' .if !'\\$1'l' .ti +\\n(piu       \" indent the sucker
                    334: ..
                    335: .de lp                                 \" labelled paragraph
                    336: .pg l                                  \" reset paragraph
                    337: .if \\n(.$>1 .nr li \\$2n              \" if indent given use it
                    338: .in +\\n(liu                           \" indent for paragraph
                    339: .ti -\\n(liu                           \" force first line NOT to indent
                    340: .ta +\\n(liu                           \" for the label
                    341: \&\\$1\t\c
                    342: .if \\w'\\$1'u>=(\\n(l\\n(lmu+\\n(liu) .br     \" don't overwrite
                    343: ..
                    344: .\" section
                    345: .de hu                                 \" header, unnumbered
                    346: .if !\\n(it .bt                                \" end the title and such
                    347: .br                                    \" force out previous line
                    348: .b
                    349: .ps \\n(ps
                    350: .vs \\n(vs
                    351: .in \\n(l\\n(lmu                       \" stop any indenting
                    352: .sn \\n(hsu                            \" inter-section spacing
                    353: .ne 3v+\\n(.Vu                         \" slightly more than 3 lines
                    354: .fi                                    \" process the text, too
                    355: ..
                    356: .de hn                                 \" header, numbered
                    357: .hu
                    358: .ie !'\\$1'' .nr hn \\$1
                    359: .el          .nr hn 1
                    360: .ie \\n(hn>0 .nr hn -1
                    361: .el          .nr hn 0
                    362: .ie \\n(hn=0 \{\
                    363: .      nr h0 +1                        \" add 1 to main section header
                    364: .      nr h1 0                         \" zap remaining section numbers
                    365: .      nr h2 0                         \" zap remaining section numbers
                    366: .      nr h3 0                         \" zap remaining section numbers
                    367: \\n(h0.
                    368: .\}
                    369: .el .ie \\n(hn=1 \{\
                    370: .      nr h1 +1                        \" add 1 to the section header
                    371: .      nr h2 0                         \" zap remaining section numbers
                    372: .      nr h3 0                         \" zap remaining section numbers
                    373: \\n(h0.\\n(h1.
                    374: .\}
                    375: .el .ie \\n(hn=2 \{\
                    376: .      nr h2 +1                        \" add 1 to the section header
                    377: .      nr h3 0                         \" zap remaining section numbers
                    378: \\n(h0.\\n(h1.\\n(h2.
                    379: .\}
                    380: .el \{\
                    381: .      nr h3 +1                        \" add 1 to the section number
                    382: \\n(h0.\\n(h1.\\n(h2.\\n(h3.
                    383: .\}
                    384: .if \\n(.$=2 \\$2
                    385: ..
                    386: .\" displays (no floats, thank God!)
                    387: .de sd                                 \" start display
                    388: .                                      \" look for nested displays -- ILLEGAL
                    389: .ie \\n(id>0 .er "display within display"
                    390: .el \{\
                    391: .      ie '\\$1'c' .nr sf 1            \" center the sucker
                    392: .      el          .nr sf 0            \" don't center it
                    393: .\}
                    394: .sn \\n(pdu                            \" a little bit of space
                    395: .ev 2                                  \" switch to display environment
                    396: .nf                                    \" what you type is what you get
                    397: .if \\n(id=0 .di dd                    \" start saving text
                    398: .rs                                    \" don't eat leading space
                    399: .nr id +1                              \" increment level of display
                    400: ..
                    401: .de ed                                 \" end display
                    402: .br                                    \" flush line
                    403: .ie \\n(id<=0 .er "end display has no corresponding begin display"
                    404: .el \{\
                    405: .      nr id -1                        \" decrement level of display
                    406: .      if \\n(id=0 \{\
                    407: .              di                      \" end diversion
                    408: .              fi                      \" resume filling
                    409: .              in -\\n(piu             \" dedent
                    410: .              ev                      \" pop environment
                    411: .              ne \\n(dnu              \" be sure you have room
                    412: .              nf                      \" don't reprocess display
                    413: .              rs                      \" don't eat leading space
                    414: .              zi                      \" save indents
                    415: .              ie \\n(sf .in (\\n(llu-\\n(dlu)/2u      \" center on the line length
                    416: .              el .in +\\n(piu         \" indent the sucker
                    417: .              dd                      \" drop display
                    418: .              yi                      \" restore indents
                    419: .      \}
                    420: .\}
                    421: .fi                                    \" resume filling
                    422: .sn \\n(pdu                            \" a little bit of space
                    423: ..
                    424: .\" **********
                    425: .\" fonts -- if argument(s), apply only to first
                    426: .de b                                  \" bold (font 3)
                    427: .ie \\n(.$>0 \\&\\$3\\f3\\$1\\fP\\$2
                    428: .el .ft 3
                    429: ..
                    430: .de i                                  \" italics (font 2)
                    431: .ie \\n(.$>0 \\&\\$3\\f2\\$1\\fP\\$2
                    432: .el .ft 2
                    433: ..
                    434: .de r                                  \" roman (font 1)
                    435: .ft 1                                  \" just restore it
                    436: ..
                    437: .de bi                                 \" bold italics (embolden font 2)
                    438: \\&\\$3\c
                    439: \\kb\\f2\\$1\\fP\\h'|\\nbu+2u'\\f2\\$1\\fP\\$2
                    440: ..
                    441: .\" **********
                    442: .\" point sizes -- if argument(s), apply only to first
                    443: .de sm                                 \" reduce point size by 2
                    444: .ie \\n(.$>0 \\&\\$3\\s-2\\$1\\s0\\$2
                    445: .el .ps -2
                    446: ..
                    447: .de is                                 \" increase point size by 2
                    448: .ie \\n(.$>0 \\&\\$3\\s+2\\$1\\s0\\$2
                    449: .el .ps +2
                    450: ..
                    451: .de nl                                 \" return to normal size
                    452: .ps \\n(ps                             \" just reset the point size
                    453: ..
                    454: .\" **********
                    455: .\" handy force space/inhibit more space macros
                    456: .de sn                                 \" space, then turn on nospace mode
                    457: .sp \\$1                               \" space
                    458: .ns                                    \" ignore any more space requests
                    459: ..
                    460: .de sr                                 \" force out space
                    461: .rs                                    \" turn on spacing mode
                    462: .sp \\$1                               \" space
                    463: ..
                    464: .\" **********
                    465: .\" end of text and error macros
                    466: .de et                                 \" end of text macro
                    467: .br                                    \" flush out remaining line
                    468: .tf                                    \" dump any footnotes
                    469: .                                      \" check for open displays or footnotes
                    470: .if \\n(id>0 .er "unfinished display"
                    471: .if \\n(if>0 .er "unfinished footnote"
                    472: .                                      \" this one means an -mn bug (*sigh*)
                    473: .if !'\\n(.z'' .er "diversion \\n(.z not closed"
                    474: ..
                    475: .de er                                 \" print error message
                    476: .                                      \" flag it as an error
                    477: .ds ws "** ERROR **
                    478: .                                      \" if you have it, give the file name
                    479: .if !'\\*(.f'' .as ws " file \\*(.f,
                    480: .                                      \" put out the line number
                    481: .as ws " line \\n(.c
                    482: .                                      \" and finally the error message
                    483: .tm \\*(ws: \\$1
                    484: ..
                    485: .\" **********
                    486: .\" macros in this section are VERY specific to the news documentation
                    487: .de pa                                 \" protocol appellation (darn names!)
                    488: \\&\\$3\\f2\\$1\\fP\\$2
                    489: ..
                    490: .de ng                                 \" news group name
                    491: \\&\\$3\\f3\\$1\\fP\\$2
                    492: ..
                    493: .de cn                                 \" computer name
                    494: \\&\\$3\\f2\\$1\\fP\\$2
                    495: ..
                    496: .de hf                                 \" header field
                    497: \\&\\$3\\*(lq\\$1\\*(rq\\$2
                    498: ..
                    499: .de cf                                 \" contents of field
                    500: \\&\\$3\\*(lq\\$1\\*(rq\\$2
                    501: ..
                    502: .de qc                                 \" quote control char (command)
                    503: \\&\\$3\\f3<\\s-2\\$1\\s0>\\fP\\$2
                    504: ..
                    505: .de qp                                 \" quote printing char (command)
                    506: \\&\\$3\\f3\\$1\\fP\\$2
                    507: ..
                    508: .de op                                 \" option
                    509: \\&\\$3\\f3\\$1\\fP\\$2
                    510: ..
                    511: .\" **********
                    512: .\" trademarked names
                    513: .de pd                                 \" print "PDP-11"
                    514: .ie \\n(p1 \\&\\$2\\s-1PDP\\s0-11\\$1
                    515: .el \{\
                    516: .      nr p1 +1                        \" mark footnote as dropped
                    517: \\&\\$2\\s-1PDP\\s0-11\\*(dg\\$1
                    518: .      fn                              \" put out the footnote
                    519: \\&\\*(dgPDP-11 is a trademark of Digital Equipment Corporation.
                    520: .      ef                              \" short and sweet ...
                    521: .\}
                    522: ..
                    523: .de ux                                 \" print "UNIX"
                    524: .ie \\n(ux \\&\\$2\\s-1UNIX\\s0\\$1
                    525: .el \{\
                    526: .      nr ux +1                        \" mark footnote as dropped
                    527: \\&\\$2\\s-1UNIX\\s0\\*(dg\\$1
                    528: .      fn                              \" put out the footnote
                    529: \\&\\*(dgUNIX is a trademark of AT&T Bell Laboratories.
                    530: .      ef                              \" short and sweet ...
                    531: .\}
                    532: ..
                    533: .de vx                                 \" print "VAX"
                    534: .ie \\n(vx \\&\\$2\\s-1VAX\\s0\\$1
                    535: .el \{\
                    536: .      nr vx +1                        \" mark footnote as dropped
                    537: \\&\\$2\\s-1VAX\\s0\\*(dg\\$1
                    538: .      fn                              \" put out the footnote
                    539: \\&\\*(dgVAX is a trademark of Digital Equipment Corporation.
                    540: .      ef                              \" short and sweet ...
                    541: .\}
                    542: ..
                    543: .\" **********
                    544: .\" set up string and number registers
                    545: .                                      \" set up for the date
                    546: .if \n(mo=1  .ds mo January
                    547: .if \n(mo=2  .ds mo February
                    548: .if \n(mo=3  .ds mo March
                    549: .if \n(mo=4  .ds mo April
                    550: .if \n(mo=5  .ds mo May
                    551: .if \n(mo=6  .ds mo June
                    552: .if \n(mo=7  .ds mo July
                    553: .if \n(mo=8  .ds mo August
                    554: .if \n(mo=9  .ds mo September
                    555: .if \n(mo=10 .ds mo October
                    556: .if \n(mo=11 .ds mo November
                    557: .if \n(mo=12 .ds mo December
                    558: .ds dy "\*(mo \n(dy, 19\n(yr
                    559: .if \n(dw=1  .ds dw Sunday
                    560: .if \n(dw=2  .ds dw Monday
                    561: .if \n(dw=3  .ds dw Tuesday
                    562: .if \n(dw=4  .ds dw Wednesday
                    563: .if \n(dw=5  .ds dw Thursday
                    564: .if \n(dw=6  .ds dw Friday
                    565: .if \n(dw=7  .ds dw Saturday
                    566: .                                      \" NROFF dependencies
                    567: .if n \{\
                    568: .                                      \" string registers
                    569: .      ds dg *
                    570: .      ds lq ""
                    571: .      ds rq ""
                    572: .      ds f1 "\*(dy
                    573: .                                      \" number registers
                    574: .      nr hs 1v                        \" space before section header
                    575: .      nr pd 1v                        \" inter-paragraph spacing
                    576: .      nr bm 1.0i                      \" height of bottom margin
                    577: .\}
                    578: .if t \{\
                    579: .                                      \" string registers
                    580: .      ds dg \(dg
                    581: .      ds lq ``
                    582: .      ds rq ''
                    583: .                                      \" number registers
                    584: .      nr hs 1v                        \" space before section header
                    585: .      nr pd 0.3v                      \" inter-paragraph spacing
                    586: .      nr bm 1.0i+1v                   \" height of bottom margin (wacky laser)
                    587: .\}
                    588: .                                      \" these are the same for [NT]ROFF
                    589: .ds vr "News Version B2.10.3
                    590: .ds h1 - % -
                    591: .nr bt 0.5i+1v                         \" bottom of page to footer
                    592: .nr cm 0                               \" no cut marks
                    593: .nr fc 0 1                             \" init footnote count
                    594: .nr fl 5.5i                            \" footnote line length
                    595: .nr fp 0-\n(bmu                                \" fo macro trap location
                    596: .nr h0 0                               \" init section header level 0
                    597: .nr h1 0                               \" init section header level 1
                    598: .nr h2 0                               \" init section header level 2
                    599: .nr h3 0                               \" init section header level 3
                    600: .nr id 0                               \" 1 in display
                    601: .nr if 0                               \" 1 in keep
                    602: .nr it 0                               \" 1 when beyond title, etc.
                    603: .nr li 5n                              \" indent for labelled paragraph
                    604: .nr ll 6.5i                            \" line length
                    605: .nr lm 0                               \" left margin
                    606: .nr l0 0                               \" first indent level
                    607: .nr mt 1.5i+1v                         \" title goes down this far
                    608: .nr pi 5n                              \" regular paragraph indent
                    609: .nr po 1.0i                            \" page offset
                    610: .nr ps 10                              \" point size
                    611: .nr tm 1.0i                            \" height of top margin
                    612: .nr tt 0.5i-0.5v                       \" top of page to header
                    613: .nr p1 0                               \" no PDP-TM message yet
                    614: .nr ux 0                               \" no UNIX-TM message yet
                    615: .nr vx 0                               \" no VAX-TM message yet
                    616: .nr vs 12                              \" vertical spacing
                    617: .\" set things up
                    618: .po \n(pou                             \" set page offset
                    619: .ps \n(ps                              \" set previous, current
                    620: .ps \n(ps                              \"   point sizes
                    621: .vs \n(vs                              \" set previous, current
                    622: .vs \n(vs                              \"   vertical spacings
                    623: .ll \n(llu                             \" set line length
                    624: .lt \n(llu                             \" set title line length
                    625: .ev 1                                  \" *** footnote environment
                    626: .ps \n(ps-2p                           \" set previous, current
                    627: .ps \n(ps-2p                           \"   point sizes
                    628: .vs \n(vs-2p                           \" set previous, current
                    629: .vs \n(vs-2p                           \"   vertical spacings
                    630: .ll \n(flu                             \" set line length
                    631: .lt \n(flu                             \" set title line length
                    632: .ev                                    \" *** pop environment
                    633: .ev 2                                  \" *** footnote environment
                    634: .ps \n(ps                              \" set previous, current
                    635: .ps \n(ps                              \"   point sizes
                    636: .vs \n(vs                              \" set previous, current
                    637: .vs \n(vs                              \"   vertical spacings
                    638: .ll \n(llu                             \" set line length
                    639: .lt \n(llu                             \" set title line length
                    640: .ev                                    \" *** pop environment
                    641: .\" install traps
                    642: .wh 0i hd                              \" position header trap
                    643: .wh -\n(bmu fo                         \" position footer trap
                    644: .wh \n(.pu+1i fx                       \" put footnote overflow trap here
                    645: .ch fx -\n(bmu                         \" move it over fo
                    646: .wh -\n(btu pf                         \" print the bottom margin here
                    647: .em et                                 \" at end of file, call et
                    648: .\" couple of miscellaneous requests
                    649: .bd S 3 3                              \" embolden special font chars if B
                    650: .hy 2                                  \" don't hyphenate last lines

unix.superglobalmegacorp.com

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