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