Annotation of 43BSD/contrib/news/doc/tmac.n, revision 1.1.1.1

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