Commit | Line | Data |
---|---|---|
95f51977 C |
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 mab@riacs.arpa | |
35 | .\" initial version | |
36 | .\" version 1.1 October 25, 1985 mab@riacs.arpa | |
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 mab@riacs.arpa | |
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 mab@riacs.arpa | |
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 |