MACROS.9
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:24k
源码类别:

操作系统开发

开发平台:

C/C++

  1. ." Macro package for producing books (based on -ms)
  2. .nr PS 12
  3. .nr PZ 12
  4. ." RT -  reset everything to normal state
  5. .de RT
  6. .if !\n(1T .BG
  7. .ce 0
  8. .if !\n(IK .if !\n(IF .if !\n(IX .if !\n(BE .di
  9. .ul 0
  10. .if \n(QP {
  11. . ll +\n(QIu
  12. . in -\n(QIu
  13. . nr QP -1}
  14. .if \n(NX<=1 .if \n(AJ=0 .ll \n(LLu
  15. .if \n(IF=0 {
  16. . ps \n(PS
  17. . if \n(VS>=41 .vs \n(VSu
  18. . if \n(VS<=40 .vs \n(VSp}
  19. .if \n(IP .in -\n(I\n(IRu
  20. .if \n(IP=0 .nr I0 \n(PIu
  21. .if \n(IP .nr IP -1
  22. .ft 1
  23. .bd 1
  24. .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n
  25. .fi
  26. ..
  27. . "IZ - initialization
  28. .de IZ
  29. .nr TN 0
  30. .em EM
  31. .if n .ds [. [
  32. .if t .ds [. s-2v'-.4m'f1
  33. .if n .ds .] ]
  34. .if t .ds .] v'.4m's+2fP
  35. .if n .ds [o ""
  36. .if n .ds [c ""
  37. .if t .ds [o ``
  38. .if t .ds [c ''
  39. .ch FO \n(YYu
  40. .if \n(FM=0 .nr FM 1i
  41. .nr YY -\n(FMu
  42. .nr XX 0 1
  43. .nr IP 0
  44. .nr PI 5n
  45. .nr QI 5n
  46. .nr I0 \n(PIu
  47. .nr PZ 12
  48. .nr VZ 13.8p
  49. .nr PS n(PZ
  50. .nr VS \n(VZu
  51. .if !\n(PD .if n .nr PD 1v
  52. .if !\n(PD .if t .nr PD 0.3v
  53. .nr ML 3v
  54. .ps \n(PS
  55. .if \n(VS>=41 .vs \n(VSu
  56. .if \n(VS<=40 .vs \n(VSp
  57. .nr IR 0
  58. .nr TB 0
  59. .nr SJ \n(.j
  60. .nr LL 6i
  61. .ll \n(LLu
  62. .nr LT \n(.l
  63. .lt \n(LTu
  64. .ev 1
  65. .nr FL \n(LLu*11u/12u
  66. .ll \n(FLu
  67. .ps 10
  68. .vs 12p
  69. .ev
  70. .if \*(CH .ds CH "(hy \\n(PN (hy
  71. .wh 0 NP
  72. .wh -\n(FMu FO
  73. .ch FO 16i
  74. .wh -\n(FMu FX
  75. .ch FO -\n(FMu
  76. .if t .wh -\n(FMu/2u BT
  77. .if n .wh -\n(FMu/2u-1v BT
  78. ..
  79. . "KS keep - for keep release features. As in IFM
  80. .de KS
  81. .nr KN \n(.u
  82. .if \n(IK=0 .if \n(IF=0 .KQ
  83. .nr IK +1
  84. ..
  85. . "KQ - real keep processor
  86. .de KQ
  87. .br
  88. .nr KI \n(.i
  89. .ev 2
  90. .br
  91. .in \n(KIu
  92. .ps \n(PS
  93. .if \n(VS>40 .vs \n(VSu
  94. .if \n(VS<=39 .vs \n(VSp
  95. .ll \n(LLu
  96. .lt \n(LTu
  97. .if \n(NX>1 .ll \n(CWu
  98. .if \n(NX>1 .lt \n(CWu
  99. .di KK
  100. .nr TB 0
  101. .nr KV 0
  102. ..
  103. . "KF - floating keep
  104. .de KF
  105. .nr KN \n(.u
  106. .if !\n(IK .FQ
  107. .nr IK +1
  108. ..
  109. . "FQ real floating keep processor
  110. .de FQ
  111. .nr KI \n(.i
  112. .ev 2
  113. .br
  114. .in \n(KIu
  115. .ps \n(PS
  116. .if \n(VS>40 .vs \n(VSu
  117. .if \n(VS<=39 .vs \n(VSp
  118. .ll \n(LLu
  119. .lt \n(LTu
  120. .if \n(NX>1 .ll \n(CWu
  121. .if \n(NX>1 .lt \n(CWu
  122. .di KK
  123. .nr TB 1
  124. .nr KV 0
  125. ..
  126. . "KP - keep full page
  127. .de KP
  128. .nr KV 1
  129. ..
  130. . "KE release - everything between keep and release is together
  131. .de KE
  132. .if \n(IK .if !\n(IK-1 .if \n(IF=0 .RQ
  133. .if \n(IK .nr IK -1
  134. ..
  135. . "RQ real release
  136. .de RQ
  137. .br
  138. .di
  139. .nr NF 0
  140. .if \n(dn-\n(.t .nr NF 1
  141. .if \n(TC .nr NF 1
  142. .if \n(KV .nr NF 1 " if KV on full page needed, doesn't fit
  143. .if \n(NF .if !\n(TB .sp 11i
  144. .if !\n(NF .if \n(TB .nr TB 0
  145. .nf
  146. .rs
  147. .nr TC 5
  148. .in 0
  149. .ls 1
  150. .if \n(TB=0 .ev
  151. .if \n(TB=0 .br
  152. .if \n(TB=0 .ev 2
  153. .if \n(TB=0 .KK
  154. .ls
  155. .ce 0
  156. .if \n(TB=0 .rm KK
  157. .if \n(TB .da KJ
  158. .if \n(TB !.KD \n(dn \n(KV
  159. .if \n(TB .KK
  160. .if \n(TB .di
  161. .nr TC \n(TB
  162. .if \n(KN .fi
  163. .in
  164. .ev
  165. ..
  166. .de EQ  "equation, breakout and display
  167. .nr EF \n(.u
  168. .rm EE
  169. .nr LE 1 " 1 is center
  170. .ds EL \$1
  171. .if "\$1"L" .ds EL \$2
  172. .if "\$1"L" .nr LE 0
  173. .if "\$1"C" .ds EL \$2
  174. .if "\$1"I" .nr LE 0
  175. .if "\$1"I" .ds EE \h'|10n'
  176. .if "\$1"I" .if !"\$3"" .ds EE \h'\$3'
  177. .if "\$1"I" .ds EL \$2
  178. .if \n(YE>0 .nf
  179. .di EZ
  180. ..
  181. .de EN  " end of a displayed equation
  182. .br
  183. .di
  184. .rm EZ
  185. .nr ZN \n(dn
  186. .if \n(ZN>0 .if \n(YE=0 .LP
  187. .if \n(ZN=0 .if !"\*(EL"" .nr ZN 1
  188. .if "\n(.z"" .if \n(ZN>0 .if !\n(nl=\n(PE .if t .sp .5
  189. .if "\n(.z"" .if \n(ZN>0 .if !\n(nl=\n(PE .if n .sp 1
  190. .if !"\n(.z"" .if \n(ZN>0 .if !\n(.d=\n(PE .if t .sp .5
  191. .if !"\n(.z"" .if \n(ZN>0 .if !\n(.d=\n(PE .if n .sp 1
  192. 'pc
  193. .if \n(BD>0 .nr LE 0 " can't mean centering in this case.
  194. .if \n(MK>0 .if \n(LE=1 .ds EE \h'|10n'
  195. .if \n(MK>0 .nr LE 0 " don't center if mark/lineup
  196. 'lt \n(.lu
  197. .if \n(EP=0 .if \n(ZN>0 .if \n(LE>0 .tl (ts(ts\*(10(ts\*(EL(ts
  198. .if \n(EP=0 .if \n(ZN>0 .if \n(LE=0 .if \n(BD=0 .tl (ts\*(EE\*(10(ts(ts\*(EL(ts
  199. .if \n(EP=0 .if \n(ZN>0 .if \n(LE=0 .if \n(BD>0 .if \n(BD<\w(ts\*(10(ts .nr BD \w(ts\*(10(ts
  200. .if \n(EP=0 .if \n(ZN>0 .if \n(LE=0 .if \n(BD>0 !\*(10\t\*(EL
  201. .if \n(EP>0 .if \n(ZN>0 .if \n(LE>0 .tl (ts\*(EL(ts\*(10(ts(ts
  202. .if \n(EP>0 .if \n(ZN>0 .if \n(LE=0 .if \n(BD=0 .tl (ts\*(EL\*(EE\*(10(ts(ts(ts
  203. .if \n(EP>0 .if \n(ZN>0 .if \n(LE=0 .if \n(BD>0 .if \n(BD<\w(ts\*(10(ts .nr BD \w(ts\*(10(ts
  204. .if \n(EP>0 .if \n(ZN>0 .if \n(LE=0 .if \n(BD>0 !\h'-\\n(.iu'\*(EL\h'|0'\*(10
  205. .".di EZ " GCOS patch
  206. ."\*(10 " GCOS patch
  207. .".br " GCOS patch
  208. .".di " GCOS patch
  209. .".rm EZ " GCOS patch
  210. 'lt \n(LLu
  211. 'pc %
  212. .if \n(YE>0 .if \n(EF>0 .fi
  213. .rm EL 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  214. .rr 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  215. .if \n(ZN>0 .if t .sp .5
  216. .if \n(ZN>0 .if n .sp
  217. .if "\n(.z"" .nr PE \n(nl
  218. .if !"\n(.z"" .nr PE \n(.d
  219. .nr z 72-((\n(nl-\n(HM)%72)
  220. .if \n(nl<\n(HM .nr z 0
  221. .if \nz>0 .if \nz<60 .sp \nzu  "force post equation text to whole line
  222. .if \nz>59 .if \nz<72 .sp \nzu-72u   "move backwards a fraction of a pica
  223. ..
  224. .de ME
  225. .nr SJ \n(.j
  226. .if \n(LL>0 .nr LT \n(LL
  227. .nr YE 1
  228. .if \n(PO=0 .nr PO \n(.o
  229. .if \n(mo-0 .ds MO January
  230. .if \n(mo-1 .ds MO February
  231. .if \n(mo-2 .ds MO March
  232. .if \n(mo-3 .ds MO April
  233. .if \n(mo-4 .ds MO May
  234. .if \n(mo-5 .ds MO June
  235. .if \n(mo-6 .ds MO July
  236. .if \n(mo-7 .ds MO August
  237. .if \n(mo-8 .ds MO September
  238. .if \n(mo-9 .ds MO October
  239. .if \n(mo-10 .ds MO November
  240. .if \n(mo-11 .ds MO December
  241. .if \n(dw-0 .ds DW Sunday
  242. .if \n(dw-1 .ds DW Monday
  243. .if \n(dw-2 .ds DW Tuesday
  244. .if \n(dw-3 .ds DW Wednesday
  245. .if \n(dw-4 .ds DW Thursday
  246. .if \n(dw-5 .ds DW Friday
  247. .if \n(dw-6 .ds DW Saturday
  248. .if "\*(DY"" .ds DY \*(MO \n(dy, 19\n(yr
  249. .if "\*(CF"" .if n .ds CF "\*(DY
  250. ..
  251. . "EM end up macro - process left over keep-release
  252. .de EM
  253. .br
  254. .if \n(TB=0 .if t .wh -1p CM
  255. .if \n(TB &c
  256. .if \n(TB 'bp
  257. .if \n(TB .NP
  258. .if \n(TB .ch CM 160
  259. ..
  260. . "NP new page
  261. .de NP
  262. .if \n(FM+\n(HM>=\n(.p .tm Margins bigger than page length.
  263. .if \n(FM+\n(HM>=\n(.p .ab
  264. .if \n(FM+\n(HM>=\n(.p .ex
  265. .nr PX \n(.s
  266. .nr PF \n(.f
  267. .nr PV \n(.v
  268. .if t .CM
  269. .if \n(HM=0 .nr HM 1i
  270. 'sp \n(HMu/2u
  271. .lt \n(LTu
  272. .ps \n(PS
  273. .vs \n(PS+2
  274. .ft 1
  275. .if \n(PO>0 .po \n(POu
  276. .PT
  277. .ps \n(PX
  278. .vs \n(PVu
  279. .ft \n(PF
  280. 'sp |\n(HMu
  281. .nr XX 0 1
  282. .nr YY 0-\n(FMu
  283. .ch FO 16i
  284. .ch FX 17i
  285. .ch FO \n(.pu-\n(FMu
  286. .ch FX \n(.pu-\n(FMu
  287. .if \n(MF .FV
  288. .nr MF 0
  289. .mk
  290. .os
  291. .ev 1
  292. .if \n(TD=0 .if \n(TC<5  .XK
  293. .nr TC 0
  294. .ns
  295. .ev
  296. .nr TQ \n(.i
  297. .nr TK \n(.u
  298. .if \n(IT>0 {
  299. . in 0
  300. . nf
  301. . TT
  302. . in \n(TQu
  303. . if \n(TK .fi
  304. }
  305. .mk #T
  306. .if t .if \n(.o+\n(LL>7.75i .tm Offset (\n(.o) + line length (\n(LL) exceeds 7.75 inches, too wide
  307. ..
  308. .de XK
  309. .nr TD 1
  310. .nf
  311. .ls 1
  312. .in 0
  313. .rn KJ KL
  314. .KL
  315. .rm KL
  316. .if "\n(.z"KJ" .di
  317. .nr TB 0
  318. .if "\n(.z"KJ" .nr TB 1
  319. .br
  320. .in
  321. .ls
  322. .fi
  323. .if (\n(nl+1v)>(\n(.p-\n(FM) .if \n(NX>1 .RC
  324. .if (\n(nl+1v)>(\n(.p-\n(FM) .if \n(NX<1 .bp
  325. .nr TD 0
  326. ..
  327. .de KD
  328. .nr KM 0
  329. .if "\n(.z"" .if \$2>0 .if \n(nl>\n(HM .if (\n(nl+1v)<(\n(.p-\n(FM) .di KJ
  330. .if "\n(.z"" .if \n(nl>\n(HM .if \$2>0 .sp 15i " full page figure must have new page
  331. .if "\n(.z"" .if \n(nl>\n(HM .if \$2=0 .if (\n(nl+1v)>(\n(.p-\n(FM) .sp 15i
  332. .if "\n(.z"KJ" .nr KM 1 " KM is 1 if in a rediversion of keeps
  333. .if \n(KM>0 !.KD \$1 \$2
  334. .nr KR \n(.t
  335. .if \n(nl<=\n(HM .nr KR 32767
  336. .if \n(KM=0 .if \n(KR<\$1 .di KJ
  337. .if \n(KM=0 .if \n(KR<\$1 .nr KM 1
  338. .if \n(KM=0 .if \$2>0 .if (\n(nl+1v)>(\n(.p-\n(FM) .sp 15i
  339. .rs
  340. .if \n(KM=0 .if \$2>0 .sp \n(.tu-\$1u
  341. ..
  342. .de PT
  343. .lt \n(LLu
  344. .pc %
  345. .nr PN \n%
  346. ....if \n%-1 .tl '\*(LH'\*(CH'\*(RH'
  347. .lt \n(.lu
  348. ..
  349. . "FO - footer of page
  350. .de FO
  351. .rn FO FZ
  352. .if \n(K1>0 .tm This memo has a multi-page cover sheet.  You are
  353. .if \n(K1>0 .tm rebuked in the name of the Committee on Technical Memoranda.
  354. .if \n(IT>0 .nr T. 1
  355. .if \n(IT>0 .if \n(FC=0  .T# 1
  356. .if \n(IT>0 .br
  357. .nr FC +1
  358. .if \n(NX<2 .nr WF 0
  359. .nr dn 0
  360. .if \n(FC<=1 .if \n(XX .XF
  361. .rn FZ FO
  362. .nr MF 0
  363. .if \n(dn  .nr MF 1
  364. .if !\n(WF .nr YY 0-\n(FMu
  365. .if !\n(WF .ch FO \n(YYu
  366. .if !\n(dn .nr WF 0
  367. .if \n(FC<=1 .if \n(XX=0  .if \n(NX>1 .RC
  368. .nr x 7176u-\n(.d
  369. .if nL=1 .if \n(FC<=1 .if \n(XX=0  .if \n(NX<1 'tm Chap=\na  page=\n%   short=\nx    
  370. .if \n(FC<=1 .if \n(XX=0  .if \n(NX<1 'bp
  371. .nr FC -1
  372. .if \n(ML>0 .ne \n(MLu
  373. ..
  374. . "2C - begin double column
  375. .de 2C
  376. .MC " default MC is double column
  377. ..
  378. .de MC " multiple columns- arg is line length
  379. .nr L1 \n(LL*7/15
  380. .if \n(.$>0 .nr L1 \$1n
  381. .nr GW 0-1
  382. .if \n(.$>1 .nr GW \$1n
  383. .nr NQ \n(LL/\n(L1
  384. .if \n(NQ<1 .nr NQ 1
  385. .if \n(NQ>2 .if (\n(LL%\n(L1)=0 .nr NQ -1
  386. .if \n(1T=0 {
  387. . BG
  388. . if n .sp 4
  389. . if t .sp 2}
  390. .if \n(NX=0 .nr NX 1
  391. .if !\n(NX=\n(NQ {
  392. . RT
  393. . if \n(NX>1 .bp
  394. . mk
  395. . nr NC 1
  396. . po \n(POu}
  397. .if \n(NQ>1 .hy 14
  398. .nr NX \n(NQ
  399. .nr CW \n(L1
  400. .ll \n(CWu
  401. .nr FL \n(CWu*11u/12u
  402. .if \n(NX>1 .nr GW (\n(LL-(\n(NX*\n(CW))/(\n(NX-1)
  403. .nr RO \n(CW+\n(GW
  404. .ns
  405. ..
  406. .de RC
  407. .ie \n(NC>=\n(NX .C2
  408. .el .C1
  409. ..
  410. .de C1
  411. .rt
  412. .po +\n(ROu
  413. .nr NC +1
  414. .if \n(NC>\n(NX .nr NC 1
  415. .nr XX 0 1
  416. .if \n(MF .FV
  417. .ch FX \n(.pu-\n(FMu
  418. .ev 1
  419. .if \n(TB .XK
  420. .nr TC 0
  421. .ev
  422. .nr TQ \n(.i
  423. .if \n(IT>0 .in 0
  424. .if \n(IT>0 .TT
  425. .if \n(IT>0 .in \n(TQu
  426. .mk #T
  427. .ns
  428. ..
  429. .de C2
  430. .po \n(POu
  431. .nr NC +1
  432. .if \n(NC>\n(NX .nr NC 1
  433. 'bp
  434. ..
  435. . "1C - return to single column format
  436. .de 1C
  437. .MC \n(LLu
  438. .hy 14
  439. ..
  440. . ".de R3
  441. . ".pl 102
  442. . ".nr LT \n(.l
  443. . "..
  444. .de BT
  445. .nr PX \n(.s
  446. .nr PF \n(.f
  447. .ft 1
  448. .ps \n(PS
  449. 'lt \n(LTu
  450. .po \n(POu
  451. .if \n%>0 .tl '\*(LF'\*(CF'\*(RF'
  452. .ft \n(PF
  453. .ps \n(PX
  454. ..
  455. . "PP - paragraph
  456. .de PP
  457. .RT
  458. .if \n(1T .sp \n(PDu
  459. .ti +\n(PIu
  460. ..
  461. . "SH - (unnumbered) section heading
  462. .de SH
  463. .ti \n(.iu
  464. .RT
  465. .if \n(1T .sp 1
  466. .if !\n(1T .BG
  467. .RT
  468. .ne 4
  469. .ft 3
  470. ..
  471. . "NH - numbered heading
  472. .de NH
  473. .RT
  474. .if \n(1T .sp 1
  475. .if !\n(1T .BG
  476. .RT
  477. .ne 4
  478. .ft 3
  479. .nr NS \$1
  480. .if !\n(.$ .nr NS 1
  481. .if !\n(NS .nr NS 1
  482. .nr H\n(NS +1
  483. .if !\n(NS-4 .nr H5 0
  484. .if !\n(NS-3 .nr H4 0
  485. .if !\n(NS-2 .nr H3 0
  486. .if !\n(NS-1 .nr H2 0
  487. .if !\$1 .if \n(.$ .nr H1 1
  488. .ds SN \n(H1.
  489. .if \na=0 .ds SN \*(CN.
  490. .ti \n(.iu
  491. .if \n(NS-1 .as SN \n(H2.
  492. .if \n(NS-2 .as SN \n(H3.
  493. .if \n(NS-3 .as SN \n(H4.
  494. .if \n(NS-4 .as SN \n(H5.
  495. \*(SN
  496. ..
  497. . "BG - begin, execute at first PP
  498. .de BG
  499. .br
  500. .ME
  501. .rm ME
  502. .di
  503. .ce 0
  504. .nr KI 0
  505. .hy 14
  506. .nr 1T 1
  507. .S\n(ST
  508. .rm S0
  509. .rm S1
  510. .rm S2
  511. .rm S3
  512. .rm OD
  513. .rm OK
  514. .rm TX
  515. .rm AX
  516. .rm WT
  517. .rm CS
  518. .rm TM
  519. .rm IM
  520. .rm MF
  521. .rm MR
  522. .rm RP
  523. .rm I1
  524. .rm I2
  525. .rm I3
  526. .rm I4
  527. .rm I5
  528. .rm CB
  529. .rm E1
  530. .rm E2
  531. .de TL
  532. .ft 3
  533. .sp
  534. .if n .ul 100
  535. .ce 100
  536. .ps +2
  537. \..
  538. .de AU
  539. .ft 2
  540. .if n .ul 0
  541. .ce 100
  542. .sp
  543. .NL
  544. \..
  545. .de AI
  546. .ft 1
  547. .ce 100
  548. .if n .ul 0
  549. .if n .sp
  550. .if t .sp .5
  551. .NL
  552. \..
  553. .RA
  554. .rm RA
  555. .rn FJ FS
  556. .rn FK FE
  557. .nf
  558. .ev 1
  559. .ps \n(PS-2
  560. .vs \n(.s+2p
  561. .ev
  562. .if \n(KG=0 .nr FP 0 
  563. .if \n(GA>1 .if \n(KG=0 .nr GA 0 " next UNIX must be flagged.
  564. .nr KG 0 
  565. .if \n(FP>0 .FS
  566. .if \n(FP>0 .FG
  567. .if \n(FP>0 .FE
  568. .br
  569. .if \n(TV>0 .if n .sp 2
  570. .if \n(TV>0 .if t .sp 1
  571. .fi
  572. .ll \n(LLu
  573. ..
  574. .de RA "redefine abstract macros
  575. .de AB
  576. .br
  577. .if !\n(1T .BG
  578. .ce 1
  579. .sp 1
  580. .if \n(.$=0 ABSTRACT
  581. .if \n(.$>0 .if !"\$1"-" .if !"\$1"no"  \$1
  582. .if \n(.$=0 .sp
  583. .if \n(.$>0 .if !"\$1"-" .if !"\$1"no" .sp
  584. .sp 1
  585. .nr AJ 1
  586. .in +\n(.lu/12u
  587. .ll -\n(.lu/12u
  588. .RT
  589. \..
  590. .de AE
  591. .nr AJ 0
  592. .br
  593. .in 0
  594. .ll \n(LLu
  595. .if \n(VS>=41 .vs \n(VSu
  596. .if \n(VS<=40 .vs \n(VSp
  597. \..
  598. ..
  599. . "IP - indented paragraph
  600. .de IP
  601. .RT
  602. .if !\n(IP .nr IP +1
  603. .sp \n(PDu
  604. .if \n(.$-1 .nr I\n(IR \$2n
  605. .in +\n(I\n(IRu
  606. .nr TY \n(TZ-\n(.i
  607. .ta \n(I\n(IRu \n(TYuR
  608. .if \n(.$>0 {
  609. .ti -\n(I\n(IRu
  610. &\$1tc}
  611. ..
  612. . "LP - left aligned (block) paragraph
  613. .de LP
  614. .ti \n(.iu
  615. .RT
  616. .if \n(1T .sp \n(PDu
  617. ..
  618. .de QP
  619. .ti \n(.iu
  620. .RT
  621. .if \n(1T .sp \n(PDu
  622. .ne 1.1
  623. .nr QP 1
  624. .in +\n(QIu
  625. .ll -\n(QIu
  626. .ti \n(.iu
  627. ..
  628. . "IE - synonym for .LP
  629. .de IE
  630. .LP
  631. ..
  632. . "LB - label paragraph
  633. .de LB
  634. .in +\n(I\n(IRu
  635. .ta \n(I\n(IRu
  636. .if \n(.$ .ti -\n(I\n(IRu
  637. .if \n(.$ &\$1tc
  638. ..
  639. .de XP
  640. .RT
  641. .if !\n(IP .nr IP +1
  642. .sp \n(PDu
  643. .ne 3
  644. .if \n(.$=3 .nr I\n(IR \$3n
  645. .if \n(.$=4 .nr I\n(IR \$4n
  646. .nr J\n(IR \n(IRu/2u
  647. .if \n(.$=4 .nr J\n(IR \$3n
  648. .in +\n(I\n(IRu
  649. .ta \n(J\n(IRu \n(I\n(IRu
  650. .ti -\n(I\n(IRu
  651. \$1t\$2tc
  652. ..
  653. . "RS - prepare for double indenting
  654. .de RS
  655. .nr IS \n(IP
  656. .RT
  657. .nr IP \n(IS
  658. .if \n(IP>0 .in +\n(I\n(IRu
  659. .nr IR +1
  660. .nr I\n(IR \n(PIu
  661. .in +\n(I\n(IRu
  662. .nr TY \n(TZ-\n(.i
  663. .ta \n(TYuR
  664. ..
  665. . "RE - retreat to the left
  666. .de RE
  667. .nr IS \n(IP
  668. .RT
  669. .nr IP \n(IS
  670. .if \n(IR>0 .nr IR -1
  671. .if \n(IP<=0 .in -\n(I\n(IRu
  672. ..
  673. .de TC
  674. .nr TZ \n(.lu
  675. .if \n(.$ .nr TZ \$1n
  676. .ta \n(TZuR
  677. ..
  678. .de TD
  679. .LP
  680. .nr TZ 0
  681. ..
  682. . "CM - cut mark
  683. .de CM
  684. .po 0
  685. .lt 7.6i
  686. .ft 1
  687. .ps 10
  688. .vs 4p
  689. .po
  690. .vs
  691. .lt
  692. .ps
  693. .ft
  694. ..
  695. . "B - bold font
  696. .de B
  697. .nr PQ \n(.f
  698. .if t .ft 3
  699. .if "\$1"" .if n .ul 1000
  700. .if !"\$1"" .if n .ul 1
  701. .if t .if !"\$1"" &\$1\f\n(PQ\$2
  702. .if n .if \n(.$=1 &\$1
  703. .if n .if \n(.$>1 &\$1\c
  704. .if n .if \n(.$>1 \&\$2
  705. ..
  706. . "R - Roman font
  707. .de R
  708. .if n .ul 0
  709. .ft 1
  710. ..
  711. . "I - italic font
  712. .de I
  713. .nr PQ \n(.f
  714. .if t .ft 2
  715. .if "\$1"" .if n .ul 1000
  716. .if !"\$1"" .if n .ul 1
  717. .if t .if !"\$1"" &\$1\f\n(PQ\$2
  718. .if n .if \n(.$=1 &\$1
  719. .if n .if \n(.$>1 &\$1\c
  720. .if n .if \n(.$>1 \&\$2
  721. ..
  722. . "TA - tabs set in ens or chars
  723. .de TA
  724. .ta \$1n \$2n \$3n \$4n \$5n \$6n \$7n \$8n \$9n
  725. ..
  726. . "SM - make smaller size
  727. .de SM
  728. .if \n(.$>0 &\$3s-2\$1s0\$2
  729. .if \n(.$=0 .ps -2
  730. ..
  731. . "LG - make larger size
  732. .de LG
  733. .ps +2
  734. ..
  735. . "NL - return to normal size
  736. .de NL
  737. .ps \n(PS
  738. ..
  739. . "DA - force date; ND - no date or new date.
  740. .de DA
  741. .if \n(.$ .ds DY \$1 \$2 \$3 \$4
  742. .ds CF \*(DY
  743. ..
  744. .de ND
  745. .ME
  746. .rm ME
  747. .ds DY \$1 \$2 \$3 \$4
  748. .rm CF
  749. ..
  750. .de FN
  751. .FS
  752. ..
  753. . "FS - begin footnote
  754. .de FJ
  755. 'ce 0
  756. .di
  757. .ev1
  758. .ll \n(FLu
  759. .da FF
  760. .br
  761. .if \n(IF>0 .tm Footnote within footnote-illegal.
  762. .nr IF 1
  763. .if !\n+(XX-1 .FA
  764. ..
  765. . "FE - footnote end
  766. .de FK
  767. .br
  768. .in 0
  769. .nr IF 0
  770. .di
  771. .ev
  772. .if !\n(XX-1 .nr dn +\n(.v
  773. .nr YY -\n(dn
  774. .if \n(NX=0 .nr WF 1
  775. .if \n(dl>\n(CW .nr WF 1
  776. .if (\n(nl+\n(.v)<=(\n(.p+\n(YY) .ch FO \n(YYu
  777. .if (\n(nl+\n(.v)>(\n(.p+\n(YY) .if \n(nl>(\n(HM+1.5v) .ch FO \n(nlu+\n(.vu
  778. .if (\n(nl+\n(.v)>(\n(.p+\n(YY) .if \n(nl+\n(FM+1v>\n(.p .ch FX \n(.pu-\n(FMu+2v
  779. .if (\n(nl+\n(.v)>(\n(.p+\n(YY) .if \n(nl<=(\n(HM+1.5v) .ch FO \n(HMu+(4u*\n(.vu)
  780. ..
  781. ." First page footer.
  782. .de FS
  783. .ev1
  784. .br
  785. .ll \n(FLu
  786. .da FG
  787. ..
  788. .de FE
  789. .br
  790. .di
  791. .nr FP \n(dn
  792. .if \n(1T=0 .nr KG 1 "not in abstract repeat next page.
  793. .if "\n(.z"OD" .nr KG 0 " if in OK, don't repeat.
  794. .ev
  795. ..
  796. .de FA
  797. .if n __________________________
  798. .if t l'1i'
  799. .br
  800. ..
  801. .de FV
  802. .FS
  803. .nf
  804. .ls 1
  805. .FY
  806. .ls
  807. .fi
  808. .FE
  809. ..
  810. .de FX
  811. .if \n(XX>0 .di FY
  812. .if \n(XX>0 .ns
  813. ..
  814. .de XF
  815. .if \n(nlu+1v>(\n(.pu-\n(FMu) .ch FX \n(nlu+1.9v
  816. .ev1
  817. .nf
  818. .ls 1
  819. .FF
  820. .rm FF
  821. .nr XX 0 1
  822. .br
  823. .ls
  824. .di
  825. .fi
  826. .ev
  827. ..
  828. .de FL
  829. .ev1
  830. .nr FL \$1n
  831. .ll \$1
  832. .ev
  833. ..
  834. .de UL " underline argument, don't italicize
  835. .if t \$1l'|0(ul'\$2
  836. .if n .I \$1 \$2
  837. ..
  838. .de UX
  839. UNIX
  840. ..
  841. .de US
  842. the
  843. .UX
  844. operating system
  845. ..
  846. .de QS
  847. .br
  848. .LP
  849. .in +\n(QIu
  850. .ll -\n(QIu
  851. ..
  852. .de QE
  853. .br
  854. .ll +\n(QIu
  855. .in -\n(QIu
  856. .LP
  857. ..
  858. .de B1 " begin boxed stuff
  859. .br
  860. .di BB
  861. .nr BC 0
  862. .if "\$1"C" .nr BC 1
  863. .nr BE 1
  864. ..
  865. .de B2 " end boxed stuff
  866. .br
  867. .nr BI 1n
  868. .if \n(.$>0 .nr BI \$1n
  869. .di
  870. .nr BE 0
  871. .nr BW \n(dl
  872. .nr BH \n(dn
  873. .ne \n(BHu+\n(.Vu
  874. .nr BQ \n(.j
  875. .nf
  876. .ti 0
  877. .if \n(BC>0 .in +(\n(.lu-\n(BWu)/2u
  878. .in +\n(BIu
  879. .BB
  880. .in -\n(BIu
  881. .nr BW +2*\n(BI
  882. .sp -1
  883. l'\n(BWu(ul'L'-\n(BHu'l'|0(ul'h'|0'L'\n(BHu'
  884. .if \n(BC>0 .in -(\n(.lu-\n(BWu)/2u
  885. .if \n(BQ .fi
  886. .br
  887. ..
  888. .de AT
  889. .nf
  890. .sp
  891. .ne 2
  892. Attached:
  893. ..
  894. .de CT
  895. .nf
  896. .sp
  897. .ne 2
  898. .ie \n(.$ Copy to \$1:
  899. .el Copy to:
  900. ..
  901. .de BX
  902. .if t (br|\$1|(brl'|0(rn'l'|0(ul'
  903. .if n (br\kA|\$1|\kB(brv'-1v'h'|\nBu'l'|\nAu'v'1v'l'|\nAu'
  904. ..
  905. .IZ
  906. .rm IZ
  907. ." ------------------- VARIABLES ------------------------------
  908. ." na - Current chapter
  909. ." nb - Current section
  910. ." nc - Current subsection 
  911. ." nd - Set to 0 initially, 1 by PT,  2 by .PB  Used to control running head
  912. ." ne - Current equation number
  913. ." ng - Used to count items in numbered lists
  914. ." nh - Counts number of times CP has been invoked
  915. ." nj - Set to 1 iff footer page number needed
  916. ." nk - Last figure number used
  917. ." nL - 1 if depth printed for each page
  918. ." nl - 1 old Agfa length to be used
  919. ." np - Numbers end-of-chapter problems
  920. ." nq - 1 for double spaced text, smaller vert. margins
  921. ." ns - initial page number
  922. ." nt - Variable part of spacing inside .BI macro
  923. ." nv - Scratch register in lower case roman numerals
  924. ." nx - Scratch register
  925. ." ------------------- GENERAL PARAMETERS ---------------------
  926. .nr BO 43 " number of lines of text per page
  927. .nr PO 1.3i
  928. .po n(PO
  929. .if nq=1 .ls 2 " -rq1 invokes double spacing
  930. .nr LL 5.67i
  931. .if t {
  932. .nr PL 29.73c
  933. .nr PI 0.25i}
  934. .if n {
  935. .nr LL 80m
  936. .nr PL 11.0i
  937. .nr PI 3m}
  938. .pl n(PLu
  939. .nr HM (n(PLu-(n(BOu*n(VSu))/2u
  940. .nr FM n(PLu-(n(HMu+((n(BOu-1u)*n(VSu)+1u)
  941. .nr xx n(HMu%n(VZu
  942. .nr HM n(HMu-n(xxu
  943. .nr FM n(FMu+n(xxu
  944. .nr t 0 0
  945. ." ------------------- INITIALIZATION -------------------------
  946. .nr d 0 0
  947. .nr e 0 1
  948. .nr h 0 1
  949. .nr j 1 0
  950. .nr t 0 0
  951. .tr ~
  952. .ds CT "~ "initially empty
  953. .ND "suppress date on bottom of page
  954. .af v i "register v is in lower case roman
  955. .ch FO -n(FMu
  956. .ch BT -n(FMu+0.5P
  957. ." ------------------- ALIGN TEXT TO A WHOLE NUMBER OF PICAS ----
  958. .de AL
  959. 'nr xx \n(.du%\n(VZu
  960. 'nr xy \n(VZu-\n(xx
  961. 'if \n(xy=\n(VZu .nr xy 0
  962. 'sp \n(xyu
  963. ..
  964. ." ------------------- DIVISION OF TEXT INTO LOGICAL UNITS ----
  965. ." Define chapter number
  966. .de CP
  967. .ds CN \$1
  968. .ds CX CHAP.
  969. .if '\$1'A' .ds CX APPENDIX
  970. .if '\$1'B' .ds CX APPENDIX
  971. .if '\$1'C' .ds CX APPENDIX
  972. .if '\$1'D' .ds CX APPENDIX
  973. .if '\$1'E' .ds CX APPENDIX
  974. .if '\$1'F' .ds CX APPENDIX
  975. .if '\$1'A' .nr a 0 0
  976. .if '\$1'B' .nr a 0 0
  977. .if '\$1'C' .nr a 0 0
  978. .if '\$1'D' .nr a 0 0
  979. .if '\$1'E' .nr a 0 0
  980. .if '\$1'F' .nr a 0 0
  981. .nr H1 \$1 0
  982. .nr H2 0 1
  983. .nr a \$1 0
  984. .nr b 0 1
  985. .nr c 0 1
  986. .nr d 1 1
  987. .nr e 0 1
  988. .nr k 0 1
  989. .nr s \n%
  990. .if \nq=1 .PH 6
  991. .ll \n(LLu
  992. .nr LT \n(LLu
  993. .lt \n(LLu
  994. .ll \n(LLu
  995. .pl n(PLu
  996. .po n(POu
  997. .in 0
  998. .nr PS \n(PZ
  999. .nr VS \n(VZu
  1000. .nr PD 0i
  1001. .ds ST
  1002. .ds CT \$2
  1003. .if !'\$3'' .as CT " \$3
  1004. .if \nh .bp
  1005. .rs
  1006. .sp 16P
  1007. .B
  1008. .ps 30
  1009. .vs 32
  1010. .ce 1
  1011. \$1
  1012. .sp 4P
  1013. .ps 18
  1014. .vs 20
  1015. .ce 1
  1016. \$2
  1017. .sp 0.25i
  1018. .if !'\$3'' .ce 1
  1019. .if !'\$3'' \$3
  1020. .ps 10
  1021. .vs 12
  1022. .R
  1023. .nr x \n(.pu/2u
  1024. .sp |\nxu
  1025. .nr h +1 1
  1026. .tr _\(ru
  1027. .AL
  1028. ..
  1029. .de SP
  1030. .sp \$1 "used for temporary (page balancing ) fill
  1031. ..
  1032. .de HS
  1033. .sp 0.5
  1034. ..
  1035. ." Major section (numbered)
  1036. .de SE
  1037. .nr b +1 1
  1038. .nr c 0 1
  1039. .ds ST \$1
  1040. .sp 1
  1041. .NH 2
  1042. \$1
  1043. .sp 1
  1044. ..
  1045. ." Subsection (numbered)
  1046. .de SS
  1047. .nr c +1 1
  1048. .NH 3
  1049. \$1
  1050. .sp 1
  1051. ..
  1052. .de UU
  1053. .SH
  1054. \$1
  1055. .sp 1
  1056. ..
  1057. ."-------------------- PAGE TRANSITION MACROS USED BY -MS ------
  1058. .de PH "select special running heads
  1059. .nr d \$1
  1060. .if \$1=4 .nr j 1
  1061. .ds CT \$2
  1062. ..
  1063. .de PT
  1064. .AL
  1065. .pc %
  1066. .PN \n%
  1067. 'sp |\n(HMu-0.35i
  1068. .ps 10
  1069. ."
  1070. ." nd = 0 means no running head this time, normal next time
  1071. .if \nd=0 {
  1072. .tl '''' " no running head on initial page transition
  1073. .nr j 1 0}
  1074. ."
  1075. ." nd = 1 is normal case: chapter heading even (left) and section odd(right)
  1076. .if \nd=1{
  1077. .if e .tl 'fBs+2%s-2fR'\*(CT'\*(CX~ \*(CN' "normal case even page
  1078. .if o .if \nb>0 .tl 'SEC.~ \*(CN.\nb'\*(ST'fBs+2%s-2fR'
  1079. .if o .if \nb=0 .tl '''fBs+2%s-2fR'}
  1080. .if o .if \nb=-999 .tl '\*(CX~ \*(CN'\*(CT'fBs+2%s-2fR'}
  1081. ."
  1082. ." nd = 2 is for PROBLEMS; even normal, odd  CHAP. ... PROBLEMS %
  1083. .if \nd=2{
  1084. .if e .tl 'fBs+2%s-2fR'\*(CT'\*(CX~ \*(CN' "even page PROBLEMS
  1085. .if o .if \nd=2 .tl '\*(CX~ \*(CN'PROBLEMS'fBs+2%s-2fR' }
  1086. ."
  1087. ." nd = 3 is for index, problem solutions & other cases with same odd even hd
  1088. .if \nd=3{
  1089. .if e .tl 'fBs+2%s-2fR'\*(CT''
  1090. .if o .tl ''\*(CT'fBs+2%s-2fR'}
  1091. ."
  1092. ." nd = 4 is like nd = 3, except page numbers are lower case roman
  1093. .if \nd=4{
  1094. .nr v \n%
  1095. .if e .tl 'fBs+2\nvs-2fR'\*(CT''
  1096. .if o .tl ''\*(CT'fBs+2\nvs-2fR'}
  1097. ."
  1098. ." nd = 5 suppresses running heads like nd=0, only it keeps them suppressed
  1099. .if \nd=5 .tl ''''
  1100. ." nd = 6 gives page number in right-hand corner only
  1101. .if \nd=6 .tl '''%'
  1102. .if \nd=0 .nr d 1 0 " henceforth normal running heads
  1103. ..
  1104. .de BT
  1105. .if \n%=\ns{
  1106. .nr x \n(HMu+(\n(BO*\n(VSu)+2P
  1107. 'sp |\nxu
  1108. .nr v \n%
  1109. .ie \nd=4 .tl ''fBs-1\nvs0fP''
  1110. .el .tl ''fBs-1\n%s0fP''}
  1111. .nr j 0 0
  1112. .if \nd=0 .nr d 1 0
  1113. ..
  1114. ."--------------- CHECK FOR INITIAL PAGE NUMBER ---------------
  1115. .de PC
  1116. .if n%<\$1{
  1117. .tm You forgot to set the page number.  Run aborted. Use troff -n
  1118. .ex}
  1119. .if n%>\$2{
  1120. .tm You forgot to set the page number.  Run aborted. Use troff -n
  1121. .ex}
  1122. ..
  1123. ."-------------------- LISTS OF THINGS ------------------------
  1124. ." Start list
  1125. .de LI
  1126. .nr g 0 1
  1127. .in +0.25i
  1128. .nr LL -0.25i
  1129. .ll -0.25i
  1130. .ne 3v
  1131. .HS
  1132. ..
  1133. ." End list
  1134. .de LX
  1135. .sp 1
  1136. .in -0.25i
  1137. .nr LL +0.25i
  1138. .ll +0.25i
  1139. .LP
  1140. ..
  1141. ." List item
  1142. .de IT
  1143. .HS
  1144. .nr g \ng+1 1
  1145. .ie \ng<10 .IP \ng. 4
  1146. .el .IP \ng. 4
  1147. ..
  1148. ."Short unnumbered lines
  1149. .de UN
  1150. .HS
  1151. ..
  1152. ."-------------------- END OF CHAPTER EXERCISES ---------------
  1153. .de PB
  1154. .nr d 2 0
  1155. .if \nq=1 .PH 6
  1156. .ne 1.5i
  1157. .sp 0.5i
  1158. .ce 1
  1159. .B PROBLEMS
  1160. .sp 1
  1161. .nr p 0 1
  1162. ..
  1163. .de PR
  1164. .ps 11
  1165. .vs 13
  1166. .nr PS 11
  1167. .nr VS 13.01p
  1168. .HS
  1169. .nr p +1 1
  1170. .in w'00.  'u
  1171. .ti -w'00.  'u
  1172. .if \np>9 fB\np.fR~~c
  1173. .if \np<10 fB\np.fR~~c
  1174. ..
  1175. .de AA
  1176. .sp 3
  1177. .if n .nr LL 84m
  1178. .nr PS \n(PZ
  1179. .nr VS \n(VZu
  1180. .nr a \$1 1
  1181. .nr b 0 0
  1182. .nr p 0 1
  1183. .ce 1
  1184. .nr x 1
  1185. .if '\$1'A' .nr x 0
  1186. .if '\$1'B' .nr x 0
  1187. .if '\$1'C' .nr x 0
  1188. .if \nq=1 .PH 6
  1189. .if \nxfBSOLUTIONS TO CHAPTER \$1 PROBLEMSfR
  1190. .if !\nxfBSOLUTIONS TO APPENDIX \$1 PROBLEMSfR
  1191. .sp 1v
  1192. ..
  1193. .de AN
  1194. .HS
  1195. .ps \n(PZ
  1196. .vs \n(VSu
  1197. .nr PS \n(PZ
  1198. .nr VS \n(VZu
  1199. .nr p +1 1
  1200. .in w'00.  'u
  1201. .ti -w'00.  'u
  1202. .if \np>9 fB\np.fR~~c
  1203. .if \np<10 fB\np.fR~~c
  1204. ..
  1205. ."-------------------- BIBLIOGRAPHY ---------------------------
  1206. .de BB
  1207. .sp 2
  1208. .in 0.25i
  1209. ..
  1210. .de BI
  1211. .ps 10
  1212. .vs 12
  1213. .sp \ntu
  1214. .HS
  1215. .if n .HS
  1216. .ti -0.30i
  1217. .R
  1218. ..
  1219. ."-------------------- QUOTES ---------------------------------
  1220. .ds OQ `h'-1p'`
  1221. .ds CQ 'h'-1p''
  1222. ."-------------------- FIGS.-----------------------------------
  1223. .de FC 
  1224. 'sp 1v
  1225. .ps 10
  1226. .vs 12
  1227. .in +0.5i
  1228. .ll -0.5i
  1229. .B
  1230. .if '\$1'C' .ce 1
  1231. Fig.|||\*(CN-\n+k.~c
  1232. .R
  1233. ..
  1234. .de BF
  1235. .KF
  1236. 'sp 1v
  1237. .nr TP \n(.s
  1238. .nr TV \n(.v
  1239. .nr TF \n(.f
  1240. .nr r 0 0
  1241. .if \nq=0 .if  "\$1"PAGE" .KP
  1242. .if \nq=0 .if  "\$1"PAGE" .nr r 1 0
  1243. .if \nq=0 .if !"\$1"PAGE" .sp \$1
  1244. .if \nq=1 .sp 0.5i
  1245. .FC \$2
  1246. ..
  1247. .de EF
  1248. .in -0.5i
  1249. .ll +0.5i
  1250. .ps \n(TP
  1251. .vs \n(TV
  1252. .ft \n(TF
  1253. 'if \nr==0 'sp 30u
  1254. 'AL
  1255. .KE
  1256. ..
  1257. .de NF
  1258. .nr x \nk+1
  1259. .ie !'\$1'X' Fig.~\*(CN-\nx\$1
  1260. .el Figure \*(CN-\nx\$2
  1261. ..
  1262. .de PF
  1263. .ie !'\$1'X' Fig.~\*(CN-\nk\$1
  1264. .el Figure \*(CN-\nk\$2
  1265. ..
  1266. ."-------------------- MULTIPLE BLANK PAGES -------------------
  1267. .de MP
  1268. .if \$1 {
  1269. .KF
  1270. .KP
  1271. .KE
  1272. .MP \$1-1
  1273. .if \$1<2 .nr k +1 1
  1274. }
  1275. ..
  1276. ."-------------------- TABLE OF CONTENTS ----------------------
  1277. .de XT
  1278. .if t .ta 0.4i 0.8i 0.9i \n(LLuR
  1279. .if n .ta 0.3i 1.0i 1.1i 5.0iR
  1280. .ps 11
  1281. .vs 13
  1282. .nr a \$1 0
  1283. .nr b 0 1
  1284. .nr c 0 1
  1285. .sp 0.40i
  1286. .ne 0.3i
  1287. .B
  1288. \s18\$1\s12 \$2 \$3\fR\s11
  1289. .br
  1290. .if !'\$4'' \fB\$4\fR
  1291. .R
  1292. .sp 0.5v
  1293. ..
  1294. .de XE
  1295. .nr b +1 1
  1296. .nr c 0 1
  1297. .HS
  1298. \na.\nb \$1   \$2
  1299. ..
  1300. .de XS
  1301. .nr c +1 1
  1302. \na.\nb.\nc   \$1   \$2
  1303. ..
  1304. ."------------------- INDEX -----------------------------------
  1305. .de IL
  1306. .nr PS \n(PZ-2
  1307. .nr VS 12.01p
  1308. .LP
  1309. .nf
  1310. .na
  1311. .sp 2v
  1312. .ne 2
  1313. fBs+4\$1\s0fR
  1314. .sp 1v
  1315. ..
  1316. ."------------------- NEW .B MACRO ----------------------------
  1317. .rm B
  1318. .de B
  1319. .nr PQ \n(.f
  1320. .ft 3
  1321. .if !"\$1"" &\$1\f\n(PQ\$2
  1322. ..
  1323. ."--------------------- FIXES NEEDED TO -MS -------------------
  1324. ." Remove .if n .ul 1000 from .NH
  1325. ." Remove .if n .ul 1000 from .SH
  1326. ." Fix to allow letters as chapter "numbers"
  1327. ."
  1328. ." Here is the b3mac file
  1329. .nr Cs 10
  1330. .fp 5 H
  1331. .ds fm (fm
  1332. .ds em (em
  1333. .de F
  1334. \fI\$1\fR\$2
  1335. ..
  1336. .de CC
  1337. .HS
  1338. ~~~~~\s\n(Cs\f5\$1\fP\s0
  1339. .HS
  1340. .LP
  1341. ..
  1342. .de Cx
  1343. ~~~~~\s\n(Cs\f5\$1\fP\s0\$2
  1344. ..
  1345. .de Cb
  1346. .in +0.25i
  1347. \s\n(Cs
  1348. .HS
  1349. \f5
  1350. ..
  1351. .de Ce
  1352. .HS
  1353. \fR
  1354. .nr PS \n(PZ
  1355. .nr VS \n(VZ
  1356. .LP
  1357. .in -0.25i
  1358. ..
  1359. .de SY
  1360. \$3s-2\$1s+2\$2
  1361. ..
  1362. .de SM
  1363. \$3s-1\$1s+1\$2
  1364. ..
  1365. .de FN
  1366. &\fI\$1\fR\$2
  1367. ..
  1368. .de DI
  1369. &\fI\$1\fR\$2
  1370. ..
  1371. .de FI
  1372. &\fI\$1\fR\$2
  1373. ..
  1374. .de LN
  1375. .nr x \$1+\$2
  1376. \$4line
  1377. .L4 \nx \$3
  1378. ..
  1379. .de LS
  1380. .nr x \$1+\$2
  1381. .nr y \$1+\$3
  1382. .nr z \nx+1
  1383. \$5lines
  1384. .L4 \nx
  1385. .ie \ny=\nz and
  1386. .el to
  1387. .L4 \ny \$4
  1388. ..
  1389. .ds SQ (fmh'-0.05c'(fm
  1390. .de L4
  1391. .ie \$1<10 000\$1\$2
  1392. .el .ie \$1<100 00\$1\$2
  1393. .el .ie \$1<1000 0\$1\$2
  1394. .el \$1\$2
  1395. ..
  1396. .de KW
  1397. f5\$1\$2fR
  1398. ..
  1399. .ds M0 MINIX
  1400. .ds M1 \s-1MINIX\s+1
  1401. .ds M2 \s-2MINIX\s+2
  1402. .ds M9 \s-1MINIX\s+1
  1403. .ds m0 minix
  1404. .de MX
  1405. s-2MINIXs+2\$1
  1406. ..
  1407. .de Ux
  1408. s-2UNIXs+2\$1
  1409. ..
  1410. .tr _(ru
  1411. .de UX
  1412. s-2UNIXs+2\$1
  1413. ..
  1414. .ds Mx \s-1MINIX\s0
  1415. .ds Mp \s-1MINIX-PC\s0
  1416. .ds Ms \s-1MINIX-ST\s0
  1417. .de CW
  1418. f5
  1419. ..
  1420. .de Bu
  1421. .HS
  1422. .IP "(bu" 4
  1423. ..
  1424. .de CD
  1425. .ne 2
  1426. .if t .ta 0.9i 1.15i 2.75i 3.25i 3.75i
  1427. .if n .ta 11m 15m 40m
  1428. .nr x 0 0
  1429. .nr y 0 0
  1430. .nr z 0 0
  1431. .if n #\$1
  1432. .if n .br
  1433. \fBCommand:& \$1\fR
  1434. .br
  1435. ..
  1436. .de SX
  1437. .if \nx<=0 \fBSyntax:& \$1
  1438. .if \nx>0 & \fB\$1
  1439. .nr x 1 1
  1440. .br
  1441. ..
  1442. .de FL
  1443. .if \ny<=0 \fBFlags:& \fB\$1 \fR\$2
  1444. .if \ny>0 &  \fB\$1 \fR\$2
  1445. .nr y 1 1
  1446. .br
  1447. ..
  1448. .de EX
  1449. .br
  1450. .nf
  1451. .if \nz<=0 \fB&Examples: \fR\$1 \fR# \$2
  1452. .if \nz>0 & \fR\$1 \fR# \$2
  1453. .nr z 1 1
  1454. .br
  1455. ..
  1456. .de EY
  1457. .br
  1458. .nf
  1459. .if \nz<=0 \fB&Example: \fR\$1 \fR# \$2
  1460. .if \nz>0 & \fR\$1 \fR# \$2
  1461. .nr z 1 1
  1462. .br
  1463. ..