9base

revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log | Files | Refs | README | LICENSE

tmac.pm (17719B)


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