plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

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