URI:
       ttmac.pm - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       ttmac.pm (17576B)
       ---
            1 .\" 10/22/92 activate next line before installing
            2 .pi #9/bin/auxpm
            3 .
            4 .                \" IZ - initialization
            5 .de IZ
            6 .fp 1 R                        \" force a font out into prefix
            7 .nr PS 10                \" point size
            8 .nr VS 12                \" line spacing
            9 .ps \\n(PS
           10 .ie \\n(VS>=41 .vs \\n(VSu
           11 .el .vs \\n(VSp
           12 .nr LL 6i                \" line length
           13 .ll \\n(LLu
           14 .nr LT \\n(.l                \" title length
           15 .lt \\n(LTu
           16 .if !\\n(HM .nr HM 1i   \" top of page
           17 .if !\\n(FM .nr FM 1i        \" footer margin
           18 .if !\\n(FO .nr FO \\n(.p-\\n(FM        \" bottom of page
           19 .                        \" to set text ht to N, set FO to N + \n(HM.  default is 10i
           20 .pl 32767u                \" safety first: big pages for pm
           21 .if !\\n(PO .nr PO \\n(.ou        \" page offset
           22 .nr PI 5n                \" .PP paragraph indent
           23 .nr QI 5n                \" .QS indent
           24 .nr DI 5n                \" .DS indent
           25 .nr PD 0.3v                \" paragraph vertical separation
           26 .nr TS 0.5v                \" space around tables
           27 .nr Kf 0.5v                \" space around .KF/.KE
           28 .nr Ks 0.5v                \" space around .KS/.KE
           29 .
           30 .nr P1 .4i                \" indent for .P1/.P2
           31 .nr dP 1                \" delta point size for programs in .P1/.P2
           32 .nr dV 2p                \" delta vertical for programs
           33 .nr dT 8                \" delta tab stop for programs
           34 .nr DV .5v                \" space before start of program
           35 .nr IP 0                \" ?
           36 .nr IR 0                \" ?
           37 .nr I1 \\n(PIu
           38 .ev 1
           39 .if !\\n(FL .nr FL \\n(LLu        \" footnote length
           40 .ll \\n(FLu
           41 .ps 8                        \" text size & leading in footnote
           42 .vs 10p
           43 .ev
           44 .if \\*(CH .ds CH "\(hy \\\\n(PN \(hy
           45 .ds # #\\\\n(.c \\\\n(.F
           46 .
           47 .
           48 .ME        \" initialize date strings
           49 .rm ME
           50 .        \"  accents:  \*'e \*`e \*:u \*^e \*~n \*va \*,c
           51 .ds ' \h'\w'e'u*4/10'\z\(aa\h'-\w'e'u*4/10'
           52 .ds ` \h'\w'e'u*4/10'\z\(ga\h'-\w'e'u*4/10'
           53 .ds : \\v'-0.6m'\\h'(1u-(\\\\n(.fu%2u))*0.13m+0.00m'\\z.\\h'0.2m'\\z.\\h'-((1u-(\\\\n(.fu%2u))*0.13m+0.20m)'\\v'0.6m'
           54 .ds ^ \\\\k:\\h'-\\\\n(.fu+1u/2u*2u+\\\\n(.fu-1u*0.13m+0.06m'\\z^\\h'|\\\\n:u'
           55 .ds ~ \\\\k:\\h'-\\\\n(.fu+1u/2u*2u+\\\\n(.fu-1u*0.13m+0.06m'\\z~\\h'|\\\\n:u'
           56 .ds v \\\\k:\\\\h'+\\\\w'e'u/4u'\\\\v'-0.6m'\\\\s6v\\\\s0\\\\v'0.6m'\\\\h'|\\\\n:u'
           57 .ds , \\\\k:\\\\h'\\\\w'c'u*0.4u'\\\\z,\\\\h'|\\\\n:u'
           58 ..
           59 .
           60 .
           61 .                \" SP - generate paddable space
           62 .de SP
           63 .br
           64 .nr X 1v
           65 .if \\n(.$ .nr X \\$1v
           66 .ie '\\$2'exactly' \{\
           67 \v'\\nXu'\ \h'-\w'\ 'u'\c
           68 .sp \\$1\}
           69 .el .X "SP \\nX \\$2"
           70 ..
           71 .                \" NE - need space on this page
           72 .de NE
           73 .nr X 1v
           74 .if \\n(.$ .nr X \\$1v
           75 .X "NE \\nX \\$2"
           76 ..
           77 .                \" BP, FL, FC - begin page, flush figures, flush column
           78 .de BP
           79 .br
           80 .X CMD BP
           81 ..
           82 .de FL
           83 .br
           84 .X CMD FL
           85 ..
           86 .de FC
           87 .br
           88 .X CMD FC
           89 ..
           90 .                \" X - generate an x X ... command in the output
           91 .de X
           92 ....ie '\\n(.z'' \\!x X \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
           93 ....el \\!.X "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
           94 ...
           95 .if !'\\n(.z'' .if \\n(.$=1 \\!.X "\\$1
           96 .if !'\\n(.z'' .if \\n(.$=2 \\!.X "\\$1 \\$2
           97 .if !'\\n(.z'' .if \\n(.$=3 \\!.X "\\$1 \\$2 \\$3
           98 .if !'\\n(.z'' .if \\n(.$>3 \\!.X "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
           99 .if '\\n(.z'' .if \\n(.$=1 \\!x X \\$1 \\*#
          100 .if '\\n(.z'' .if \\n(.$=2 \\!x X \\$1 \\$2 \\*#
          101 .if '\\n(.z'' .if \\n(.$=3 \\!x X \\$1 \\$2 \\$3 \\*#
          102 .if '\\n(.z'' .if \\n(.$=4 \\!x X \\$1 \\$2 \\$3 \\$4 \\*#
          103 .if '\\n(.z'' .if \\n(.$>4 \\!x X \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\*#
          104 ..
          105 .                \" DA - force date
          106 .de DA
          107 .if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
          108 .ds CF \\*(DY
          109 ..
          110 .                \" ND - set new or no date
          111 .de ND
          112 .ds DY \\$1 \\$2 \\$3 \\$4
          113 .rm CF
          114 ..
          115 .de ME                \" ME - set month strings
          116 .if \\n(mo-0 .ds MO January
          117 .if \\n(mo-1 .ds MO February
          118 .if \\n(mo-2 .ds MO March
          119 .if \\n(mo-3 .ds MO April
          120 .if \\n(mo-4 .ds MO May
          121 .if \\n(mo-5 .ds MO June
          122 .if \\n(mo-6 .ds MO July
          123 .if \\n(mo-7 .ds MO August
          124 .if \\n(mo-8 .ds MO September
          125 .if \\n(mo-9 .ds MO October
          126 .if \\n(mo-10 .ds MO November
          127 .if \\n(mo-11 .ds MO December
          128 .if \\n(dw-0 .ds DW Sunday
          129 .if \\n(dw-1 .ds DW Monday
          130 .if \\n(dw-2 .ds DW Tuesday
          131 .if \\n(dw-3 .ds DW Wednesday
          132 .if \\n(dw-4 .ds DW Thursday
          133 .if \\n(dw-5 .ds DW Friday
          134 .if \\n(dw-6 .ds DW Saturday
          135 .if "\\*(DY"" .ds DY \\*(MO \\n(dy, 19\\n(yr
          136 ..
          137 .                \" FP - font position for a family
          138 .de FP
          139 .if '\\$1'palatino'\{\
          140 .        fp 1 PA
          141 .        fp 2 PI
          142 .        fp 3 PB
          143 .        fp 4 PX\}
          144 .if '\\$1'century'\{\
          145 .        ie '\\*(.T'202'\{\
          146 .                fp 1 NR Centsb
          147 .                fp 2 NI CentI
          148 .                fp 3 NB CentB
          149 .                fp 4 NX CentBI\}
          150 .        el \{\
          151 .                fp 1 NR
          152 .                fp 2 NI
          153 .                fp 3 NB
          154 .                fp 4 NX\}\}
          155 .if '\\$1'helvetica'\{\
          156 .        fp 1 H
          157 .        fp 2 HI
          158 .        fp 3 HB
          159 .        fp 4 HX\}
          160 .if '\\$1'bembo'\{\
          161 .        ie '\\*(.T'202'\{\
          162 .                fp 1 B1 Bembo
          163 .                fp 2 B2 BemboI
          164 .                fp 3 B3 BemboB
          165 .                fp 4 B4 BemboBI\}
          166 .        el \{\
          167 .                fp 1 B1
          168 .                fp 2 B2
          169 .                fp 3 B3
          170 .                fp 4 B4\}\}
          171 .if '\\$1'optima'\{\
          172 .        fp 1 R Optima
          173 .        fp 2 I OptimaI
          174 .        fp 3 B OptimaB
          175 .        fp 4 BI OptimaBI\}
          176 .if '\\$1'souvenir'\{\
          177 .        fp 1 R Souvenir
          178 .        fp 2 I SouvenirI
          179 .        fp 3 B SouvenirB
          180 .        fp 4 BI SouvenirBI\}
          181 .if '\\$1'melior'\{\
          182 .        fp 1 R Melior
          183 .        fp 2 I MeliorI
          184 .        fp 3 B MeliorB
          185 .        fp 4 BI MeliorBI\}
          186 .if '\\$1'times'\{\
          187 .        fp 1 R
          188 .        fp 2 I
          189 .        fp 3 B
          190 .        fp 4 BI\}
          191 ..
          192 .                \" TL - title
          193 .de TL
          194 .br
          195 .if !\\n(1T .BG
          196 ....hy 0
          197 .ft 3
          198 .ps \\n(PS+2p
          199 .vs \\n(VS+2p
          200 .ll \\n(LLu
          201 .ce 100                \" turned off in .RT
          202 .sp .5i
          203 ..
          204 .                \" AU - remember author(s)
          205 .de AU
          206 .ft 1
          207 .ps \\n(PS
          208 .ie \\n(VS>=41 .vs \\n(VSu
          209 .el .vs \\n(VSp
          210 .SP .5
          211 ..
          212 .                \" AI - author's institution
          213 .de AI
          214 .SP .25
          215 .ft 2
          216 ..
          217 .                \" AB - begin abstract
          218 .de AB
          219 .nr AB 1          \" we're in abstract
          220 .if !\\n(1T .BG
          221 .ft 1
          222 .ps \\n(PS
          223 .vs \\n(VSp
          224 .ce
          225 .in +\\n(.lu/12u
          226 .ll -\\n(.lu/12u
          227 .SP 1
          228 .ie \\n(.$ \\$1
          229 .el ABSTRACT
          230 .SP .75 
          231 .RT
          232 ..
          233 .                \" AE - end of abstract
          234 .de AE
          235 .br
          236 .nr AB 0
          237 .in 0
          238 .ll \\n(LLu
          239 .ps \\n(PS
          240 .ie \\n(VS>=41 .vs \\n(VSu
          241 .el .vs \\n(VSp
          242 .SP
          243 ..
          244 .                \" 2C - 2 columns
          245 .de 2C
          246 .MC 2
          247 ..
          248 .                \" 1C - 1 column
          249 .de 1C
          250 .MC 1
          251 ..
          252 .                \" MC - multiple columns
          253 .de MC
          254 .br
          255 .if \\n(1T .RT
          256 .if \\n(1T .NP
          257 .if !\\n(OL .nr OL \\n(LL
          258 .if \\n(CW=0 .nr CW \\n(LL*7/15
          259 .if \\n(GW=0 .nr GW \\n(LL-(2*\\n(CW)
          260 .nr x \\n(CW+\\n(GW
          261 .if "\\$1"" .MC 2
          262 .if \\$1=1 \{\
          263 .        X MC 1 0
          264 .        nr LL \\n(OLu\}
          265 .if \\$1=2 \{\
          266 .        X MC 2 \\nx
          267 .        nr LL \\n(CWu\}
          268 .ll \\n(LLu
          269 .if \\$1>2 .tm -mpm can't handle more than two columns
          270 .if \\n(1T .RT
          271 ..
          272 .                \" TS - table start, TE - table end;  also TC, TQ, TH
          273 .de TS
          274 .br
          275 .if !\\n(1T .RT
          276 .SP \\n(TSu TS
          277 .X "US TS
          278 .if \\$1H .TQ
          279 .nr IX 1
          280 ..
          281 .de TC
          282 .nr TZ \\n(.lu
          283 .if \\n(.$ .nr TZ \\$1n
          284 .ta \\n(TZuR
          285 ..
          286 .de TD
          287 .LP
          288 .nr TZ 0
          289 ..
          290 .de TQ
          291 .di TT
          292 .nr IT 1
          293 ..
          294 .de TH
          295 .if \\n(.d>0.5v \{\
          296 .        nr T. 0
          297 .        T# 0\}
          298 .di
          299 .nr TQ \\n(.i
          300 .nr HT 1
          301 .in 0
          302 .mk #a
          303 .mk #b
          304 .mk #c
          305 .mk #d
          306 .mk #e
          307 .mk #f
          308 .TT
          309 .in \\n(TQu
          310 .mk #T
          311 ..
          312 .                \" TE - table end
          313 .de TE
          314 .nr IX 0
          315 .if \\n(IT .if !\\n(HT \{\
          316 .        di
          317 .        nr EF \\n(.u
          318 .        nf
          319 .        TT
          320 .        if \\n(EF .fi\}
          321 .nr IT 0
          322 .nr HT 0
          323 .rm a+ b+ c+ d+ e+ f+ g+ h+ i+ j+ k+ l+ n+ m+
          324 .rr 32 33 34 35 36 37 38 40 79 80 81 82
          325 .rr a| b| c| d| e| f| g| h| i| j| k| l| m|
          326 .rr a- b- c- d- e- f- g- h- i- j- k- l- m-
          327 .X "END US TE
          328 .SP \\n(TSu TE
          329 .bp
          330 ..
          331 .                \" EQ - equation, breakout and display
          332 .de EQ
          333 .nr EF \\n(.u
          334 .rm EE
          335 .nr LE 1        \" 1 is center
          336 .ds EL \\$1
          337 .if "\\$1"L" \{\
          338 .        ds EL \\$2
          339 .        nr LE 0\}
          340 .if "\\$1"C" .ds EL \\$2
          341 .if "\\$1"R" \{\
          342 .        ds EL \\$2 \" 2 is right adjust
          343 .        nr LE 2\}
          344 .if "\\$1"I" \{\
          345 .        nr LE 0
          346 .        if "\\$3"" .ds EE \\h'|10n'
          347 .        el .ds EE \\h'\\$3'
          348 .        ds EL \\$2\}
          349 .if \\n(YE .nf
          350 .di EZ
          351 ..
          352 .                \" EN - end of equation
          353 .de EN 
          354 .br
          355 .di
          356 .rm EZ
          357 .nr ZN \\n(dn
          358 .if \\n(ZN .if !\\n(YE .LP
          359 .if !\\n(ZN .if !"\\*(EL"" .nr ZN 1
          360 .if \\n(ZN \{\
          361 .        SP .5v EQ
          362 .        X "US EQ"\}
          363 'pc
          364 .if \\n(BD .nr LE 0 \" don't center if block display or mark/lineup
          365 .if \\n(MK \{\
          366 .        if \\n(LE=1 .ds EE \\h'|10n'
          367 .        nr LE 0\}
          368 'lt \\n(.lu
          369 .if !\\n(EP .if \\n(ZN \{\
          370 .        if \\n(LE=1 .tl \(ts\(ts\\*(10\(ts\\*(EL\(ts
          371 .        if \\n(LE=2 .tl \(ts\(ts\(ts\\*(10\\*(EL\(ts
          372 .        if !\\n(LE \{\
          373 .                if !\\n(BD .tl \(ts\\*(EE\\*(10\(ts\(ts\\*(EL\(ts
          374 .                if \\n(BD .if \\n(BD<\\w\(ts\\*(10\(ts .nr BD \\w\(ts\\*(10\(ts
          375 .                if \\n(BD \!\\*(10\\t\\*(EL\}\}
          376 .if \\n(EP .if \\n(ZN \{\
          377 .        if \\n(LE=1 .tl \(ts\\*(EL\(ts\\*(10\(ts\(ts
          378 .        if \\n(LE=2 .tl \(ts\\*(EL\(ts\(ts\\*(10\(ts
          379 .        if !\\n(LE \{\
          380 .                if !\\n(BD .tl \(ts\\*(EL\\*(EE\\*(10\(ts\(ts\(ts
          381 .                if \\n(BD .if \\n(BD<\\w\(ts\\*(10\(ts .nr BD \\w\(ts\\*(10\(ts
          382 .                if \\n(BD \!\\h'-\\\\n(.iu'\\*(EL\\h'|0'\\*(10\}\}
          383 'lt \\n(LLu
          384 'pc %
          385 .if \\n(YE .if \\n(EF .fi
          386 .if \\n(ZN .X "END US EQ"
          387 .if \\n(ZN .SP .5v EN
          388 .if \\n(ZN .bp
          389 ..
          390 .                \" PS - start picture
          391 .de PS                        \" $1 is height, $2 is width, in inches
          392 .br
          393 .nr X 0.35v
          394 .if \\$1>0 .X "SP \\nX PS"
          395 .ie \\$1>0 .nr $1 \\$1
          396 .el .nr $1 0
          397 .X "US PS \\$1
          398 .in (\\n(.lu-\\$2)/2u
          399 ..
          400 .                \" PE - end of picture
          401 .de PE
          402 .in
          403 .X "END US PE
          404 .nr X .65v
          405 .if \\n($1>0 .X "SP \\nX PE"
          406 .bp
          407 ..
          408 .de IS        \" for -mpm only
          409 .KS
          410 ..
          411 .de IE
          412 .KE
          413 .bp
          414 ..
          415 .                \" NP - new page
          416 .de NP
          417 .ev 2
          418 .bp
          419 .if \\n(KF=0 \{\
          420 .        nr PX \\n(.s
          421 .        nr PF \\n(.f
          422 .        nr PV \\n(.v
          423 .        lt \\n(LTu
          424 .        ps \\n(PS
          425 .        vs \\n(PS+2
          426 .        ft 1
          427 .        if \\n(PO .po \\n(POu        \" why isn't this reset???
          428 .        PT \\$1
          429 .        bp
          430 .        rs
          431 .        BT
          432 .        bp
          433 .        nr %# +1
          434 .        ps \\n(PX
          435 .        vs \\n(PVu
          436 .        ft \\n(PF \}
          437 .ev
          438 ..
          439 .
          440 .ds %e .tl '\\*(LH'\\*(CH'\\*(RH'
          441 .ds %o .tl '\\*(LH'\\*(CH'\\*(RH'
          442 .ds %E .tl '\\*(LF'\\*(CF'\\*(RF'
          443 .ds %O .tl '\\*(LF'\\*(CF'\\*(RF'
          444 .
          445 .                \" PT - page title
          446 .de PT
          447 .nr PN \\n(%#
          448 .X "PT \\n(%#
          449 .sp \\n(HMu/2u
          450 .if \\n(OL .lt \\n(OLu                \" why isn't this reset???
          451 .if \\n(BT>0 .if \\n(%#%2 \\*(%o
          452 .if \\n(BT>0 .if !\\n(%#%2 \\*(%e
          453 .if \\n(BT=0 .tl '\0'''                \" put out something or spacing is curdled
          454 .X "END PT \\n(%#
          455 ..
          456 .                \" BT - bottom title
          457 .de BT
          458 .X "BT \\n(%#
          459 .sp |\\n(FMu/2u+\\n(FOu-1v
          460 .if \\n(%#%2 \\*(%O
          461 .if !\\n(%#%2 \\*(%E
          462 .nr BT \\n(BT+1
          463 .X "END BT \\n(%#
          464 ..
          465 .                \" KS - non-floating keep
          466 .de KS
          467 .br
          468 .if "\\n(.z"" .NP  \" defends poorly against including ht of page stuff in diversion for .B1
          469 .X "US KS 0
          470 .nr KS +1
          471 .SP \\n(Ksu
          472 ..
          473 .                \" KF - floating keep
          474 .de KF
          475 .ev 1
          476 .br
          477 .if \\n(KS>0 .tm KF won't work inside KS, line \\n(.c, file \\n(.F
          478 .if \\n(KF>0 .tm KF won't work inside KF, line \\n(.c, file \\n(.F
          479 .nr KF 1
          480 .nr 10 0
          481 .        if !'\\$1'' .nr 10 \\$1u
          482 .        if '\\$1'bottom' .nr 10 \\n(FOu-1u
          483 .        if '\\$1'top' .nr 10 \\n(HM
          484 .        if \\n(10 .X "UF \\n(10 KF"
          485 .        if !\\n(10 .X "UF \\n(HM KF"
          486 .        nr X \\n(FOu-2u
          487 .        if \\n(10 .X "UF \\n(10 KF"
          488 .        if !\\n(10 .X "UF \\nX KF"
          489 .nr SJ \\n(.u
          490 .ps \\n(PS
          491 .if \\n(VS>40 .vs \\n(VSu
          492 .if \\n(VS<=39 .vs \\n(VSp
          493 .ll \\n(LLu
          494 .lt \\n(LTu
          495 .SP \\n(Kfu
          496 ..
          497 .                \" KE - end of KS/KF
          498 .de KE
          499 .bp
          500 .ie \\n(KS>0 \{\
          501 .        SP \\n(Ksu
          502 .        X "END US KS
          503 .        nr KS -1 \}
          504 .el .ie \\n(KF>0 \{\
          505 .        SP \\n(Kfu
          506 .        nr KF 0
          507 .        X "END UF KF"
          508 .        if \\n(SJ .fi
          509 .        ev \}
          510 .el .tm .KE without preceding .KS or .KF, line \\n(.c, file \\n(.F
          511 ..
          512 .
          513 .                \" DS - display. .DS C center; L left-adjust; I indent (default)
          514 .de DS                \"  $2 = amount of indent
          515 .KS
          516 .nf
          517 .\\$1D \\$2 \\$1
          518 .ft 1
          519 .if !\\n(IF \{\
          520 .        ps \\n(PS
          521 .        if \\n(VS>40 .vs \\n(VSu
          522 .        if \\n(VS<=39 .vs \\n(VSp\}
          523 ..
          524 .de D
          525 .ID \\$1
          526 ..
          527 .de CD
          528 .XD
          529 .ce 1000
          530 ..
          531 .de ID
          532 .XD
          533 .if \\n(.$=0 .in +\\n(DIu
          534 .if \\n(.$=1 .if "\\$1"I" .in +\\n(DIu
          535 .if \\n(.$=1 .if !"\\$1"I" .in +\\$1n
          536 .if \\n(.$>1 .in +\\$2n
          537 .....in +0.5i
          538 .....if \\n(.$ .if !"\\$1"I" .if !"\\$1"" .in \\n(DIu
          539 .....if \\n(.$ .if !"\\$1"I" .if !"\\$1"" .in +\\$1n
          540 ..
          541 .de LD
          542 .XD
          543 ..
          544 .de XD
          545 .nf
          546 .nr OI \\n(.i
          547 .SP \\n(DVu
          548 ..
          549 .                \" BD - block display: save everything, then center it.
          550 .de BD
          551 .XD
          552 .nr BD 1
          553 .nf
          554 .in \\n(OIu
          555 .di DD
          556 ..
          557 .                \" DE - display end
          558 .de DE
          559 .ce 0
          560 .if \\n(BD>0 .XF
          561 .nr BD 0
          562 .in \\n(OIu
          563 .SP \\n(DVu
          564 .KE
          565 .fi
          566 ..
          567 .                \" XF - finish a block display to be recentered.
          568 .de XF
          569 .di
          570 .if \\n(dl>\\n(BD .nr BD \\n(dl
          571 .if \\n(BD<\\n(.l .in (\\n(.lu-\\n(BDu)/2u
          572 .nr EI \\n(.l-\\n(.i
          573 .ta \\n(EIuR
          574 .nf
          575 .DD
          576 .in \\n(OIu
          577 ..
          578 .
          579 .
          580 .                \" SH - (unnumbered) section heading
          581 .de SH
          582 .RT
          583 .nr X 1v
          584 .nr Y 3v
          585 .if \\n(1T .NP
          586 .if \\n(1T .X "NE \\nY SH"        \" should these be reversed, change Y to 4v
          587 .if \\n(1T .X "SP \\nX SH
          588 .ft 3
          589 ..
          590 .                \" NH - numbered heading
          591 .de NH
          592 .RT
          593 .nr X 1v
          594 .nr Y 3v
          595 .if \\n(1T .NP
          596 .if \\n(1T .X "NE \\nY NH"        \" should these be reversed, change Y to 4v
          597 .if \\n(1T .X "SP \\nX NH
          598 .ft 3
          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 .ds SN \\n(H1.
          609 .if \\n(NS-1 .as SN \\n(H2.
          610 .if \\n(NS-2 .as SN \\n(H3.
          611 .if \\n(NS-3 .as SN \\n(H4.
          612 .if \\n(NS-4 .as SN \\n(H5.
          613 \\*(SN
          614 ..
          615 .                \" RT - reset at beginning of each PP, LP, etc.
          616 .de RT
          617 .if !\\n(AB .if !\\n(1T .BG
          618 .ce 0
          619 .if !\\n(AB .if !\\n(KF .if !\\n(IF .if !\\n(IX .if !\\n(BE .di
          620 .if \\n(QP \{\
          621 .        ll +\\n(QIu
          622 .        in -\\n(QIu
          623 .        nr QP -1\}
          624 .if !\\n(AB \{\
          625 .        ll \\n(LLu\}
          626 .if !\\n(IF .if !\\n(AB \{\
          627 .        ps \\n(PS
          628 .        ie \\n(VS>=41 .vs \\n(VSu
          629 .        el .vs \\n(VSp\}
          630 .ie \\n(IP \{\
          631 .        in \\n(I\\n(IRu
          632 .        nr IP -1\}
          633 .el .if !\\n(IR \{\
          634 .        nr I1 \\n(PIu
          635 .        nr I2 0
          636 .        nr I3 0
          637 .        nr I4 0
          638 .        nr I5 0\}
          639 .if !\\n(AB .ft 1
          640 .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n
          641 .fi
          642 ..
          643 .                \" BG - begin, execute at first TL, AB, NH, SH, PP, etc.
          644 .de BG                \"        IZ has been called, so registers have some value
          645 .br
          646 .if \\n(CW>0 .if \\n(LL=0 .nr LL \\n(CW+\\n(CW+\\n(GW
          647 .ll \\n(LLu
          648 .lt \\n(LLu
          649 .po \\n(POu
          650 .nr YE 1                \" ok to cause break in .EQ (earlier ones won't)
          651 .ev 0
          652 .hy 14
          653 .ev
          654 .ev 1
          655 .hy 14
          656 .ev
          657 .ev 2
          658 .hy 14
          659 .ev
          660 .nr 1T 1
          661 .X "PARM NP \\n(HM
          662 .X "PARM FO \\n(FO
          663 .if !\\n(%# .nr %# 1
          664 ..
          665 .                \" PP - paragraph
          666 .de PP
          667 .RT
          668 .if \\n(1T .NP
          669 .if \\n(1T .X "SP \\n(PD PP"
          670 .if \\n(1T .X "BS 2 PP"
          671 .ti +\\n(PIu
          672 ..
          673 .                \" LP - left aligned paragraph
          674 .de LP
          675 .RT
          676 .if \\n(1T .NP
          677 .if \\n(1T .X "SP \\n(PD LP"
          678 .if \\n(1T .X "BS 2 LP"
          679 ..
          680 .                \" IP - indented paragraph
          681 .de IP
          682 .RT
          683 .if !\\n(IP .nr IP +1
          684 .if \\n(1T .NP
          685 .if \\n(1T .X "SP \\n(PD PP"
          686 .if \\n(1T .X "BS 2 IP"
          687 .nr IU \\n(IR+1
          688 .if \\n(.$>1 .nr I\\n(IU \\$2n+\\n(I\\n(IRu
          689 .if \\n(I\\n(IU=0 .nr I\\n(IU \\n(PIu+\\n(I\\n(IRu
          690 .in \\n(I\\n(IUu
          691 .nr TY \\n(TZ-\\n(.i
          692 .nr JQ \\n(I\\n(IU-\\n(I\\n(IR
          693 .ta \\n(JQu \\n(TYuR
          694 .if \\n(.$ \{\
          695 .ti \\n(I\\n(IRu
          696 \&\\$1\t\c\}
          697 ..
          698 .                \" QP - quoted paragraph (within IP)
          699 .de QP
          700 .RT
          701 .if \\n(1T .NP
          702 .if \\n(1T .X "SP \\n(PD QP"
          703 .if \\n(1T .X "BS 2 QP"
          704 .nr QP 1
          705 .in +\\n(QIu
          706 .ll -\\n(QIu
          707 .ti \\n(.iu
          708 ..
          709 .                \" RS - prepare for double indenting
          710 .de RS
          711 .nr IS \\n(IP
          712 .RT
          713 .nr IP \\n(IS
          714 .nr IU \\n(IR
          715 .nr IR +1
          716 .if !\\n(I\\n(IR .nr I\\n(IR \\n(I\\n(IU+\\n(PIu
          717 .in \\n(I\\n(IRu
          718 .nr TY \\n(TZ-\\n(.i
          719 .ta \\n(TYuR
          720 ..
          721 .                \" RE - retreat to the left
          722 .de RE
          723 .nr IS \\n(IP
          724 .RT
          725 .nr IP \\n(IS
          726 .if \\n(IR>0 .nr IR -1
          727 .in \\n(I\\n(IRu
          728 ..
          729 .                \" B - bold font
          730 .de B
          731 .nr PQ \\n(.f
          732 .ft 3
          733 .if \\n(.$ \&\\$1\\f\\n(PQ\\$2
          734 ..
          735 .                \" BI - bold italic
          736 .de BI
          737 .nr PQ \\n(.f
          738 .ft 4
          739 .if \\n(.$ \&\\$1\\f\\n(PQ\\$2
          740 ..
          741 .                \" R - Roman font
          742 .de R
          743 .nr PQ \\n(.f
          744 .ft 1
          745 .if \\n(.$ \&\\$1\f\\n(PQ\\$2
          746 ..
          747 .                \" I - italic font
          748 .de I
          749 .nr PQ \\n(.f
          750 .ft 2
          751 .if \\n(.$ \&\\$1\^\f\\n(PQ\\$2
          752 ..
          753 .                \" CW - constant width font from -ms
          754 .de CW
          755 .nr PQ \\n(.f
          756 .if \\n(.$=0 .ft CW
          757 .if \\n(.$>0 \%\&\\$3\f(CW\\$1\\f\\n(PQ\\$2
          758 ..
          759 .de IT                \" ditto to italicize argument
          760 .nr Sf \\n(.f
          761 \%\&\\$3\f2\\$1\f\\n(Sf\&\\$2
          762 ..
          763 .                \" TA - tabs set in ens or chars
          764 .de TA
          765 .ta \\$1n \\$2n \\$3n \\$4n \\$5n \\$6n \\$7n \\$8n \\$9n
          766 ..
          767 .                \" SM - make smaller size
          768 .de SM
          769 .ie \\n(.$ \&\\$3\s-2\\$1\s0\\$2
          770 .el .ps -2
          771 ..
          772 .                \" LG - make larger size
          773 .de LG
          774 .ie \\n(.$ \&\\$3\s+2\\$1\s0\\$2
          775 .el .ps +2
          776 ..
          777 .                \" NL - return to normal size
          778 .de NL
          779 .ps \\n(PS
          780 ..
          781 .                \" FS - begin footnote
          782 .de FS
          783 .if \\n(IF>0 .tm .FS within .FS/.FE, line \\n(.c, file \\n(.F
          784 .if \\n(KF>0 .tm .FS won't work inside .KF, line \\n(.c, file \\n(.F
          785 .if \\n(KS>0 .tm .FS won't work inside .KS, line \\n(.c, file \\n(.F
          786 .nr IF 1
          787 .ev 1
          788 .ps \\n(PS-2
          789 .ie \\n(VS>=41 .vs \\n(VSu-2p
          790 .el .vs \\n(VSp-2p
          791 .ll \\n(LLu
          792 .br
          793 .nr X \\n(FOu
          794 .X "BF \\nX FS
          795 .SP .3v
          796 ....FA        \" deleted by authority of cvw, 10/17/88
          797 ..
          798 .                \" FE - end footnote
          799 .de FE
          800 .if !\\n(IF .tm .FE without .FS, line \\n(.c, file \\n(.F
          801 .br
          802 .X "END BF FE
          803 .bp
          804 .ev
          805 .nr IF 0
          806 ..
          807 .                \" FA - the line for a footnote
          808 .de FA
          809 \l'1i'
          810 .br
          811 ..
          812 .                \" Tm - message to be passed on
          813 .de Tm
          814 .ev 2
          815 .if \\n(.$=1 .X "TM \\$1
          816 .if \\n(.$=2 .X "TM \\$1 \\$2
          817 .if \\n(.$=3 .X "TM \\$1 \\$2 \\$3
          818 .if \\n(.$=4 .X "TM \\$1 \\$2 \\$3 \\$4
          819 .if \\n(.$=5 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5
          820 .if \\n(.$=6 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
          821 .if \\n(.$=7 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
          822 .if \\n(.$=8 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
          823 .if \\n(.$=9 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
          824 .br
          825 .ev
          826 ..
          827 .de MH
          828 AT&T Bell Laboratories
          829 Murray Hill, New Jersey 07974
          830 ..
          831 .de HO
          832 AT&T Bell Laboratories
          833 Holmdel, New Jersey 07733
          834 ..
          835 .de WH
          836 AT&T Bell Laboratories
          837 Whippany, New Jersey 07981
          838 ..
          839 .de IH
          840 AT&T Bell Laboratories
          841 Naperville, Illinois 60540
          842 ..
          843 .                \" UL - underline argument, don't italicize
          844 .de UL
          845 \\$1\l'|0\(ul'\\$2
          846 ..
          847 .                \" UX - print $2 UNIX $1
          848 .de UX
          849 .ie \\n(UX \\$2\s-1UNIX\s0\\$1
          850 .el \{\
          851 \\$2\s-1UNIX\\s0\\$1\(rg
          852 .nr UX 1\}
          853 ..
          854 .                \" QS - start quote
          855 .de QS
          856 .br
          857 .LP
          858 .in +\\n(QIu
          859 .ll -\\n(QIu
          860 ..
          861 .                \" QE - end quote
          862 .de QE
          863 .br
          864 .ll +\\n(QIu
          865 .in -\\n(QIu
          866 .LP
          867 ..
          868 .                \"  B1 - begin boxed stuff
          869 .de B1
          870 .br
          871 .di BB
          872 .nr BC 0
          873 .if "\\$1"C" .nr BC 1
          874 .nr BE 1
          875 ..
          876 .                \" B2 - end boxed stuff
          877 .de B2 
          878 .br
          879 .nr BI 1n
          880 .if \\n(.$>0 .nr BI \\$1n
          881 .di
          882 .nr BE 0
          883 .nr BW \\n(dl
          884 .nr BH \\n(dn
          885 .ne \\n(BHu+\\n(.Vu
          886 .nr BQ \\n(.j
          887 .nf
          888 .ti 0
          889 .if \\n(BC>0 .in +(\\n(.lu-\\n(BWu)/2u
          890 .in +\\n(BIu
          891 .ls 1
          892 .BB
          893 .ls
          894 .in -\\n(BIu
          895 .nr BW +2*\\n(BI
          896 .sp -1
          897 \l'\\n(BWu\(ul'\L'-\\n(BHu'\l'|0\(ul'\h'|0'\L'\\n(BHu'
          898 .if \\n(BC>0 .in -(\\n(.lu-\\n(BWu)/2u
          899 .if \\n(BQ .fi
          900 .br
          901 ..
          902 .                \" BX - boxed stuff
          903 .de BX
          904 \(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
          905 ..
          906 .
          907 .        \" macros for programs, etc.
          908 .
          909 .ig
          910         programs are displayed between .P1/.P2 pairs
          911         default is to indent by 1/2 inch, nofill, dP smaller
          912         .P1 x causes an indent of x instead.
          913 
          914         .P3 can be used to specify optional page-break points
          915         inside .P1/.P2
          916 ..
          917 .
          918 .                \" P1 - start of program
          919 .de P1
          920 .nr $1 \\n(P1
          921 .if \\n(.$ .nr $1 \\$1n
          922 .br
          923 .X "SP \\n(DV P1"
          924 .X "US P1"
          925 .in \\n($1u
          926 .nf
          927 .nr v \\n(.v
          928 .ps -\\n(dP
          929 .vs -\\n(dVu
          930 .ft CW
          931 .nr t \\n(dT*\\w'x'u
          932 .ta 1u*\\ntu 2u*\\ntu 3u*\\ntu 4u*\\ntu 5u*\\ntu 6u*\\ntu 7u*\\ntu 8u*\\ntu 9u*\\ntu 10u*\\ntu 11u*\\ntu 12u*\\ntu 13u*\\ntu 14u*\\ntu
          933 ..
          934 .                \" P2 - end of program
          935 .de P2
          936 .br
          937 .ps \\n(PS
          938 .vs \\nvu
          939 .ft 1
          940 .in
          941 .X "END US P1
          942 .X "SP \\n(DV P2"
          943 .fi
          944 ..
          945 .                \" P3 - provides optional unpadded break in P1/P2
          946 .de P3
          947 .nr x \\n(DV
          948 .nr DV 0
          949 .P2
          950 .P1 \\n($1u
          951 .nr DV \\nx
          952 ..
          953 .de [
          954 [
          955 ..
          956 .de ]
          957 ]
          958 ..
          959 .IZ
          960 .rm IZ
          961 .so /sys/lib/tmac/tmac.srefs