home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 25.ddi / root.2 / usr / ucblib / doctools / tmac / sun < prev    next >
Encoding:
Text File  |  1990-12-20  |  29.1 KB  |  1,690 lines

  1. '\"#ident    "@(#)//usr/ucblib/doctools/tmac/sun.sl 1.1 4.0 12/08/90 5424 AT&T-USL"
  2. '\"        PROPRIETARY NOTICE (Combined)
  3. '\"
  4. '\"This source code is unpublished proprietary information
  5. '\"constituting, or derived under license from AT&T's UNIX(r) System V.
  6. '\"In addition, portions of such source code were derived from Berkeley
  7. '\"4.3 BSD under license from the Regents of the University of
  8. '\"California.
  9. '\"
  10. '\"
  11. '\"
  12. '\"        Copyright Notice 
  13. '\"
  14. '\"Notice of copyright on this source code product does not indicate 
  15. '\"publication.
  16. '\"
  17. '\"    (c) 1986,1987,1988,1989  Sun Microsystems, Inc
  18. '\"    (c) 1983,1984,1985,1986,1987,1988,1989  AT&T.
  19. '\"              All rights reserved.
  20. .ds // /usr/ucblib/doctools/tmac/
  21. .    \" IZ - initialize (before text begins)
  22. .de IZ
  23. .nr FM 1i
  24. .nr YY -\\n(FMu
  25. .nr XX 0 1
  26. .nr IP 0
  27. .nr PI 4n
  28. .nr QI 5n
  29. .nr FI 2n
  30. .nr I0 \\n(PIu
  31. .if n .nr PD 1v
  32. .if t .nr PD .5v
  33. .if n .nr DD 1v
  34. .if t .nr DD .5v
  35. .nr PS 11
  36. .nr VS 13
  37. .ps \\n(PS
  38. .vs \\n(VSp
  39. .nr dP 1
  40. .nr dV 1
  41. .nr ML 3v
  42. .nr IR 0
  43. .nr TB 0
  44. .nr SJ \\n(.j
  45. .if \\nO .po \\nOu
  46. .nr PO \\n(.ou
  47. .nr LL 6.5i
  48. .ll \\n(LLu
  49. .lt 6.5i
  50. .ev 1
  51. .nr FL 6i
  52. .ll \\n(FLu
  53. .ps 8
  54. .vs 10p
  55. .ev
  56. .ds CH - \\\\n(PN -
  57. .if n .ds CF \\*(DY
  58. .wh 0 NP
  59. .wh -\\n(FMu FO
  60. .ch FO 16i
  61. .wh -\\n(FMu FX
  62. .ch FO -\\n(FMu
  63. .wh -\\n(FMu/2u BT
  64. ..
  65. .    \" RT - reset (at new paragraph)
  66. .de RT
  67. .if !\\n(1T .BG
  68. .if !\\n(IK .if !\\n(IF .if !\\n(IX .if !\\n(BE .di
  69. .if \\n(TM .ls 2
  70. .ce 0
  71. .ul 0
  72. .if \\n(QP \{\
  73. .    ll +\\n(QIu
  74. .    in -\\n(QIu
  75. .    nr QP -1
  76. .\}
  77. .if \\n(NX<=1 .if !\\n(AJ .ll \\n(LLu
  78. .if !\\n(IF \{\
  79. .    ps \\n(PS
  80. .    if \\n(VS>=40 .vs \\n(VSu
  81. .    if \\n(VS<=39 .vs \\n(VSp
  82. .\}
  83. .if !\\n(IP .nr I0 \\n(PIu
  84. .if \\n(IP \{\
  85. .    in -\\n(I\\n(IRu
  86. .    nr IP -1
  87. .\}
  88. .ft 1
  89. .TA
  90. .fi
  91. ..
  92. .    \" TA - set default tabs
  93. .de TA
  94. .if n .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n 80n
  95. .if t .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n
  96. ..
  97. .    \" BG - begin (at first paragraph)
  98. .de BG
  99. .br
  100. .nr YE 1
  101. .di
  102. .ce 0
  103. .nr KI 0
  104. .hy 14
  105. .nr 1T 1
  106. .S\\n(ST
  107. .rm S0 S1 S2 SY TX AX WT RP
  108. .\"redefs
  109. .de TL
  110. .ft 3
  111. .ce 99
  112. .sp
  113. .LG
  114. \\..
  115. .de AU
  116. .ft 2
  117. .if n .ul 0
  118. .ce 99
  119. .sp
  120. .NL
  121. \\..
  122. .de AI
  123. .ft 1
  124. .if n .ul 0
  125. .ce 99
  126. .if n .sp
  127. .if t .sp .5
  128. .NL
  129. \\..
  130. .RA
  131. .rn FJ FS
  132. .rn FK FE
  133. .nf
  134. .ev 1
  135. .ps \\n(PS-2
  136. .vs \\n(.s+2p
  137. .ev
  138. .if !\\n(KG .nr FP 0
  139. .nr KG 0
  140. .if \\n(FP \{\
  141. .    FS
  142. .    FG
  143. .    FE
  144. .\}
  145. .br
  146. .if \\n(TV .if n .sp 2
  147. .if \\n(TV .if t .sp 1
  148. .fi
  149. .ll \\n(LLu
  150. ..
  151. .       \" RA - redefine abstract
  152. .de RA
  153. .de AB
  154. .br
  155. .if !\\n(1T .BG
  156. .ce
  157. .sp
  158. .if !\\n(.$ ABSTRACT
  159. .if \\n(.$ .if !\\$1no \\$1
  160. .if !\\n(.$ .sp
  161. .if \\n(.$ .if !\\$1no .sp
  162. .sp
  163. .nr AJ 1
  164. .in +\\n(.lu/12u
  165. .ll -\\n(.lu/12u
  166. .RT
  167. .if \\n(TM .ls 1
  168. \\..
  169. .de AE
  170. .nr AJ 0
  171. .br
  172. .in 0
  173. .ll \\n(LLu
  174. .if \\n(VS>=40 .vs \\n(VSu
  175. .if \\n(VS<=39 .vs \\n(VSp
  176. .if \\n(TM .ls 2
  177. \\..
  178. ..
  179. .       \" RP - released paper format
  180. .de RP
  181. .nr ST 2
  182. .if \\$1no .nr ST 1
  183. .pn 0
  184. .br
  185. ..
  186. .       \" TL - source file for cover sheet
  187. .de TL
  188. .rn TL @T
  189. .so \*(//ms.cov
  190. .TL
  191. .rm @T
  192. ..
  193. .    \" Paragraph Depth
  194. .de PD
  195. .if t .nr PD .5v
  196. .if n .nr PD 1v
  197. .if !\\$1 .nr PD \\$1v
  198. ..
  199. .    \" PP - regular paragraph
  200. .de PP
  201. .RT
  202. .if \\n(1T .sp \\n(PDu
  203. .ne 1.1
  204. .ti +\\n(PIu
  205. ..
  206. .    \" LP - left paragraph
  207. .de LP
  208. .RT
  209. .if \\n(1T .sp \\n(PDu
  210. .ne 1.1
  211. .ti \\n(.iu
  212. ..
  213. .    \" IP - indented paragraph
  214. .de IP
  215. .RT
  216. .if \\n(1T .sp \\n(PDu
  217. .ne 1.1
  218. .if !\\n(IP .nr IP +1
  219. .if \\n(.$-1 .nr I\\n(IR \\$2n
  220. .in +\\n(I\\n(IRu
  221. .ta \\n(I\\n(IRu
  222. .if \\n(.$ \{\
  223. .ds HT \&\\$1\^\^\^
  224. .ti -\\n(I\\n(IRu
  225. \\*(HT\t\c
  226. .if \w\\*(HTu>(\\n(I\\n(IRu) .br
  227. .\}
  228. ..
  229. .    \" XP - exdented paragraph
  230. .de XP
  231. .RT
  232. .if \\n(1T .sp \\n(PDu
  233. .ne 1.1
  234. .if !\\n(IP .nr IP +1
  235. .in +\\n(I\\n(IRu
  236. .ti -\\n(I\\n(IRu
  237. ..
  238. .    \" QP - quote paragraph
  239. .de QP
  240. .ti \\n(.iu
  241. .RT
  242. .if \\n(1T .sp \\n(PDu
  243. .ne 1.1
  244. .nr QP 1
  245. .in +\\n(QIu
  246. .ll -\\n(QIu
  247. .ti \\n(.iu
  248. .if \\n(TM .ls 1
  249. ..
  250. .    \" SH - section header
  251. .de SH
  252. .ti \\n(.iu
  253. .RT
  254. .if \\n(1T .sp
  255. .RT
  256. .ne 3.1
  257. .ft B
  258. ..
  259. .    \"                 $1 = C: As Chapter Heading; TOC Entry
  260. .    \" UH - UnNumbered $1 = M: As Chapter Heading; no TOC entry
  261. .    \"      Headings   $1 = H: Centered Heading; no TOC entry
  262. .    \"                 $1 = HC: Centered Heading; TOC Entry
  263. .    \"                 $1 = S: Left Adjusted Heading; no TOC entry
  264. .    \"                 $1 = SC: Left Adjusted Heading; TOC Entry
  265. .    \"                 $1 = CONTENTS: Setup for Table of Contents
  266. .    \"                 $1 = INDEX: Setup for Index
  267. .    \"                 $1 = TABLES: Setup for List of Tables
  268. .    \"                 $1 = FIGURES: Setup for List of Figures
  269. .de UH
  270. .SH
  271. .if '\\$1'C' \{\
  272. .ne 1.0i+2v
  273. .ad c
  274. .ps 18
  275. .vs 24
  276. \\&
  277. .sp 0.5i
  278. \\$2
  279. .sp 0.5i
  280. .ps
  281. .vs
  282. .ad b
  283. .R
  284. \}
  285. .if '\\$1'M' \{\
  286. .ne 1.0i+2v
  287. .ad c
  288. .ps 18
  289. .vs 24
  290. \\&
  291. .sp 0.5i
  292. \\$2
  293. .sp 0.5i
  294. .ps
  295. .vs
  296. .ad b
  297. .R
  298. \}
  299. .if '\\$1'H' \{\
  300. .ne 0.7i+2v
  301. .ad c
  302. .if \\n(NS=2 .ft B
  303. .if \\n(NS=2 .ps 14p
  304. .if \\n(NS=2 .vs 18p
  305. \\&
  306. .sp 0.25i
  307. \\$2
  308. .sp 0.1i
  309. .ad b
  310. .R \}
  311. .if '\\$1'S' \{\
  312. .ne 0.2i+2v
  313. .if \\n(NS=3 .ft I
  314. .if \\n(NS=3 .ps 12p
  315. .if \\n(NS=3 .vs 15p
  316. \\&
  317. .sp 0.1i
  318. \\$2
  319. .sp 0.1i
  320. .R \}
  321. .if '\\$1'HC' \{\
  322. .ne 0.7i+2v
  323. .ad c
  324. .if \\n(NS=2 .ft B
  325. .if \\n(NS=2 .ps 14p
  326. .if \\n(NS=2 .vs 18p
  327. \\&
  328. .sp 0.25i
  329. \\$2
  330. .sp 0.1i
  331. .ad b
  332. .R \}
  333. .if '\\$1'SC' \{\
  334. .ne 0.2i+2v
  335. .if \\n(NS=3 .ft I
  336. .if \\n(NS=3 .ps 12p
  337. .if \\n(NS=3 .vs 15p
  338. \\&
  339. .sp 0.1i
  340. \\$2
  341. .sp 0.1i
  342. .R \}
  343. .if '\\$1'C'  .if \\n(IK  \!.tm .CE U "\\$2" \\\\n(PN \\n(dT \\n(H1
  344. .if '\\$1'C'  .if !\\n(IK .tm .CE U "\\$2" \\n(PN \\n(dT \\n(H1
  345. .if '\\$1'HC' .if \\n(IK  \!.tm .CE UH "\\$2" \\\\n(PN \\n(dT \\n(H1
  346. .if '\\$1'HC' .if !\\n(IK .tm .CE UH "\\$2" \\n(PN \\n(dT \\n(H1
  347. .if '\\$1'SC' .if \\n(IK  \!.tm .CE UH "\\$2" \\\\n(PN \\n(dT \\n(H1
  348. .if '\\$1'SC' .if !\\n(IK .tm .CE UH "\\$2" \\n(PN \\n(dT \\n(H1
  349. .if '\\$1'CONTENTS' .nr cF 1
  350. .if '\\$1'TABLES' .nr cF 1
  351. .if '\\$1'FIGURES' .nr cF 1
  352. .if '\\$1'INDEX' .nr cF 1
  353. .if \\n(cF \{\
  354. .LP
  355. .EH ''''
  356. .OH ''''
  357. .EF ''\- \\\\\\\\n(PN \-''
  358. .OF ''\- \\\\\\\\n(PN \-''
  359. .if \\nP .pn \\nP+1
  360. .if \\nP .nr PN \\nP
  361. .nf
  362. .if '\\$1'CONTENTS' .ds hD Contents
  363. .if '\\$1'TABLES' .ds hD Tables
  364. .if '\\$1'FIGURES' .ds hD Figures
  365. .if '\\$1'INDEX' .ds hD Index
  366. .ps 11
  367. .nr PS 11
  368. .vs 14
  369. .nr VS 14
  370. .ne 1.0i+2v
  371. \\&
  372. .sp 0.5i
  373. .ce
  374. .ps 18
  375. .vs 24
  376. .ft B
  377. \\*(hD
  378. .sp 0.5i
  379. .R
  380. .ps 11
  381. .nr PS 11
  382. .vs 14
  383. .nr VS 14
  384. .af PN i
  385. .if !'\\$1'INDEX' \{\
  386. .ll -0.5i
  387. .in +0.5i \}
  388. .if '\\$1'INDEX' \{\
  389. .ps 10
  390. .nr PS 10
  391. .vs 12
  392. .nr VS 12
  393. .2C\}\}
  394. ..
  395. .    \" SE - Make special entry in the Contents File
  396. .de SE
  397. .if \\n(IK \!.tm SE \\$1\t\\$2\t\\$3\t\\$4\t\\$5\t\\$6\t\\$7\t\\$8\t\\$9\t\\\\n(PN\t\\n(dT\t\\n(H1
  398. .if !\\n(IK .tm SE \\$1\t\\$2\t\\$3\t\\$4\t\\$5\t\\$6\t\\$7\t\\$8\t\\$9\t\\n(PN\t\\n(dT\t\\n(H1
  399. ..
  400. .    \" H - Header - $1=level, $2=text
  401. .    \" $1: [1-5]=levels, C=chapter, A=appendix, PA=paperappendix
  402. .de H
  403. .ti \\n(.iu
  404. .RT
  405. .if \\n(1T .sp
  406. .RT
  407. .ne 3.1
  408. .ft B
  409. .nr NS \\$1
  410. .if '\\$1'C' .nr NS 1
  411. .if '\\$1'C' .nr dT 1
  412. .if '\\$1'A' .nr NS 1
  413. .if '\\$1'A' .nr dT 1
  414. .if '\\$1'PA' .nr NS 1
  415. .if '\\$1'A' .if !\\n(aP \{\
  416. .nr aP 1
  417. .nr H1 0
  418. .af H1 A \}
  419. .if '\\$1'PA' .if !\\n(aP \{\
  420. .nr aP 1
  421. .nr H1 0
  422. .af H1 A \}
  423. .if \\n(NS=1 .if !'\\$1'1' .if !'\\$1'PA'\{\
  424. .if \\nC .nr H1 \\nC-1
  425. .nr C 0
  426. .nr T1 0
  427. .nr F1 0
  428. .bp 1 \}
  429. .af PN 1
  430. .nr H\\n(NS +1
  431. .if !\\n(NS-4 .nr H5 0
  432. .if !\\n(NS-3 .nr H4 0
  433. .if !\\n(NS-2 .nr H3 0
  434. .if !\\n(NS-1 .nr H2 0
  435. .if \\n(NS=1 .ds MT \\$2
  436. .if \\n(NS=1 .if !'\\$1'1' .if !'\\$1'PA'\{\
  437. .ad c
  438. .ps 18
  439. .vs 24
  440. \\&
  441. .sp 0.5i
  442. .if '\\$1'C' .ds hS Chapter \\n(H1
  443. .if '\\$1'A' .ds hS Appendix \\n(H1
  444. \\*(hS
  445. .sp
  446. \\$2
  447. .sp 0.5i
  448. .ps
  449. .vs
  450. .ad b \}
  451. .if \\n(NS>=1 .if !'\\$1'C' .if !'\\$1'A' .if !'\\$1'PA'\{\
  452. .sp 10p
  453. .ne 33p+20p
  454. .ds SN \\n(H1.
  455. .if \\n(NS>1 .as SN \\n(H2.
  456. .if \\n(NS>2 .as SN \\n(H3.
  457. .if \\n(NS>3 .as SN \\n(H4.
  458. .if \\n(NS>4 .as SN \\n(H5.
  459. .if \\n(NS=1 .ft B
  460. .if \\n(NS=1 .ps 16p
  461. .if \\n(NS=1 .vs 18p
  462. .if \\n(NS=2 .ft B
  463. .if \\n(NS=2 .ps 14p
  464. .if \\n(NS=2 .vs 18p
  465. .if \\n(NS=3 .ft I
  466. .if \\n(NS=3 .ps 12p
  467. .if \\n(NS=3 .vs 15p
  468. .if \\n(NS=4 .ft I
  469. .if \\n(NS=4 .ps 11p
  470. .if \\n(NS=4 .vs 15p
  471. .if \\n(NS=5 .ft R
  472. .if \\n(NS=5 .ps \\n(PSp
  473. .if \\n(NS=5 .vs \\n(VSp
  474. .in +\\w'\\*(SN\\ \\ 'u
  475. .ta \\w'\\*(SN\\ \\ 'u
  476. .ti -\\w'\\*(SN\\ \\ 'u
  477. \\*(SN\\ \\ \t\c
  478. \&\\$2
  479. .in
  480. .ps
  481. .vs
  482. .sp 7p \}
  483. .if '\\$1'PA'\{\
  484. .sp 13p
  485. .ne 33p+20p
  486. .ft B
  487. .ps 16p
  488. .vs 18p
  489. .in +\\w'\\*(SN\\ \\ 'u
  490. .ta \\w'\\*(SN\\ \\ 'u
  491. .ti -\\w'\\*(SN\\ \\ 'u
  492. .ds SN Appendix \\n(H1.
  493. .ti -\\w'\\*(SN\\ \\ 'u
  494. \\*(SN\\ \\ \t\c
  495. \&\\$2
  496. .in
  497. .ps
  498. .vs
  499. .sp 7p \}
  500. .R
  501. .if '\\$1'C' .if  \\n(IK \!.tm .CE C "\\$2" \\\\n(PN \\n(dT \\n(H1
  502. .if '\\$1'C' .if !\\n(IK .tm .CE C "\\$2" \\n(PN \\n(dT \\n(H1
  503. .if '\\$1'A' .if  \\n(IK \!.tm .CE A "\\$2" \\\\n(PN \\n(dT \\n(H1
  504. .if '\\$1'A' .if !\\n(IK .tm .CE A "\\$2" \\n(PN \\n(dT \\n(H1
  505. .if '\\$1'1' .if  \\n(IK \!.tm .CE N "\\$2" \\\\n(PN \\n(dT \\n(H1
  506. .if '\\$1'1' .if !\\n(IK .tm .CE N "\\$2" \\n(PN \\n(dT \\n(H1
  507. .if '\\$1'PA' .if  \\n(IK \!.tm .CE N "\\$2" \\\\n(PN \\n(dT \\n(H1
  508. .if '\\$1'PA' .if !\\n(IK .tm .CE N "\\$2" \\n(PN \\n(dT \\n(H1
  509. .if \\n(NS>1 .if  \\n(IK \!.tm .CE N "\\$2" \\\\n(PN \\n(dT \\n(H1 \\n(H2 \\n(H3 \\n(H4 \\n(H5
  510. .if \\n(NS>1 .if !\\n(IK .tm .CE N "\\$2" \\n(PN \\n(dT \\n(H1 \\n(H2 \\n(H3 \\n(H4 \\n(H5
  511. ..
  512. .    \" TN - Table Caption
  513. .de TN
  514. .nr T1 +1
  515. .sp
  516. .if \\n(dT  .ds tS Table \\n(H1-\\n(T1: \\$1
  517. .if !\\n(dT .ds tS Table \\n(T1: \\$1
  518. .ce
  519. \\*(tS
  520. .sp
  521. .ie \\n(IK \!.tm .CE T "\\$1" \\\\n(PN \\n(dT \\n(H1 \\n(T1
  522. .el .tm .CE T "\\$1" \\n(PN \\n(dT \\n(H1 \\n(T1
  523. ..
  524. .    \" FN - Figure Caption
  525. .de FN
  526. .nr F1 +1
  527. .sp
  528. .if \\n(dT  .ds tS Figure \\n(H1-\\n(F1: \\$1
  529. .if !\\n(dT .ds tS Figure \\n(F1: \\$1
  530. .ce
  531. \\*(tS
  532. .sp
  533. .ie \\n(IK \!.tm .CE F "\\$1" \\\\n(PN \\n(dT \\n(H1 \\n(F1
  534. .el .tm .CE F "\\$1" \\n(PN \\n(dT \\n(H1 \\n(F1
  535. ..
  536. .    \" CE - table of contents entry
  537. .    \" $1 : header type;  $2 : text;  $3 : page number;  $4 : document type
  538. .    \" $5 : chapter number;  $6, 7, 8 : additional numbers
  539. .de CE
  540. .fi
  541. .na
  542. .nh
  543. .rm lS
  544. .ds rS \\$3
  545. .if !'\\$4'0' .ds rS \\$5-\\$3
  546. .if '\\$1'N' .if '\\$6\\$7\\$8\\$9'' .ds rS \fB\\$3\fP
  547. .if '\\$1'C' .if !'\\$5'' .if !'\\$5'0' .ds rS \fB\\$5-\\$3\fP
  548. .if '\\$1'A' .if !'\\$5'' .if !'\\$5'0' .ds rS \fB\\$5-\\$3\fP
  549. .if '\\$1'T' .if '\\$4'0' .ds lS Table \\$6\ \ 
  550. .if '\\$1'F' .if '\\$4'0' .ds lS Figure \\$6\ \ 
  551. .if '\\$1'T' .if '\\$4'1' .ds lS Table \\$5-\\$6\ \ 
  552. .if '\\$1'F' .if '\\$4'1' .ds lS Figure \\$5-\\$6\ \ 
  553. .if '\\$1'A' .ds lS \fBAppendix \\$5\fP\ \ 
  554. .if '\\$1'C' .ds lS \fBChapter \\$5\fP\ \ 
  555. .if '\\$1'N' .ds lS \\$5.\ \ 
  556. .if '\\$1'N' .if '\\$6\\$7\\$8\\$9'' .ds lS \fB\\$5.\fP\ \ 
  557. .if '\\$1'N' .if !'\\$6'' .if !'\\$6'0' .ds lS "    \\$5.\\$6.\ \ 
  558. .if '\\$1'N' .if !'\\$7'' .if !'\\$7'0' .ds lS "        \\$5.\\$6.\\$7.\ \ 
  559. .if '\\$1'N' .if !'\\$8'' .if !'\\$8'0' .ds lS "            \\$5.\\$6.\\$7.\\$8.\ \ 
  560. .if '\\$1'N' .if !'\\$9'' .if !'\\$9'0' .ds lS "                \\$5.\\$6.\\$7.\\$8.\\$9\ \ 
  561. .if '\\$1'N' .if '\\$6\\$7\\$8\\$9'' .ne 3
  562. .if '\\$1'U' .ne 3
  563. .if '\\$1'A' .ne 3
  564. .if '\\$1'C' .ne 3
  565. .if '\\$1'N' .if '\\$6\\$7\\$8\\$9'' .sp
  566. .if '\\$1'U' .sp
  567. .if '\\$1'A' .sp
  568. .if '\\$1'C' .sp
  569. .\" Reduce line length, save section # width, increase indent:
  570. .nr $l \\n(.l \"save line length
  571. .ll -8n  \"try 8 ens for now
  572. .nr wN \\w\\*(lSu \"wN = width of section number
  573. .in +\\n(wNu
  574. .\" Output number (lS) and text ($2) with short line length
  575. .ti -\\n(wNu  \"don't indent first line
  576. .vs \\n(.sp+2p  \"normalize spacing
  577. .\" We need at least two lines for this 'moving-backward' hack to work:
  578. .ne 2v
  579. \&\\*(lS\\$2
  580. .\"Restore line length and indent
  581. .ll
  582. .in
  583. .\"  Go back to previous line, output leader & page number:
  584. .nf  \"leaders only work right in no-fill mode!
  585. .\" If last line broke, we have to correct for indent:
  586. .if (\\w\\*(lS\\$2u)<=(\\n(.lu-\\n(.iu-8n) .nr wN 0
  587. .ll -\\n(wNu
  588. .ti +\\n(wNu
  589. .ta \\n(.lu-\\n(.iu-5nR \\n(.lu-\\n(.iuR
  590. .sp -1v
  591. .vs \"(now can restore original vertical spacing)
  592. \\h'|\\n(.nu+.5n'\s-3\a\s+3\t\\*(rS
  593. .\"Restore line length (again):
  594. .ll
  595. ..
  596. .    \" NH - numbered header
  597. .de NH
  598. .SH
  599. .nr NS \\$1
  600. .if !\\n(.$ .nr NS 1
  601. .if !\\n(NS .nr NS 1
  602. .nr H\\n(NS +1
  603. .if !\\n(NS-4 .nr H5 0
  604. .if !\\n(NS-3 .nr H4 0
  605. .if !\\n(NS-2 .nr H3 0
  606. .if !\\n(NS-1 .nr H2 0
  607. .if !\\$1 .if \\n(.$ .nr H1 1
  608. .if \\$1S \{\
  609. .    nr NS \\n(.$-1
  610. .    nr H1 \\$2
  611. .    nr H2 \\$3
  612. .    nr H3 \\$4
  613. .    nr H4 \\$5
  614. .    nr H5 \\$6
  615. .\}
  616. .ds SN \\n(H1.
  617. .if \\n(NS-1 .as SN \\n(H2.
  618. .if \\n(NS-2 .as SN \\n(H3.
  619. .if \\n(NS-3 .as SN \\n(H4.
  620. .if \\n(NS-4 .as SN \\n(H5.
  621. \\*(SN
  622. ..
  623. .    \" LS - listing start
  624. .de LS
  625. .ie \\$1no .ID \\$2
  626. .el .DS I \\$1
  627. .nr PQ \\n(.f
  628. .ft L
  629. .ps -\\n(dP
  630. .vs -\\n(dV
  631. .nr @ \\w'x'u*8
  632. .if \\n(.$ .nr @ \\w'x'u*\\$2
  633. .if \\n(.$ .if \\$1no .nr @ \\w'x'u*\\$3
  634. .ta \\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u
  635. ..
  636. .    \" LE - listing end
  637. .de LE
  638. .ft \\n(PQ
  639. .ps \\n(PS
  640. .if \\n(VS>=40 .vs \\n(VSu
  641. .if \\n(VS<=39 .vs \\n(VSp
  642. .DE
  643. ..
  644. .    \" DS - display with keep (L=left I=indent C=center B=block)
  645. .de DS
  646. .KS
  647. .\\$1D \\$2 \\$1
  648. .ft 1
  649. .ps \\n(PS
  650. .if \\n(VS>=40 .vs \\n(VSu
  651. .if \\n(VS<=39 .vs \\n(VSp
  652. ..
  653. .de D
  654. .ID \\$1
  655. ..
  656. .    \" ID - indented display with no keep
  657. .de ID
  658. .XD
  659. .if t .in +.5i
  660. .if n .in +8
  661. .if \\n(.$ .if !\\$1I .if !\\$1 \{\
  662. .    in \\n(OIu
  663. .    in +\\$1n
  664. .\}
  665. ..
  666. .    \" LD - left display with no keep
  667. .de LD
  668. .XD
  669. ..
  670. .    \" CD - centered display with no keep
  671. .de CD
  672. .XD
  673. .ce 999
  674. ..
  675. .    \" XD - real display macro
  676. .de XD
  677. .nf
  678. .nr OI \\n(.i
  679. .sp \\n(DDu
  680. .if \\n(TM .ls 1
  681. ..
  682. .    \" DE - end display of any kind
  683. .de DE
  684. .ce 0
  685. .if \\n(BD .DF
  686. .nr BD 0
  687. .in \\n(OIu
  688. .KE
  689. .if \\n(TM .ls 2
  690. .sp \\n(DDu
  691. .fi
  692. ..
  693. .    \" BD - block display: center entire block
  694. .de BD
  695. .XD
  696. .nr BD 1
  697. .nf
  698. .in \\n(OIu
  699. .di DD
  700. ..
  701. .    \" DF - finish block display
  702. .de DF
  703. .di
  704. .if \\n(dl>\\n(BD .nr BD \\n(dl
  705. .if \\n(BD<\\n(.l .in (\\n(.lu-\\n(BDu)/2u
  706. .nr EI \\n(.l-\\n(.i
  707. .ta \\n(EIuR
  708. .DD
  709. .in \\n(OIu
  710. ..
  711. .    \" KS - begin regular keep
  712. .de KS
  713. .nr KN \\n(.u
  714. .if !\\n(IK .if !\\n(IF .KQ
  715. .nr IK +1
  716. ..
  717. .    \" KQ - real keep processor
  718. .de KQ
  719. .br
  720. .nr KI \\n(.i
  721. .ev 2
  722. .TA
  723. .br
  724. .in \\n(KIu
  725. .ps \\n(PS
  726. .if \\n(VS>=40 .vs \\n(VSu
  727. .if \\n(VS<=39 .vs \\n(VSp
  728. .ll \\n(LLu
  729. .lt \\n(LTu
  730. .if \\n(NX>1 .ll \\n(CWu
  731. .if \\n(NX>1 .lt \\n(CWu
  732. .di KK
  733. .nr TB 0
  734. ..
  735. .    \" KF - begin floating keep
  736. .de KF
  737. .nr KN \\n(.u
  738. .if !\\n(IK .FQ
  739. .nr IK +1
  740. ..
  741. .    \" FQ - real floating keep processor
  742. .de FQ
  743. .nr KI \\n(.i
  744. .ev 2
  745. .TA
  746. .br
  747. .in \\n(KIu
  748. .ps \\n(PS
  749. .if \\n(VS>=40 .vs \\n(VSu
  750. .if \\n(VS<=39 .vs \\n(VSp
  751. .ll \\n(LLu
  752. .lt \\n(LTu
  753. .if \\n(NX>1 .ll \\n(CWu
  754. .if \\n(NX>1 .lt \\n(CWu
  755. .di KK
  756. .nr TB 1
  757. ..
  758. .    \" KE - end keep
  759. .de KE
  760. .if \\n(IK .if !\\n(IK-1 .if !\\n(IF .RQ
  761. .if \\n(IK .nr IK -1
  762. ..
  763. .    \" RQ - real keep release
  764. .de RQ
  765. .br
  766. .di
  767. .nr NF 0
  768. .if \\n(dn-\\n(.t .nr NF 1
  769. .if \\n(TC .nr NF 1
  770. .if \\n(NF .if !\\n(TB .sp 200
  771. .if !\\n(NF .if \\n(TB .nr TB 0
  772. .nf
  773. .rs
  774. .nr TC 5
  775. .in 0
  776. .ls 1
  777. .if !\\n(TB \{\
  778. .    ev
  779. .    br
  780. .    ev 2
  781. .    KK
  782. .\}
  783. .ls
  784. .ce 0
  785. .if !\\n(TB .rm KK
  786. .if \\n(TB .da KJ
  787. .if \\n(TB \!.KD \\n(dn
  788. .if \\n(TB .KK
  789. .if \\n(TB .di
  790. .nr TC \\n(TB
  791. .if \\n(KN .fi
  792. .in
  793. .ev
  794. ..
  795. .    \" start picture
  796. .de PS
  797. .    \" $1 is height, $2 is width, now in inches
  798. .if t .sp .3
  799. .in (\\n(.lu-\\$2)/2u
  800. .ne \\$1u
  801. ..
  802. .    \" end of picture
  803. .de PE
  804. .in
  805. .if t .sp .6
  806. ..
  807. .    \" CP - copy PostScript
  808. .    \"    $1 pathname of PostScript file
  809. .    \"    $2 vertical space    default: 1.0i
  810. .    \"    $3 relative indent    default: 0
  811. .    \"    $4 figure name        default: not printed
  812. .    \"    $5 scale x        default: 1.0
  813. .    \"    $6 scale y        default: 1.0
  814. .    \"    $7 rotation angle    default: 0
  815. .de CP
  816. .br
  817. .ie !\\$2 .nr tY \\$2
  818. .el             .nr tY 1.0i
  819. .ie !\\$3 .nr tX \\$3
  820. .el             .nr tX 0.0i
  821. .ie !\\$4 .nr z 6v
  822. .el             .nr z 0v
  823. .if (\\n(tYu+1v)>(\\n(.tu-\\nz) \{\
  824. .    bp
  825. .    br
  826. .    rs
  827. .\}
  828. .rs
  829. .br
  830. .ie !\\n(.z \{\
  831. \!.mk P#
  832. \!.nr t \\\\n(P#u
  833. .\}
  834. .el \{\
  835. \\kx
  836. .nr t \\n(nlu
  837. .\}
  838. .sp \\n(tYu
  839. .ie !\\$5 .ds sX \\$5
  840. .el             .ds sX 1.0
  841. .ie !\\$6 .ds sY \\$6
  842. .el             .ds sY 1.0
  843. .ie !\\$7 .ds sR \\$7
  844. .el             .ds sR 0
  845. .ie !\\n(.z \{\
  846. \!\\kx
  847. \!.nr x \\\\n(.o+\\\\n(.i+\\\\nx+\\n(tXu
  848. \!.mk P#
  849. \!.nr y \\\\n(P#u
  850. \!\!x P /DOCHEIGHT \\\\nt \\\\ny sub 1.0 \\\\*(sY div mul def
  851. \!\!x P /DOCSTATE save def
  852. \!\!x P \\\\nx \\\\ny translate
  853. \!\!x P \\*(sX 8 mul \\*(sY -8 mul scale
  854. \!\!x P \\*(sR rotate
  855. \!\!x P /showpage {} def
  856. \!\!x I \\$1
  857. \!\!x P DOCSTATE restore
  858. .\}
  859. .el \{\
  860. \\kx
  861. .nr x \\n(.o+\\n(.i+\\nx+\\n(tXu
  862. .mk P#
  863. .nr y \\n(P#u
  864. \!x P /DOCHEIGHT \\nt \\ny sub 1.0 \\*(sY div mul def
  865. \!x P /DOCSTATE save def
  866. \!x P \\nx \\ny translate
  867. \!x P \\*(sX 8 mul \\*(sY -8 mul scale
  868. \!x P \\*(sR rotate
  869. \!x P /showpage {} def
  870. \!x I \\$1
  871. \!x P DOCSTATE restore
  872. .\}
  873. .rr P# sR t x y z sX sY tX tY
  874. .if !\\$4 .FN "\\$4"
  875. ..
  876. .       \" SD - screen dump (raw postscript)
  877. .de SD
  878. .if  \\n(IK \!.mk P#
  879. .if !\\n(IK .mk P#
  880. .if  \\n(IK \!\!x P /sdobj save def initmatrix
  881. .if !\\n(IK \!x P /sdobj save def initmatrix
  882. .if  \\$3 .nr x \\n(GIu+\\n(.ou
  883. .if !\\$3 .nr x \\n(.ou+\\$3
  884. .if  \\$4 .if  \\n(IK \!.nr y 11i-\\\\n(P#u
  885. .if  \\$4 .if !\\n(IK .nr y 11i-\\n(P#u
  886. .if !\\$4 .nr y 11i-\\$4
  887. .if  \\n(IK \!\!x P \\nx 72 mul 576 div  \\\\ny 72 mul 576 div  translate
  888. .if !\\n(IK \!x P \\nx 72 mul 576 div  \\ny 72 mul 576 div  translate
  889. .if  \\$5 .if  \\n(IK \!\!x P 0 rotate
  890. .if  \\$5 .if !\\n(IK \!x P 0 rotate
  891. .if !\\$5 .if  \\n(IK \!\!x P \\$5 rotate
  892. .if !\\$5 .if !\\n(IK \!x P \\$5 rotate
  893. .if  \\$2 .if  \\n(IK \!\!x P 2 2 scale
  894. .if  \\$2 .if !\\n(IK \!x P 2 2 scale
  895. .if !\\$2 .if  \\n(IK \!\!x P \\$2 \\$2 scale
  896. .if !\\$2 .if !\\n(IK \!x P \\$2 \\$2 scale
  897. .if  \\n(IK \!\!x I \\$1
  898. .if !\\n(IK \!x I \\$1
  899. .if  \\n(IK \!\!x P sdobj restore
  900. .if !\\n(IK \!x P sdobj restore
  901. .rr P# x y
  902. ..
  903. .    \" KD - keep redivert
  904. .de KD
  905. .nr KM 0
  906. .if \\n(.zKJ .nr KM 1
  907. .if \\n(KM \!.KD \\$1
  908. .if !\\n(KM .if \\n(.t<\\$1 .di KJ
  909. ..
  910. .    \" EM - end macro (process leftover keep)
  911. .de EM
  912. .br
  913. .if !\\n(TB .if t .wh -1p CM
  914. .if \\n(TB \{\
  915. \&\c
  916. '    bp
  917. .    NP
  918. .    ch CM 160
  919. .\}
  920. ..
  921. .de XK
  922. .nr TD 1
  923. .nf
  924. .ls 1
  925. .in 0
  926. .rn KJ KL
  927. .KL
  928. .rm KL
  929. .if \\n(.zKJ .di
  930. .nr TB 0
  931. .if \\n(.zKJ .nr TB 1
  932. .br
  933. .in
  934. .ls
  935. .fi
  936. .nr TD 0
  937. ..
  938. .    \" NP - new page
  939. .de NP
  940. .if !\\n(LT .nr LT \\n(LLu
  941. .if \\n(FM+\\n(HM>=\\n(.p \{\
  942. .    tm HM + FM longer than page
  943. .    ab
  944. .\}
  945. .\".if t .CM
  946. .if !\\n(HM .nr HM 1i
  947. .po \\n(POu
  948. .nr PF \\n(.f
  949. .nr PX \\n(.s
  950. .ft 1
  951. .ps \\n(PS
  952. 'sp \\n(HMu/2u
  953. .PT
  954. 'sp |\\n(HMu
  955. .HD    \"undefined
  956. .ps \\n(PX
  957. .ft \\n(PF
  958. .nr XX 0 1
  959. .nr YY 0-\\n(FMu
  960. .ch FO 16i
  961. .ch FX 17i
  962. .ch FO -\\n(FMu
  963. .ch FX \\n(.pu-\\n(FMu
  964. .if \\n(MF .FV
  965. .nr MF 0
  966. .mk
  967. .os
  968. .ev 1
  969. .if !\\n(TD .if \\n(TC<5 .XK
  970. .nr TC 0
  971. .ev
  972. .nr TQ \\n(.i
  973. .nr TK \\n(.u
  974. .if \\n(IT \{\
  975. .    in 0
  976. .    nf
  977. .    TT
  978. .    in \\n(TQu
  979. .    if \\n(TK .fi
  980. .\}
  981. .ns
  982. .mk #T
  983. .if t .if "\*(.T"" .if \\n(.o+\\n(LL>7.54i .tm PO + LL wider than 7.54i
  984. ..
  985. .    \" PT - page titles
  986. .de PT
  987. .lt \\n(LTu
  988. .pc %
  989. .nr PN \\n%
  990. .nr PT \\n%
  991. .if \\n(P1 .nr PT 2
  992. .if \\n(PT>1 .if !\\n(EH .if !\\n(OH .tl \\*(LH\\*(CH\\*(RH
  993. .if \\n(PT>1 .if \\n(OH .if o .tl \\*(O1
  994. .if \\n(PT>1 .if \\n(EH .if e .tl \\*(E2
  995. .lt \\n(.lu
  996. ..
  997. .    \" OH - odd page header
  998. .de OH
  999. .nr OH 1
  1000. .if !\\n(.$ .nr OH 0
  1001. .ds O1 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  1002. ..
  1003. .    \" EH - even page header
  1004. .de EH
  1005. .nr EH 1
  1006. .if !\\n(.$ .nr EH 0
  1007. .ds E2 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  1008. ..
  1009. .    \" P1 - PT on 1st page
  1010. .de P1
  1011. .nr P1 1
  1012. ..
  1013. .    \" FO - footer
  1014. .de FO
  1015. .rn FO FZ
  1016. .if \\n(IT .nr T. 1
  1017. .if \\n(IT .if !\\n(FC .T# 1
  1018. .if \\n(IT .br
  1019. .nr FC +1
  1020. .if \\n(NX<2 .nr WF 0
  1021. .nr dn 0
  1022. .if \\n(FC<=1 .if \\n(XX .XF
  1023. .rn FZ FO
  1024. .nr MF 0
  1025. .if \\n(dn .nr MF 1
  1026. .if !\\n(WF .nr YY 0-\\n(FMu
  1027. .if !\\n(WF .ch FO \\n(YYu
  1028. .if !\\n(dn .nr WF 0
  1029. .if \\n(FC<=1 .if !\\n(XX \{\
  1030. .    if \\n(NX>1 .RC
  1031. .    if \\n(NX<2 'bp
  1032. .\}
  1033. .nr FC -1
  1034. .if \\n(ML .ne \\n(MLu
  1035. ..
  1036. .    \" BT - bottom title
  1037. .de BT
  1038. .nr PF \\n(.f
  1039. .nr PX \\n(.s
  1040. .ft 1
  1041. .ps \\n(PS
  1042. .lt \\n(LTu
  1043. .po \\n(POu
  1044. .if \\n(TM .if \\n(CT \{\
  1045. .    tl ''\\n(PN''
  1046. .    nr CT 0
  1047. .\}
  1048. .if \\n% .if !\\n(EF .if !\\n(OF .tl \\*(LF\\*(CF\\*(RF
  1049. .if \\n% .if \\n(OF .if o .tl \\*(O3
  1050. .if \\n% .if \\n(EF .if e .tl \\*(E4
  1051. .ft \\n(PF
  1052. .ps \\n(PX
  1053. ..
  1054. .    \" OF - odd page footer
  1055. .de OF
  1056. .nr OF 1
  1057. .if !\\n(.$ .nr OF 0
  1058. .ds O3 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  1059. ..
  1060. .    \" EF - even page footer
  1061. .de EF
  1062. .nr EF 1
  1063. .if !\\n(.$ .nr EF 0
  1064. .ds E4 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  1065. ..
  1066. .    \" 2C - double column
  1067. .de 2C
  1068. .MC
  1069. ..
  1070. .    \" 1C - single column
  1071. .de 1C
  1072. .MC \\n(LLu
  1073. .hy 14
  1074. ..
  1075. .    \" MC - multiple columns, arg is col width
  1076. .de MC
  1077. .nr L1 \\n(LL*7/15
  1078. .if \\n(.$ .nr L1 \\$1n
  1079. .nr NQ \\n(LL/\\n(L1
  1080. .if \\n(NQ<1 .nr NQ 1
  1081. .if \\n(NQ>2 .if (\\n(LL%\\n(L1)=0 .nr NQ -1
  1082. .if !\\n(1T \{\
  1083. .    BG
  1084. .    if n .sp 4
  1085. .    if t .sp 2
  1086. .\}
  1087. .if !\\n(NX .nr NX 1
  1088. .if !\\n(NX=\\n(NQ \{\
  1089. .    RT
  1090. .    if \\n(NX>1 .bp
  1091. .    mk
  1092. .    nr NC 1
  1093. .    po \\n(POu
  1094. .\}
  1095. .if \\n(NQ>1 .hy 12
  1096. .nr NX \\n(NQ
  1097. .nr CW \\n(L1
  1098. .ll \\n(CWu
  1099. .nr FL \\n(CWu*11u/12u
  1100. .if \\n(NX>1 .nr GW (\\n(LL-(\\n(NX*\\n(CW))/(\\n(NX-1)
  1101. .nr RO \\n(CW+\\n(GW
  1102. .ns
  1103. ..
  1104. .de RC
  1105. .if \\n(NC>=\\n(NX .C2
  1106. .if \\n(NC<\\n(NX .C1
  1107. .nr NC \\n(ND
  1108. .if \\n(iL>0 .if !"\\*(iC"" \{\
  1109. .if \\n(.i>0 .ti -\\n(.i
  1110. \\*(iC
  1111. .ti -4 \}
  1112. ..
  1113. .de C1
  1114. .rt
  1115. .po +\\n(ROu
  1116. .nr ND \\n(NC+1
  1117. .nr XX 0 1
  1118. .if \\n(MF .FV
  1119. .ch FX \\n(.pu-\\n(FMu
  1120. .ev 1
  1121. .if \\n(TB .XK
  1122. .nr TC 0
  1123. .ev
  1124. .nr TQ \\n(.i
  1125. .if \\n(IT .in 0
  1126. .if \\n(IT .TT
  1127. .if \\n(IT .in \\n(TQu
  1128. .mk #T
  1129. .ns
  1130. ..
  1131. .de C2
  1132. .po \\n(POu
  1133. 'bp
  1134. .nr ND 1
  1135. ..
  1136. .    \" RS - right shift
  1137. .de RS
  1138. .nr IS \\n(IP
  1139. .RT
  1140. .nr IP \\n(IS
  1141. .if \\n(IP .in +\\n(I\\n(IRu
  1142. .nr IR +1
  1143. .nr I\\n(IR \\n(PIu
  1144. .in +\\n(I\\n(IRu
  1145. ..
  1146. .    \" RE - retreat left
  1147. .de RE
  1148. .nr IS \\n(IP
  1149. .RT
  1150. .nr IP \\n(IS
  1151. .if \\n(IR .nr IR -1
  1152. .if \\n(IP<=0 .in -\\n(I\\n(IRu
  1153. ..
  1154. .    \" I - italic font
  1155. .de I
  1156. .nr PQ \\n(.f
  1157. .if t .ft 2
  1158. .ie \\$1 .if n .ul 999
  1159. .el .if n .ul 1
  1160. .if t .if !\\$1 \&\f\\n(PQ\\$3\fI\\$1\|\f\\n(PQ\\$2
  1161. .if n .if \\n(.$=1 \&\\$1
  1162. .if n .if \\n(.$>2 \&\\$3\c
  1163. .if n .if \\n(.$>1 \&\\$1\c
  1164. .if n .if \\n(.$>1 \&\\$2
  1165. ..
  1166. .    \" B - bold font
  1167. .de B
  1168. .nr PQ \\n(.f
  1169. .if t .ft 3
  1170. .ie \\$1 .if n .ul 999
  1171. .el .if n .ul 1
  1172. .if t .if !\\$1 \&\f\\n(PQ\\$3\fB\\$1\f\\n(PQ\\$2
  1173. .if n .if \\n(.$=1 \&\\$1
  1174. .if n .if \\n(.$>2 \&\\$3\c
  1175. .if n .if \\n(.$>1 \&\\$1\c
  1176. .if n .if \\n(.$>1 \&\\$2
  1177. ..
  1178. .    \" R - Roman font
  1179. .de R
  1180. .if n .ul 0
  1181. .ft 1
  1182. ..
  1183. .    \" L - listing font
  1184. .de L
  1185. .if n .ul
  1186. \%\&\\$3\fL\\$1\f1\&\\$2
  1187. ..
  1188. .    \" LB - bold listing font
  1189. .de LB
  1190. .if n .ul
  1191. \%\&\\$3\f(LB\\$1\f1\&\\$2
  1192. ..
  1193. .    \" UL - underline in troff
  1194. .de UL
  1195. .if t \\$1\l'|0\(ul'\\$2
  1196. .if n .I \\$1 \\$2
  1197. ..
  1198. .    \" SM - make text small
  1199. .de SM
  1200. .ps -2
  1201. .if !"\\$1"" \\$3\&\\$1\\$2
  1202. .if !"\\$1"" .ps +2
  1203. ..
  1204. .    \" LG - larger
  1205. .de LG
  1206. .ps +2
  1207. .if !"\\$1"" \\$3\&\\$1\\$2
  1208. .if !"\\$1"" .ps -2
  1209. ..
  1210. .    \" NL - normal
  1211. .de NL
  1212. .ps \\n(PS
  1213. ..
  1214. .    \" combinations of Roman, italic, bold
  1215. .de RI
  1216. \&\fR\\$1\fI\\$2\^\fR\\$3\fI\\$4\^\fR\\$5\fI\\$6\^\fR\\$7\fI\\$8\^\fR\\$9
  1217. ..
  1218. .de RB
  1219. \&\fR\\$1\fB\\$2\fR\\$3\fB\\$4\fR\\$5\fB\\$6\fR\\$7\fB\\$8\fR\\$9
  1220. ..
  1221. .de IR
  1222. \&\fI\\$1\^\fR\\$2\fI\\$3\^\fR\\$4\fI\\$5\^\fR\\$6\fI\\$7\^\fR\\$8\fI\\$9\^\fR
  1223. ..
  1224. .de IB
  1225. \&\fI\\$1\^\fB\\$2\fI\\$3\^\fB\\$4\fI\\$5\^\fB\\$6\fI\\$7\^\fB\\$8\fI\\$9\^\fR
  1226. ..
  1227. .de BR
  1228. \&\fB\\$1\fR\\$2\fB\\$3\fR\\$4\fB\\$5\fR\\$6\fB\\$7\fR\\$8\fB\\$9\fR
  1229. ..
  1230. .de BI
  1231. \&\fB\\$1\fI\\$2\^\fB\\$3\fI\\$4\^\fB\\$5\fI\\$6\^\fB\\$7\fI\\$8\^\fB\\$9\fR
  1232. ..
  1233. .    \" \** - numbered footnote
  1234. .ds * \\*([.\\n+*\\*(.]
  1235. .    \" FJ - replaces FS after cover
  1236. .de FJ
  1237. 'ce 0
  1238. .di
  1239. .ev 1
  1240. .ll \\n(FLu
  1241. .da FF
  1242. .br
  1243. .if \\n(IF .tm Nested footnote
  1244. .nr IF 1
  1245. .if !\\n+(XX-1 .FA
  1246. .if !\\n(MF .if !\\n(.$ .if \\n* .FP \\n*
  1247. .if !\\n(MF .if \\n(.$ .FP \\$1 no
  1248. ..
  1249. .    \" FK - replaces FE after cover
  1250. .de FK
  1251. .br
  1252. .in 0
  1253. .nr IF 0
  1254. .di
  1255. .ev
  1256. .if !\\n(XX-1 .nr dn +\\n(.v
  1257. .nr YY -\\n(dn
  1258. .if !\\n(NX .nr WF 1
  1259. .if \\n(dl>\\n(CW .nr WF 1
  1260. .if (\\n(nl+\\n(.v)<=(\\n(.p+\\n(YY) .ch FO \\n(YYu
  1261. .if (\\n(nl+\\n(.v)>(\\n(.p+\\n(YY) \{\
  1262. .    if \\n(nl>(\\n(HM+1.5v) .ch FO \\n(nlu+\\n(.vu
  1263. .    if \\n(nl+\\n(FM+1v>\\n(.p .ch FX \\n(.pu-\\n(FMu+2v
  1264. .    if \\n(nl<=(\\n(HM+1.5v) .ch FO \\n(HMu+(4u*\\n(.vu)
  1265. .\}
  1266. ..
  1267. .    \" FS - begin footnote on cover
  1268. .de FS
  1269. .ev 1
  1270. .br
  1271. .ll \\n(FLu
  1272. .da FG
  1273. .if !\\n(.$ .if \\n* .FP \\n*
  1274. .if \\n(.$ .FP \\$1 no
  1275. ..
  1276. .    \" FE - end footnote on cover
  1277. .de FE
  1278. .br
  1279. .di
  1280. .nr FP \\n(dn
  1281. .if !\\n(1T .nr KG 1
  1282. .ev
  1283. ..
  1284. .    \" FA - print line before footnotes
  1285. .de FA
  1286. .in 0
  1287. .if n _________________________
  1288. .if t \l'1i'
  1289. .br
  1290. ..
  1291. .    \" FP - footnote paragraph
  1292. .de FP
  1293. .sp \\n(PDu/2u
  1294. .if \\n(FF<2 .ti \\n(FIu
  1295. .if \\n(FF=3 \{\
  1296. .    in \\n(FIu*2u
  1297. .    ta \\n(FIu*2u
  1298. .    ti 0
  1299. .\}
  1300. .if !\\n(FF \{\
  1301. .    ie "\\$2"no" \\$1\0\c
  1302. .    el \\*([.\\$1\\*(.]\0\c
  1303. .\}
  1304. .if \\n(FF .if \\n(FF<3 \{\
  1305. .    ie "\\$2"no" \\$1\0\c
  1306. .    el \\$1.\0\c
  1307. .\}
  1308. .if \\n(FF=3 \{\
  1309. .    ie "\\$2"no" \\$1\t\c
  1310. .    el \\$1.\t\c
  1311. .\}
  1312. ..
  1313. .    \" FV - get leftover footnote from previous page
  1314. .de FV
  1315. .FS
  1316. .nf
  1317. .ls 1
  1318. .FY
  1319. .ls
  1320. .fi
  1321. .FE
  1322. ..
  1323. .    \" FX - divert leftover footnote for next page
  1324. .de FX
  1325. .if \\n(XX .di FY
  1326. .if \\n(XX .ns
  1327. ..
  1328. .    \" XF - actually print footnote
  1329. .de XF
  1330. .if \\n(nlu+1v>(\\n(.pu-\\n(FMu) .ch FX \\n(nlu+1.9v
  1331. .ev 1
  1332. .nf
  1333. .ls 1
  1334. .FF
  1335. .rm FF
  1336. .nr XX 0 1
  1337. .br
  1338. .ls
  1339. .di
  1340. .fi
  1341. .ev
  1342. ..
  1343. .    \" TS - source file for tbl
  1344. .de TS
  1345. .rn TS @T
  1346. .so \*(//ms.tbl
  1347. .TS \\$1 \\$2
  1348. .rm @T
  1349. ..
  1350. .    \" EQ - source file for eqn
  1351. .de EQ
  1352. .rn EQ @T
  1353. .so \*(//ms.eqn
  1354. .EQ \\$1 \\$2
  1355. .rm @T
  1356. ..
  1357. .       \" ]- - source file for refer
  1358. .de ]-
  1359. .rn ]- @T
  1360. .so \*(//ms.ref
  1361. .]-
  1362. .rm @T
  1363. ..
  1364. .       \" [< - for refer -s or -e
  1365. .de ]<
  1366. .rn ]< @T
  1367. .so \*(//ms.ref
  1368. .]<
  1369. .rm @T
  1370. ..
  1371. .if \n(.V>19 .ds [. \f1[
  1372. .if \n(.V>19 .ds .] ]\fP
  1373. .if \n(.V<20 .ds [. \f1\s-2\v'-.4m'
  1374. .if \n(.V<20 .ds .] \v'.4m'\s+2\fP
  1375. .ds <. .
  1376. .ds <, ,
  1377. .if n .ds Q \&"
  1378. .if n .ds U \&"
  1379. .if n .ds - \%--
  1380. .if t .ds Q \(lq
  1381. .if t .ds U \(rq
  1382. .if t .ds - \(em
  1383. .ds ' \h'\w'e'u/5'\z\'\h'-\w'e'u/5'
  1384. .ds ` \h'\w'e'u/5'\z\`\h'-\w'e'u/5'
  1385. .ds ^ \h'\w'o'u/10'\z^\h'-\w'e'u/10'
  1386. .ds , \h'\w'c'u/5'\z,\h'-\w'e'u/5'
  1387. .ds : \h'\w'u'u/5'\z"\h'-\w'e'u/5'
  1388. .ds ~ \h'\w'n'u/10'\z~\h'-\w'e'u/10'
  1389. .ds C \h'\w'c'u/5'\v'-.6m'\s-4\zv\s+4\v'.6m'\h'-\w'c'u/5'
  1390. .    \" AM - better accent marks
  1391. .de AM
  1392. .so \*(//ms.acc
  1393. ..
  1394. .       \" TM - thesis mode
  1395. .de TM
  1396. .so \*(//ms.ths
  1397. ..
  1398. .    \" BX - word in a box
  1399. .de BX
  1400. .if t \(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
  1401. .if n \(br\\kA\|\\$1\|\\kB\(br\v'-1v'\h'|\\nBu'\l'|\\nAu'\v'1v'\l'|\\nAu'
  1402. ..
  1403. .    \" LZ - Draw a goody with a lozenge around it
  1404. .de LZ
  1405. .nr WW \w\|\s-1\\$1\s+1\|u
  1406. .if !\\$3 \&\\$3\^\c
  1407. \%\h'.5n'\|\s-1\\$1\s+1\|\h'|0+.5n'\v'0.1v'\c
  1408. \D'l \\n(WWu 0'\c
  1409. \D'a 0 -15u 15u 0'\c
  1410. \D'l 0 -(\\n(.vu-.6v)'\c
  1411. \D'a -15u 0 0 -15u'\c
  1412. \D'l -\\n(WWu 0'\c
  1413. \D'a 0 15u -15u 0'\c
  1414. \D'l 0 \\n(.vu-.6v)'\c
  1415. \D'a 15u 0 0 15u'\v'-0.1v'\c
  1416. .if \\$2 \h'\\n(WWu+.5n'
  1417. .if !\\$2 \h'\\n(WWu'\ \\$2
  1418. .rr WW
  1419. ..
  1420. .    \" B1 - source file for boxed text
  1421. .de B1
  1422. .rn B1 @T
  1423. .so \*(//ms.tbl
  1424. .B1 \\$1
  1425. .rm @T
  1426. ..
  1427. .       \" XS - table of contents
  1428. .de XS
  1429. .rn XS @T
  1430. .so \*(//ms.toc
  1431. .XS \\$1 \\$2
  1432. .rm @T           
  1433. ..  
  1434. .    \" IX - Make an Index Entry
  1435. .de IX
  1436. .if \\nI .if \\n(dT .if \\n(IK \!.tm .IE\t\\$1\t\\$2\t\\$3\t\\n(H1-\\\\n(PN\t
  1437. .if \\nI .if \\n(dT .if !\\n(IK .tm .IE\t\\$1\t\\$2\t\\$3\t\\n(H1-\\n(PN\t
  1438. .if \\nI .if !\\n(dT .if \\n(IK \!.tm .IE\t\\$1\t\\$2\t\\$3\t\\\\n(PN\t
  1439. .if \\nI .if !\\n(dT .if !\\n(IK .tm .IE\t\\$1\t\\$2\t\\$3\t\\n(PN\t
  1440. .if !\\nI .if \\n(dT .if \\n(IK \!.tm .IE\tENTRY\t\\$1\t\\$2\t\\$3\t\\$4\t\\$5\t\\$6\t\\n(H1-\\\\n(PN
  1441. .if !\\nI .if \\n(dT .if !\\n(IK .tm .IE\tENTRY\t\\$1\t\\$2\t\\$3\t\\$4\t\\$5\t\\$6\t\\n(H1-\\n(PN
  1442. .if !\\nI .if !\\n(dT .if \\n(IK \!.tm .IE\tENTRY\t\\$1\t\\$2\t\\$3\t\\$4\t\\$5\t\\$6\t\\\\n(PN
  1443. .if !\\nI .if !\\n(dT .if !\\n(IK .tm .IE\tENTRY\t\\$1\t\\$2\t\\$3\t\\$4\t\\$5\t\\$6\t\\n(PN
  1444. ..
  1445. .    \" IH - Make an Index Header
  1446. .de IH
  1447. .if \\n(dT .if \\n(IK \!.tm .IE\tHEADER\t\\$1\t\\$2\t\\$3\t\\$4\t\\n(H1-\\\\n(PN
  1448. .if \\n(dT .if !\\n(IK .tm .IE\tHEADER\t\\$1\t\\$2\t\\$3\t\\$4\t\\n(H1-\\n(PN
  1449. .if !\\n(dT .if \\n(IK \!.tm .IE\tHEADER\t\\$1\t\\$2\t\\$3\t\\$4\t\\\\n(PN
  1450. .if !\\n(dT .if !\\n(IK .tm .IE\tHEADER\t\\$1\t\\$2\t\\$3\t\\$4\t\\n(PN
  1451. ..
  1452. .    \" UX - UNIX macro
  1453. .de UX
  1454. .ie \\n(UX \s-1UNIX\s0\\$1
  1455. .el \{\
  1456. \s-1UNIX\s0\\$1\(dg
  1457. .FS
  1458. \(dg \s-1UNIX\s0 is a trademark of AT&T Bell Laboratories.
  1459. .FE
  1460. .nr UX 1
  1461. .\}
  1462. ..
  1463. .\"
  1464. .\" Here is the SUN normal form macro,
  1465. .\" which tries to align for the cross grid
  1466. .\"
  1467. .de Sn
  1468. .ta 2i 3i 4i 5i 6i
  1469. .nr PS 10
  1470. .nr VS 12
  1471. .nr LL 5.8i
  1472. .nr PO +.75i
  1473. .ps 10
  1474. .vs 12
  1475. .ll 5.8i
  1476. .po +.75i
  1477. .tl '''
  1478. ..
  1479. .\"
  1480. .\" Do a small type display
  1481. .\"
  1482. .de Ds
  1483. .DS
  1484. .ps 10
  1485. .vs 12
  1486. ..
  1487. .de De
  1488. .DE
  1489. ..
  1490. .\"
  1491. .\" These are my memo macros, invoked by using
  1492. .\" .MM and then specifying the appropriate pieces.
  1493. .\" Relies on the -ms or -msun macros.
  1494. .\"
  1495. .\" .MM -- initialize memo
  1496. .\" .TO -- Send it to
  1497. .\" .FR -- From
  1498. .\" .DA -- String for date
  1499. .\" .SU -- String for subject
  1500. .\" .CC -- Carbon Copies
  1501. .\" .DI -- Distribution List
  1502. .\" .EC -- End copy list 
  1503. .\" 
  1504. .de MM
  1505. .vs 10p
  1506. .sp 8v
  1507. .ll 6.0i
  1508. .ps 26
  1509. .br
  1510. .in +5i
  1511. .ft 3
  1512. s\|\|u\|\|n
  1513. .br
  1514. .ps 12
  1515. .ft 1
  1516. microsystems
  1517. .in -5i
  1518. .br
  1519. .sp
  1520. .ps 12
  1521. ..
  1522. .de TO
  1523. .mk
  1524. .ps 9
  1525. To:
  1526. .ps 11
  1527. .if t .ti +\w'Subject: 'u
  1528. .rt
  1529. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1530. ..
  1531. .de DA
  1532. .if t .in +6i
  1533. .if t .in -\w'\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7'u
  1534. .if t .in -\w'Date: 'u
  1535. .if t .rt
  1536. .if n .sp 
  1537. Date:
  1538. .if t .br
  1539. .if t .rt
  1540. .if t .ti +\w'Date: 'u
  1541. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1542. .br
  1543. .if t .in +w'\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7'u
  1544. .if t .in +w'Date: 'u
  1545. .if t .in -6i
  1546. .sp
  1547. ..
  1548. .de FR
  1549. .mk
  1550. .ps 9
  1551. From:
  1552. .if t .rt
  1553. .ps 11
  1554. .if t .ti +\w'Subject: 'u
  1555. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1556. .if t .rt
  1557. .sp
  1558. ..
  1559. .de SU
  1560. .mk
  1561. .ps 9
  1562. Subject:
  1563. .if t .rt
  1564. .ps 11
  1565. .if t .ti +\w'Subject: 'u
  1566. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1567. .if t .rt
  1568. .sp
  1569. ..
  1570. .de CC
  1571. .mk
  1572. .ps 9
  1573. CC:
  1574. .ps 11
  1575. .in +\w'Subject: 'u
  1576. .if t .rt
  1577. .nf
  1578. ..
  1579. .de DI
  1580. .ps 9
  1581. Distribution
  1582. .br
  1583. .mk
  1584. List:
  1585. .ps 11
  1586. .in +\w'Subject: 'u
  1587. .rt
  1588. .nf
  1589. ..
  1590. .de EC
  1591. .sp
  1592. .in -\w'Subject: 'u
  1593. .fi
  1594. .. 
  1595. .de pp
  1596. .sp
  1597. ..
  1598. .\"
  1599. .\" These are macros for making foils.
  1600. .\" .Fp invokes the foil package initialization stuff,
  1601. .\" .Fl gets you a foil, and 
  1602. .\" .It gets an item
  1603. .\" .Tl gets a title for the foil
  1604. .\" .Ip gets a second paragraph in the bullet
  1605. .\" .Tp gets a text paragraph, not printed on foils
  1606. .\" .Te ends a text paragraph
  1607. .\"
  1608. .de Fp
  1609. .EF 'Copyright 1984 Sun Micro''Educational Material'
  1610. .OF 'Copyright 1984 Sun Micro''Educational Material'
  1611. ..
  1612. .de Fl
  1613. .bp 1
  1614. .LP
  1615. .sp 2
  1616. .ll 6.5i
  1617. .nr PS 18
  1618. .nr VS 21
  1619. .ps 18
  1620. .vs 21
  1621. ..
  1622. .de Tl
  1623. .ps \\n(PS+10
  1624. .vs \\n(VS+11
  1625. .ce 10
  1626. .ft 3
  1627. \\$1 \\$2 \\$3 
  1628. \\$4 \\$5 \\$6 \\$7
  1629. .ft 1
  1630. .ce 0
  1631. .br
  1632. .ps \\n(PS
  1633. .vs \\n(VS
  1634. ..
  1635. .de Sl
  1636. .ps \\n(PS+4
  1637. .vs \\n(VS+5
  1638. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1639. .br
  1640. .ps \\n(PS
  1641. .vs \\n(VS
  1642. ..
  1643. .de St
  1644. .rs
  1645. .ps \\n(PS+4
  1646. .vs \\n(VS+5
  1647. \|\|
  1648. .sp -2
  1649. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1650. .sp 2
  1651. .br
  1652. .ps \\n(PS
  1653. .vs \\n(VS
  1654. ..
  1655. .de It
  1656. .sp 1
  1657. .IP \(bu
  1658. .ps \\n(PS+6 
  1659. .vs \\n(VS+7
  1660. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  1661. .sp 1
  1662. .ps \\n(PS
  1663. .vs \\n(VS
  1664. ..
  1665. .de Ip
  1666. .sp 1
  1667. ..
  1668. .de Tp
  1669. .ig Te
  1670. ..
  1671. .co
  1672. .if \n(mo-0 .ds MO January
  1673. .if \n(mo-1 .ds MO February
  1674. .if \n(mo-2 .ds MO March
  1675. .if \n(mo-3 .ds MO April
  1676. .if \n(mo-4 .ds MO May
  1677. .if \n(mo-5 .ds MO June
  1678. .if \n(mo-6 .ds MO July
  1679. .if \n(mo-7 .ds MO August
  1680. .if \n(mo-8 .ds MO September
  1681. .if \n(mo-9 .ds MO October
  1682. .if \n(mo-10 .ds MO November
  1683. .if \n(mo-11 .ds MO December
  1684. .ds DY \*(MO \n(dy, 19\n(yr
  1685. .ie \n* .nr * \n*-1 1
  1686. .el .nr * 0 1
  1687. .IZ
  1688. .em EM
  1689. .rm IZ RA //
  1690.