|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.