BSD 4_3_Reno release
[unix-history] / usr / share / doc / usd / 10.etiq / tmac.n
CommitLineData
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