|
|
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.