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