home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / riscbsd / 1_1_contri / usd / 10_etiq / tmac_n < prev   
Encoding:
Text File  |  1986-05-27  |  21.8 KB  |  651 lines

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