Annotation of 43BSDReno/share/me/tmac.e, revision 1.1.1.1

1.1       root        1: .nr _0 \n(.c
                      2: .\" Copyright (c) 1988 The Regents of the University of California.
                      3: .\" All rights reserved.
                      4: .\"
                      5: .\" Redistribution and use in source and binary forms are permitted
                      6: .\" provided that the above copyright notice and this paragraph are
                      7: .\" duplicated in all such forms and that any documentation,
                      8: .\" advertising materials, and other materials related to such
                      9: .\" distribution and use acknowledge that the software was developed
                     10: .\" by the University of California, Berkeley.  The name of the
                     11: .\" University may not be used to endorse or promote products derived
                     12: .\" from this software without specific prior written permission.
                     13: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     14: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     15: .\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     16: .\"
                     17: .\"    @(#)tmac.e      2.34 (Berkeley) 6/2/90
                     18: .\"
                     19: .\"    %beginstrip%
                     20: .\"
                     21: .\"**********************************************************************
                     22: .\"*                                                                   *
                     23: .\"*   ******  - M E   N R O F F / T R O F F   M A C R O S  ******     *
                     24: .\"*                                                                   *
                     25: .\"*   Produced for your edification and enjoyment by:                 *
                     26: .\"*           Eric Allman                                             *
                     27: .\"*           Electronics Research Laboratory                         *
                     28: .\"*           U.C. Berkeley.                                          *
                     29: .\"*   current address:                                                *
                     30: .\"*           Britton-Lee, Inc.                                       *
                     31: .\"*           1919 Addison Street Suite 105                           *
                     32: .\"*           Berkeley, California  94704                             *
                     33: .\"*                                                                   *
                     34: .\"*   VERSION 2.34    First Release: 11 Sept 1978                     *
                     35: .\"*   See file \*(||/revisions for revision history                   *
                     36: .\"*                                                                   *
                     37: .\"*   Documentation is available.                                     *
                     38: .\"*                                                                   *
                     39: .\"**********************************************************************
                     40: .\"
                     41: .\"    Code on .de commands:
                     42: .\"            ***     a user interface macro.
                     43: .\"            &&&     a user interface macro which is redefined
                     44: .\"                    when used to be the real thing.
                     45: .\"            $$$     a macro which may be redefined by the user
                     46: .\"                    to provide variant functions.
                     47: .\"            ---     an internal macro.
                     48: .\"
                     49: .\" library directory for sourced files:
                     50: .ds || /usr/share/me
                     51: .if \n@>0 .ds || .
                     52: .\"
                     53: .if !\n(.V .tm You are using the wrong version of NROFF/TROFF!!
                     54: .if !\n(.V .tm This macro package works only on the version seven
                     55: .if !\n(.V .tm release of NROFF and TROFF.
                     56: .if !\n(.V .ex
                     57: .if \n(pf \
                     58: .      nx \*(||/null.me
                     59: .\"           *** INTERNAL GP MACROS ***
                     60: .de @C                 \" --- change ev's, taking info with us
                     61: .nr _S \\n(.s
                     62: .nr _V \\n(.v
                     63: .nr _F \\n(.f
                     64: .nr _I \\n(.i
                     65: .ev \\$1
                     66: .ps \\n(_S
                     67: .vs \\n(_Vu
                     68: .ft \\n(_F
                     69: 'in \\n(_Iu
                     70: .xl \\n($lu
                     71: .lt \\n($lu
                     72: .rr _S
                     73: .rr _V
                     74: .rr _F
                     75: .rr _I
                     76: .ls 1
                     77: 'ce 0
                     78: ..
                     79: .de @D                 \" --- determine display type (Indent, Left, Center)
                     80: .ds |p "\\$3
                     81: .nr _d \\$1
                     82: .ie "\\$2"C" \
                     83: .      nr _d 1
                     84: .el .ie "\\$2"L" \
                     85: .      nr _d 2
                     86: .el .ie "\\$2"I" \
                     87: .      nr _d 3
                     88: .el .ie "\\$2"M" \
                     89: .      nr _d 4
                     90: .el \
                     91: .      ds |p "\\$2
                     92: ..
                     93: .de @z                 \" --- end macro
                     94: .if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
                     95: .if !"\\n(.z"" \
                     96: \{\
                     97: .      tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
                     98: .      di
                     99: .      ex
                    100: .\}
                    101: .if \\n(?a \
                    102: .      bp                      \" force out final table
                    103: .rm bp
                    104: .rm @b\"                       \" don't start another page
                    105: .if t \
                    106: .      wh -1p @m
                    107: .br
                    108: .if \n@>1 .tm << @z
                    109: ..
                    110: .de @I                 \" --- initialize processor
                    111: .rm th
                    112: .rm ac
                    113: .rm lo
                    114: .rm sc
                    115: .rm @I
                    116: ..
                    117: .\"           *** STANDARD HEADERS AND FOOTERS ***
                    118: .de he                 \" *** define header
                    119: .ie !\\n(.$ \
                    120: \{\
                    121: .      rm |4
                    122: .      rm |5
                    123: .\}
                    124: .el \
                    125: \{\
                    126: .      ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    127: .      ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    128: .\}
                    129: ..
                    130: .de eh                 \" *** define even header
                    131: .ie !\\n(.$ \
                    132: .      rm |4
                    133: .el \
                    134: .      ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    135: ..
                    136: .de oh                 \" *** define odd header
                    137: .ie !\\n(.$ \
                    138: .      rm |5
                    139: .el \
                    140: .      ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    141: ..
                    142: .de fo                 \" *** define footer
                    143: .ie !\\n(.$ \
                    144: \{\
                    145: .      rm |6
                    146: .      rm |7
                    147: .\}
                    148: .el \
                    149: \{\
                    150: .      ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    151: .      ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    152: .\}
                    153: ..
                    154: .de ef                 \" *** define even foot
                    155: .ie !\\n(.$ \
                    156: .      rm |6
                    157: .el \
                    158: .      ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    159: ..
                    160: .de of                 \" *** define odd footer
                    161: .ie !\\n(.$ \
                    162: .      rm |7
                    163: .el \
                    164: .      ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    165: ..
                    166: .de ep                 \" *** end page (must always be followed by a .bp)
                    167: .if \\n(nl>0 \
                    168: \{\
                    169: .      wh 0
                    170: .      rs
                    171: .      @b
                    172: .\}
                    173: ..
                    174: .\"           *** INTERNAL HEADER AND FOOTER MACROS ***
                    175: .de @h                 \" --- header
                    176: .if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
                    177: .if (\\n(.i+\\n(.o)>=\\n(.l \
                    178: .      tm Line \\n(c. -- Offset + indent exceeds line length
                    179: .if t .if (\\n(.l+\\n(.o)>7.75i \
                    180: .      tm Line \\n(c. -- Offset + line length exceeds paper width
                    181: .\" initialize a pile of junk
                    182: .nr ?h \\n(?H                  \" transfer "next page" to "this page"
                    183: .rr ?H
                    184: .nr ?c \\n(?C
                    185: .rr ?C
                    186: .rn |4 |0
                    187: .rn |5 |1
                    188: .rn |6 |2
                    189: .rn |7 |3
                    190: .nr _w 0                       \" reset max footnote width
                    191: .nr ?W 0                       \" no wide floats this page (yet)
                    192: .nr ?I 1
                    193: .\" begin actual header stuff
                    194: .ev 2
                    195: .rs
                    196: .if t .@m                      \" output cut mark
                    197: .if \\n(hm>0 \
                    198: .      sp |\\n(hmu             \" move to header position
                    199: .@t $h                         \" output header title
                    200: .if \\n(tm<=0 \
                    201: .      nr tm \n(.Vu
                    202: .sp |\\n(tmu                   \" move to top of text
                    203: .ev
                    204: .mk _k                         \" for columned output
                    205: .if \\n(?n .nm 1               \" restore line numbering if n1 mode
                    206: .nr $c 1                       \" set first column
                    207: .if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
                    208: .ie \\n(?s \
                    209: \{\
                    210: .      rr ?s
                    211: .      rs
                    212: '      @b
                    213: .\}
                    214: .el \
                    215: .      @n                      \" begin the column
                    216: .if \n@>2 .tm << @h
                    217: ..
                    218: .if \nv=2 \
                    219: \{\
                    220: .      de @m           \" --- output cut mark (only on C/A/T-style)
                    221: .      @O 0
                    222: .      lt 7.5i
                    223: .      tl '\(rn''\(rn'
                    224: .      @O
                    225: .      lt
                    226: ..
                    227: .\}
                    228: .de @n                 \" --- new column or page
                    229: .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
                    230: .if \\n(bm<=0 \
                    231: .      nr bm \\n(.Vu
                    232: .if (\\n(_w<=\\n($l)&(\\n(?W=0) \
                    233: \{\
                    234: .      nr _b (\\n(ppu*\\n($ru)/2u      \" compute fudge factor (must be < 1P)
                    235: .      if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
                    236: .              nr _b (\\n(ppu*\\n($ru)-\n(.Vu
                    237: .      nr _b +\\n(bmu
                    238: .\}
                    239: .nr _B \\n(_bu
                    240: .ch @f
                    241: .wh -\\n(_bu @f
                    242: .nr _b +(\\n(ppu*\\n($ru)      \" add 1 paragraph v in case of sweep past
                    243: .if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
                    244: .nr ?f 0                       \" reset footnote flag
                    245: .if \\n(?o \
                    246: \{\
                    247: .      (f _                    \" reprocess footnotes which run off page
                    248: .      nf
                    249: .      |o
                    250: .      fi
                    251: .      )f
                    252: .      rm |o
                    253: .\}
                    254: .nr ?o 0
                    255: .if \\n(?T \
                    256: \{\
                    257: .      nr _i \\n(.i
                    258: .      in \\n($iu
                    259: .      |h                      \" output the table header
                    260: .      in \\n(_iu
                    261: .      rr _i
                    262: .      mk #T                   \" for tbl commands
                    263: .      ns
                    264: .\}
                    265: .if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
                    266: \{\
                    267: .      nr ?a 0                 \" output floating keep
                    268: .      @k |t
                    269: .      if \\n(?w \
                    270: .              mk _k           \" don't overstrike wide keeps
                    271: .      nr ?w 0
                    272: .\}
                    273: .os
                    274: .$H                            \" special column header macro
                    275: .ns
                    276: ..
                    277: .de @f                 \" --- footer
                    278: .if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
                    279: .if \n@>2 .nr VL \\n(.pu-\\n(nlu
                    280: .if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
                    281: .ec
                    282: .if \\n(?T \
                    283: \{\
                    284: .      nr T. 1                 \" for tbl commands (to output bottom line)
                    285: .      T# 1                    \" output the sides and bottom lines
                    286: .      br
                    287: .\}
                    288: .ev 2
                    289: .ce 0
                    290: .if \\n(?b \
                    291: \{\
                    292: .      nr ?b 0
                    293: .      @k |b\"                 \" output bottom of page tables
                    294: .\}
                    295: .if \\n(?f \
                    296: .      @o                      \" output footnote if present
                    297: .ie \\n($c<\\n($m \
                    298: .      @c                      \" handle new column
                    299: .el \
                    300: .      @e                      \" new page
                    301: .ev
                    302: .if \n@>2 .tm << @f
                    303: ..
                    304: .de @o                 \" --- output footnote
                    305: .nf
                    306: .ls 1
                    307: .in 0
                    308: .if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
                    309: .wh -\\n(_Bu @r
                    310: .|f
                    311: .fi
                    312: .if \n@>2 .tm @o triggered @r (?o) = \\n(?o
                    313: .if \\n(?o \
                    314: \{\
                    315: .      di                      \" just in case triggered @r
                    316: .      if \\n(dn=0 \
                    317: \{\
                    318: .              rm |o
                    319: .              nr ?o 0
                    320: .      \}
                    321: .      nr dn \\n(_D
                    322: .      rr _D
                    323: .\}
                    324: .rm |f
                    325: .ch @r
                    326: ..
                    327: .de @c                 \" --- new column
                    328: .if \n@>2 .tm  >> @c %=\\n%
                    329: .rs
                    330: .sp |\\n(_ku
                    331: .@O +\\n($lu+\\n($su
                    332: .nr $c +1
                    333: .@n
                    334: ..
                    335: .de @e                 \" --- end page
                    336: .if \n@>2 .tm  >> @e
                    337: .@O \\n(_ou
                    338: .rs
                    339: .sp |\\n(.pu-\\n(fmu-(\\n(tpu*\\n($ru) \" move to footer position
                    340: .@t $f                         \" output footer title
                    341: .nr ?h 0
                    342: .bp
                    343: ..
                    344: .de @t                 \" --- output header or footer title
                    345: .if !\\n(?h \
                    346: \{\
                    347: .      sz \\n(tp               \" set header/footer type fonts, etc.
                    348: .      @F \\n(tf
                    349: .      lt \\n(_Lu              \" make title span entire page
                    350: .      nf
                    351: .      \\$1
                    352: .      br
                    353: .\}
                    354: ..
                    355: .de $h                 \" $$$ print header
                    356: .rm |z
                    357: .if !\\n(?c \
                    358: \{\
                    359: .      if e .ds |z "\\*(|0
                    360: .      if o .ds |z "\\*(|1
                    361: .\}
                    362: .if !\(ts\\*(|z\(ts\(ts \
                    363: '      tl \\*(|z
                    364: .rm |z
                    365: ..
                    366: .de $f                 \" $$$ print footer
                    367: .rm |z
                    368: .if \\n(?c \
                    369: \{\
                    370: .      if e .ds |z "\\*(|0
                    371: .      if o .ds |z "\\*(|1
                    372: .\}
                    373: .if \(ts\\*(|z\(ts\(ts \
                    374: \{\
                    375: .      if e .ds |z "\\*(|2
                    376: .      if o .ds |z "\\*(|3
                    377: .\}
                    378: .if !\(ts\\*(|z\(ts\(ts \
                    379: '      tl \\*(|z
                    380: .rm |z
                    381: ..
                    382: .de @r                 \" --- reprocess overflow footnotes
                    383: .if \n@>3 .tm          >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
                    384: .di |o                         \" save overflow footnote
                    385: .nr ?o 1
                    386: .nr _D \\n(dn
                    387: .ns
                    388: ..
                    389: .\"           *** COMMANDS WITH VARIANT DEFINITIONS ***
                    390: .rn bp @b              \" --- begin page
                    391: .de bp                 \" *** begin new page (overrides columns)
                    392: .nr $c \\n($m                  \" force new page, not new column
                    393: .ie \\n(nl>0 \
                    394: .      @b \\$1
                    395: .el \
                    396: \{\
                    397: .      if \\n(.$>0 \
                    398: .              pn \\$1
                    399: .      if \\n(?I \
                    400: .              @h              \" 'spring' the header trap
                    401: .\}
                    402: .br
                    403: .wh 0 @h                       \" reset header
                    404: ..
                    405: .rn ll xl              \" *** special line length (local)
                    406: .de ll                 \" *** line length (global to environments)
                    407: .xl \\$1
                    408: .lt \\$1
                    409: .nr $l \\n(.l
                    410: .if (\\n($m<=1):(\\n($l>\\n(_L) \
                    411: .      nr _L \\n(.l
                    412: ..
                    413: .rn po @O              \" --- local page offset
                    414: .de po                 \" *** page offset
                    415: .@O \\$1
                    416: .nr _o \\n(.o
                    417: ..
                    418: .\"           *** MISCELLANEOUS ROFF COMMANDS ***
                    419: .de hx                 \" *** suppress headers and footers next page
                    420: .nr ?H 1
                    421: ..
                    422: .de ix                 \" *** indent, no break
                    423: 'in \\$1
                    424: ..
                    425: .de bl                 \" *** contiguous blank lines
                    426: .br
                    427: .ne \\$1
                    428: .rs
                    429: .sp \\$1
                    430: ..
                    431: .de n1                 \" *** line numbering 1
                    432: .nm 1
                    433: .xl -\w'0000'u
                    434: .nr ?n 1
                    435: ..
                    436: .de n2                 \" *** line numbering 2
                    437: .nm \\$1
                    438: .ie \\n(.$ \
                    439: .      xl -\w'0000'u
                    440: .el \
                    441: .      xl \\n($lu
                    442: ..
                    443: .de pa                 \" *** new page
                    444: .bp \\$1
                    445: ..
                    446: .de ro                 \" *** roman page numbers
                    447: .af % i
                    448: ..
                    449: .de ar                 \" *** arabic page numbers
                    450: .af % 1
                    451: ..
                    452: .de m1                 \" *** position one space
                    453: .nr _0 \\n(hmu
                    454: .nr hm \\$1v
                    455: .nr tm +\\n(hmu-\\n(_0u
                    456: .rr _0
                    457: ..
                    458: .de m2                 \" *** position two space
                    459: .nr tm \\n(hmu+\\n(tpp+\\$1v
                    460: ..
                    461: .de m3                 \" *** position three space
                    462: .nr bm \\n(fmu+\\n(tpp+\\$1v
                    463: ..
                    464: .de m4                 \" *** position four space
                    465: .nr _0 \\n(fmu
                    466: .nr fm \\$1v
                    467: .nr bm +\\n(fmu-\\n(_0u
                    468: ..
                    469: .de sk                 \" *** leave a blank page (next page)
                    470: .if \\n(.$>0 \
                    471: .      tm Line \\n(c. -- I cannot skip multiple pages
                    472: .nr ?s 1
                    473: ..
                    474: .\"           *** MISCELLANEOUS USER SUPPORT COMMANDS ***
                    475: .de re                 \" *** reset tabs (TROFF defines 15 stops default)
                    476: .ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
                    477: ..
                    478: .if t .ig
                    479: .de re                 \" *** reset tabs (NROFF version)
                    480: .ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
                    481: ..
                    482: .de ba                 \" *** set base indent
                    483: .ie \\n(.$ \
                    484: .      nr $i \\$1n
                    485: .el \
                    486: .      nr $i \\n(siu*\\n($0u
                    487: ..
                    488: .de hl                 \" *** draw horizontal line
                    489: .br
                    490: \l'\\n(.lu-\\n(.iu'
                    491: .sp
                    492: ..
                    493: .\"           *** PARAGRAPHING ***
                    494: .de pp                 \" *** paragraph
                    495: .lp \\n(piu
                    496: ..
                    497: .de lp                 \" *** left aligned paragraph
                    498: .@p
                    499: .if \\n(.$ \
                    500: .      ti +\\$1
                    501: .nr $p 0 1
                    502: ..
                    503: .de ip                 \" *** indented paragraph w/ optional tag
                    504: .if (\\n(ii>0)&(\\n(ii<1n) \
                    505: .      nr ii \\n(iin
                    506: .nr _0 \\n(ii
                    507: .if \\n(.$>1 \
                    508: .      nr _0 \\$2n
                    509: .@p \\n(_0u
                    510: .if \\w"\\$1" \
                    511: \{\
                    512: .      ti -\\n(_0u
                    513: .      ie \\w"\\$1">=\\n(_0 \
                    514: \{\
                    515: \&\\$1
                    516: .              br
                    517: .      \}
                    518: .      el \&\\$1\h'|\\n(_0u'\c
                    519: .\}
                    520: .rr _0
                    521: ..
                    522: .de np                 \" *** numbered paragraph
                    523: .if \\n($p<0 \
                    524: .      nr $p 0                 \" reset number after .bu
                    525: .nr $p +1                      \" increment paragraph number
                    526: .@p \w'\0(000)\0'u
                    527: .ti -\w'\0(000)\0'u
                    528: \0(\\n($p)\h'|\w'\0(000)\0'u'\c
                    529: ..
                    530: .de bu                 \" *** bulleted paragraph
                    531: .br
                    532: .if \\n($p<0 \
                    533: .      ns                      \" don't space between .bu paragraphs
                    534: .nr $p 0-1                     \" mark "bulleted paragraph" mode
                    535: .@p \w'\0\(bu\0'u
                    536: .ti -\w'\0\(bu\0'u
                    537: \0\(bu\0\c
                    538: ..
                    539: .de @p                 \" --- initialize for paragraph
                    540: .@I                            \" initialize macro processor
                    541: .if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
                    542: .in \\n($iu+\\n(pou
                    543: .if \\n(.$ \
                    544: .      in +\\$1n
                    545: .ce 0
                    546: .fi
                    547: .@F \\n(pf
                    548: .sz \\n(pp
                    549: .sp \\n(psu
                    550: .ne \\n(.Lv+\\n(.Vu
                    551: .ns
                    552: ..
                    553: .\"           *** SECTION HEADINGS ***
                    554: .de sh                 \" &&& section heading
                    555: .rn sh @T
                    556: .so \\*(||/sh.me
                    557: .sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
                    558: .rm @T
                    559: ..
                    560: .de $p                 \" $$$ print section heading
                    561: .if (\\n(si>0)&(\\n(.$>2) \
                    562: .      nr $i \\$3*\\n(si
                    563: .in \\n($iu
                    564: .ie !"\\$1\\$2"" \
                    565: \{\
                    566: .      sp \\n(ssu              \" one of them is non-null
                    567: .      ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu)
                    568: .      ie \\n(.$>2 \
                    569: .              ti -(\\n(siu-\\n(sou)
                    570: .      el \
                    571: .              ti +\\n(sou
                    572: .      @F \\n(sf
                    573: .      sz \\n(sp
                    574: .      if \\$3>0 \
                    575: .              $\\$3
                    576: .      if \w"\\$2">0 \\$2.
                    577: .      if \w"\\$1">0 \\$1\f1\ \ \&
                    578: .\}
                    579: .el \
                    580: .      sp \\n(psu
                    581: .@F \\n(pf
                    582: .sz \\n(pp
                    583: ..
                    584: .de uh                 \" *** unnumbered section heading
                    585: .rn uh @T
                    586: .so \\*(||/sh.me
                    587: .uh "\\$1"
                    588: .rm @T
                    589: ..
                    590: .\"           *** COLUMNNED OUTPUT ***
                    591: .de 2c                 \" *** double columned output
                    592: .br
                    593: .if \\n($m>1 \
                    594: .      1c                      \" revert to 1c if already 2c
                    595: .nr $c 1
                    596: .nr $m 2
                    597: .if \\n(.$>1 \
                    598: .      nr $m \\$2
                    599: .if \\n(.$>0 \
                    600: .      nr $s \\$1n             \" param 1: column seperation
                    601: .nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
                    602: .xl \\n($lu
                    603: .mk _k
                    604: .ns
                    605: ..
                    606: .de 1c                 \" *** single columned output
                    607: .br
                    608: .nr $c 1
                    609: .nr $m 1
                    610: .ll \\n(_Lu                    \" return to normal output
                    611: .sp |\\n(.hu
                    612: .@O \\n(_ou
                    613: ..
                    614: .de bc                 \" *** begin column
                    615: .sp 24i
                    616: ..
                    617: .\"           *** FLOATING TABLES AND NONFLOATING BLOCKS ***
                    618: .de (z                 \" &&& begin floating keep
                    619: .rn (z @V
                    620: .so \\*(||/float.me
                    621: .(z \\$1 \\$2
                    622: .rm @V
                    623: ..
                    624: .de )z                 \" &&& end floating keep
                    625: .tm Line \\n(c. -- unmatched .)z
                    626: ..
                    627: .de (t                 \" XXX temp ref to (z
                    628: .(z \\$1 \\$2
                    629: ..
                    630: .de )t                 \" XXX temp ref to )t
                    631: .)z \\$1 \\$2
                    632: ..
                    633: .de (b                 \" *** begin block
                    634: .br
                    635: .@D 3 \\$1 \\$2
                    636: .sp \\n(bsu
                    637: .@(
                    638: ..
                    639: .de )b                 \" *** end block
                    640: .br
                    641: .@)
                    642: .if (\\n(bt=0):(\\n(.t<\\n(bt) \
                    643: .      ne \\n(dnu              \" make it all on one page
                    644: .ls 1
                    645: .nf
                    646: .|k
                    647: .ec
                    648: .fi
                    649: .in 0
                    650: .xl \\n($lu
                    651: .ev
                    652: .rm |k
                    653: .sp \\n(bsu+\\n(.Lv-1v
                    654: ..
                    655: .de @(                 \" --- begin keep
                    656: .if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
                    657: .@M
                    658: .di |k
                    659: \!'rs
                    660: ..
                    661: .de @M                 \" --- set modes for display
                    662: .nr ?k 1
                    663: .@C 1
                    664: .@F \\n(df
                    665: .vs \\n(.su*\\n($Ru
                    666: .nf
                    667: .if "\\*(|p"F" \
                    668: .      fi                      \" set fill mode if "F" parameter
                    669: .if \\n(_d=4 \
                    670: .      in 0
                    671: .if \\n(_d=3 \
                    672: \{\
                    673: .      in +\\n(biu
                    674: .      xl -\\n(biu
                    675: .\}
                    676: .if \\n(_d=1 \
                    677: .      ce 10000
                    678: ..
                    679: .de @)                 \" --- end keep
                    680: .br
                    681: .if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
                    682: .nr ?k 0
                    683: .di
                    684: .in 0
                    685: .ce 0
                    686: ..
                    687: .de (c                 \" *** begin block centered text
                    688: .if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
                    689: .di |c
                    690: ..
                    691: .de )c                 \" *** end block centered text
                    692: .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
                    693: .br                            \" force out final line
                    694: .di
                    695: .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
                    696: .ev 1
                    697: .ls 1
                    698: .in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
                    699: .if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
                    700: .nf
                    701: .|c
                    702: .ec
                    703: .in
                    704: .ls
                    705: .ev
                    706: .rm |c
                    707: ..
                    708: .\"           *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
                    709: .de (q                 \" *** begin block quote
                    710: .br
                    711: .@C 1
                    712: .fi
                    713: .sp \\n(qsu
                    714: .in +\\n(qiu
                    715: .xl -\\n(qiu
                    716: .sz \\n(qp
                    717: ..
                    718: .de )q                 \" *** end block quote
                    719: .br
                    720: .ev
                    721: .sp \\n(qsu+\\n(.Lv-1v
                    722: .nr ?k 0
                    723: ..
                    724: .de (l                 \" *** begin list
                    725: .br
                    726: .sp \\n(bsu
                    727: .@D 3 \\$1 \\$2
                    728: .@M
                    729: ..
                    730: .de )l                 \" *** end list
                    731: .br
                    732: .ev
                    733: .sp \\n(bsu+\\n(.Lv-1v
                    734: .nr ?k 0
                    735: ..
                    736: .\"           *** PREPROCESSOR SUPPORT ***
                    737: .\"
                    738: .\"    EQN
                    739: .\"
                    740: .de EQ                 \" &&& begin equation
                    741: .rn EQ @T
                    742: .so \\*(||/eqn.me
                    743: .EQ \\$1 \\$2
                    744: .rm @T
                    745: ..
                    746: .\"
                    747: .\"    TBL
                    748: .\"
                    749: .de TS                 \" &&& begin table
                    750: .rn TS @W
                    751: .so \\*(||/tbl.me
                    752: .TS \\$1 \\$2
                    753: .rm @W
                    754: ..
                    755: .\"
                    756: .\"    REFER
                    757: .\"
                    758: .de ]-                 \" &&& initialize reference
                    759: .rn ]- @]
                    760: .so \\*(||/refer.me
                    761: .]-
                    762: .rm @]
                    763: ..
                    764: .de ]<                 \" &&& initialize reference
                    765: .rn ]< @]
                    766: .so \\*(||/refer.me
                    767: .]<
                    768: .rm @]
                    769: ..
                    770: .if n .ds [. " [
                    771: .if t .ds [. \s-2\v'-.4m'\f1
                    772: .if n .ds .] ]
                    773: .if t .ds .] \v'.4m'\s+2\fP
                    774: .if n .ds <. "
                    775: .if t .ds <. .
                    776: .if n .ds >. .
                    777: .if t .ds >. "
                    778: .\"
                    779: .\"    IDEAL
                    780: .\"
                    781: .de IS                 \" *** start ideal picture
                    782: .nr g7 \\n(.u
                    783: .ls 1
                    784: ..
                    785: .de IF
                    786: .if \\n(g7 .fi
                    787: .ls
                    788: ..
                    789: .de IE                 \" *** end ideal picture
                    790: .if \\n(g7 .fi
                    791: .ls
                    792: ..
                    793: .\"
                    794: .\"    PIC
                    795: .\"
                    796: .de PS         \" *** start picture: $1=height, $2=width in units or inches
                    797: .if t \
                    798: .      sp 0.3
                    799: .nr g7 \\$2
                    800: .in (\\n(.lu-\\n(g7u)/2u
                    801: .ne \\$1u
                    802: .nr g7 \\n(.u
                    803: .ls 1
                    804: ..
                    805: .de PE                 \" *** end picture
                    806: .ls
                    807: .in
                    808: .if \\n(g7 .fi
                    809: .if t .sp .6
                    810: ..
                    811: .\"
                    812: .\"    GREMLIN
                    813: .\"
                    814: .de GS                 \" *** start gremlin picture
                    815: .nr g7 (\\n(.lu-\\n(g1u)/2u
                    816: .if "\\$1"L" .nr g7 \\n(.iu
                    817: .if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
                    818: .in \\n(g7u
                    819: .nr g7 \\n(.u
                    820: .ls 1
                    821: .nf
                    822: .ne \\n(g2u
                    823: ..
                    824: .de GE                 \" *** end gremlin picture
                    825: .GF
                    826: .if t .sp .6
                    827: ..
                    828: .de GF                 \" *** finish gremlin picture; stay at top
                    829: .ls
                    830: .in
                    831: .if \\n(g7 .fi
                    832: ..
                    833: .\"           *** FONT AIDS ***
                    834: .de sz                 \" *** set point size and vertical spacing
                    835: .ps \\$1
                    836: .vs \\n(.su*\\n($ru            \" default vs at pointsize + 20%
                    837: .bd S B \\n(.su/3u
                    838: ..
                    839: .de r                  \" *** enter roman font
                    840: .nr _F \\n(.f
                    841: .ul 0
                    842: .ft 1
                    843: .if \\n(.$ \&\\$1\f\\n(_F\\$2
                    844: .rr _F
                    845: ..
                    846: .de i                  \" *** enter italic
                    847: .nr _F \\n(.f
                    848: .ul 0
                    849: .ft 2
                    850: .if \\n(.$ \&\\$1\f\\n(_F\\$2
                    851: .rr _F
                    852: ..
                    853: .de b                  \" *** enter boldface (underline in NROFF)
                    854: .nr _F \\n(.f
                    855: .ul 0
                    856: .ft \\n($b
                    857: .if \\n(.$ \&\\$1\f\\n(_F\\$2
                    858: .rr _F
                    859: ..
                    860: .de rb                 \" *** enter real boldface (not underlined in NROFF)
                    861: .nr _F \\n(.f
                    862: .ul 0
                    863: .ft 3
                    864: .if \\n(.$ \&\\$1\f\\n(_F\\$2
                    865: .rr _F
                    866: ..
                    867: .de u                  \" *** enter underlined word
                    868: \&\\$1\l'|0\(ul'\\$2
                    869: ..
                    870: .de q                  \" *** enter quoted word
                    871: \&\\*(lq\\$1\\*(rq\\$2
                    872: ..
                    873: .de bi                 \" *** enter word in bold italics
                    874: .ft 2
                    875: .ie t \&\k~\\$1\h'|\\n~u+(\\w' 'u/4u)'\\$1\fP\\$2
                    876: .el \&\\$1\fP\\$2
                    877: ..
                    878: .de bx                 \" *** enter boxed word
                    879: .ie \\n($T \&\f2\\$1\fP\\$2
                    880: .el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
                    881: ..
                    882: .de sm                 \" *** print in smaller font
                    883: \s-1\\$1\\s0\\$2
                    884: ..
                    885: .de @F                 \" --- change font (8 -> underlined, 0 -> no change)
                    886: .nr ~ \\$1
                    887: .if \\n~>0 \
                    888: \{\
                    889: .      ul 0
                    890: .      if \\n~=8 \
                    891: .              nr ~ \\n($b
                    892: .      ft \\n~
                    893: .\}
                    894: .rr ~
                    895: ..
                    896: .\"           *** FOOTNOTING ***
                    897: .de (f                 \" &&& begin footnote
                    898: .rn (f @U
                    899: .so \\*(||/footnote.me
                    900: .(f \\$1 \\$2
                    901: .rm @U
                    902: ..
                    903: .de )f                 \" &&& end footnote
                    904: .tm Line \\n(c. -- unmatched .)f
                    905: ..
                    906: .de $s                 \" $$$ footnote separator
                    907: \l'2i'
                    908: .if n \
                    909: .      sp 0.3
                    910: ..
                    911: .\"           *** DELAYED TEXT ***
                    912: .de (d                 \" &&& begin delayed text
                    913: .rn (d @U
                    914: .so \\*(||/deltext.me
                    915: .(d \\$1 \\$2
                    916: .rm @U
                    917: ..
                    918: .de )d                 \" &&& end delayed text
                    919: .tm Line \\n(c. -- unmatched .)d
                    920: ..
                    921: .\"           *** INDEXES (TABLE OF CONTENTS) ***
                    922: .de (x                 \" &&& begin index
                    923: .rn (x @U
                    924: .so \\*(||/index.me
                    925: .(x \\$1 \\$2
                    926: .rm @U
                    927: ..
                    928: .de )x                 \" &&& end index entry
                    929: .tm Line \\n(c. -- unmatched .)x
                    930: ..
                    931: .\"           *** STUFF FOR "STANDARD" PAPERS ***
                    932: .de th                 \" *** set "thesis" mode
                    933: .so \\*(||/thesis.me
                    934: .rm th
                    935: ..
                    936: .de +c                 \" *** begin chapter
                    937: .ep                            \" force out footnotes
                    938: .if \\n(?o:\\n(?a \
                    939: \{\
                    940: .      bp                      \" force out a table or more footnote
                    941: .      rs
                    942: .      ep
                    943: .\}
                    944: .nr ?C 1
                    945: .nr $f 1 1
                    946: .ds * \\*[1\\*]\k*
                    947: .if \\n(?R \
                    948: .      pn 1
                    949: .bp
                    950: .in \\n($iu                    \" reset the indent
                    951: .rs
                    952: .ie \\n(.$ \
                    953: .      $c "\\$1"
                    954: .el \
                    955: .      sp 3
                    956: ..
                    957: .de ++                 \" *** declare chapter type
                    958: .nr _0 0
                    959: .if "\\$1"C" \
                    960: .      nr _0 1                 \" chapter
                    961: .if "\\$1"RC" \
                    962: .      nr _0 11                \" renumbered chapter
                    963: .if "\\$1"A" \
                    964: .      nr _0 2                 \" appendix
                    965: .if "\\$1"RA" \
                    966: .      nr _0 12                \" renumbered appendix
                    967: .if "\\$1"P" \
                    968: .      nr _0 3                 \" preliminary material
                    969: .if "\\$1"B" \
                    970: .      nr _0 4                 \" bibliographic material
                    971: .if "\\$1"AB" \
                    972: .      nr _0 5                 \" abstract
                    973: .if \\n(_0=0 \
                    974: .      tm Line \\n(c. -- Bad mode to .++
                    975: .nr ?R 0
                    976: .if \\n(_0>10 \
                    977: .\{
                    978: .      nr ?R 1
                    979: .      nr _0 -10
                    980: .\}
                    981: .nr ch 0 1
                    982: .if (\\n(_0=3):(\\n(_0=5) \
                    983: .      pn 1                    \" must do before .ep
                    984: .ep                            \" end page for correct page number types
                    985: .if \\n(_0=1 \
                    986: \{\
                    987: .      af ch 1
                    988: .      af % 1
                    989: .\}
                    990: .if \\n(_0=2 \
                    991: \{\
                    992: .      af ch A
                    993: .      af % 1
                    994: .\}
                    995: .if \\n(_0=3 \
                    996: .      af % i
                    997: .if \\n(_0=4 \
                    998: .      af % 1
                    999: .if \\n(_0=5 \
                   1000: .      af % 1
                   1001: .if \\n(.$>1 \
                   1002: .      he \\$2
                   1003: .if !\\n(_0=\\n(_M .if \\n(_M=3 \
                   1004: .      pn 1
                   1005: .nr _M \\n(_0
                   1006: .rr _0
                   1007: ..
                   1008: .de $c                 \" $$$ print chapter title
                   1009: .sz 12
                   1010: .ft B
                   1011: .ce 1000
                   1012: .if \\n(_M<3 \
                   1013: .      nr ch +1
                   1014: .ie \\n(_M=1 CHAPTER\ \ \\n(ch
                   1015: .el .if \\n(_M=2 APPENDIX\ \ \\n(ch
                   1016: .if \w"\\$1" .sp 3-\\n(.L
                   1017: .if \w"\\$1" \\$1
                   1018: .if (\\n(_M<3):(\w"\\$1") \
                   1019: .      sp 4-\\n(.L
                   1020: .ce 0
                   1021: .ft
                   1022: .sz
                   1023: .ie \\n(_M=1 \
                   1024: .      $C Chapter \\n(ch "\\$1"
                   1025: .el .if \\n(_M=2 \
                   1026: .      $C Appendix \\n(ch "\\$1"
                   1027: ..
                   1028: .de tp                 \" *** title page
                   1029: .hx
                   1030: .bp
                   1031: .br
                   1032: .rs
                   1033: .pn \\n%
                   1034: ..
                   1035: .de ac                 \" *** setup for ACM photo-ready paper
                   1036: .rn ac @T
                   1037: .so \\*(||/acm.me
                   1038: .ac "\\$1" "\\$2"
                   1039: .rm @T
                   1040: ..
                   1041: .de lo                 \" *** pull in the set of local macros
                   1042: .\" all these macros should be named "*X", where X is any letter
                   1043: .so \\*(||/local.me
                   1044: .rm lo
                   1045: ..
                   1046: .de lh                 \" *** letterhead
                   1047: .so \\*(||/letterhead.me
                   1048: ..
                   1049: .\"           *** DATES ***
                   1050: .if \n(mo=1 .ds mo January
                   1051: .if \n(mo=2 .ds mo February
                   1052: .if \n(mo=3 .ds mo March
                   1053: .if \n(mo=4 .ds mo April
                   1054: .if \n(mo=5 .ds mo May
                   1055: .if \n(mo=6 .ds mo June
                   1056: .if \n(mo=7 .ds mo July
                   1057: .if \n(mo=8 .ds mo August
                   1058: .if \n(mo=9 .ds mo September
                   1059: .if \n(mo=10 .ds mo October
                   1060: .if \n(mo=11 .ds mo November
                   1061: .if \n(mo=12 .ds mo December
                   1062: .if \n(dw=1 .ds dw Sunday
                   1063: .if \n(dw=2 .ds dw Monday
                   1064: .if \n(dw=3 .ds dw Tuesday
                   1065: .if \n(dw=4 .ds dw Wednesday
                   1066: .if \n(dw=5 .ds dw Thursday
                   1067: .if \n(dw=6 .ds dw Friday
                   1068: .if \n(dw=7 .ds dw Saturday
                   1069: .ds td \*(mo \n(dy, 19\n(yr
                   1070: .\"           *** PARAMETRIC INITIALIZATIONS ***
                   1071: .if (1m<0.1i)&(\nx!=0) \
                   1072: .      vs 9p                   \" for 12-pitch DTC terminals
                   1073: .rr x
                   1074: .nr $r \n(.v/\n(.s             \" ratio of vs to ps for .sz request
                   1075: .nr $R \n($r                   \" ratio for displays & footnotes
                   1076: .nr hm 4v                      \" header margin
                   1077: .nr tm 7v                      \" top margin
                   1078: .nr bm 6v                      \" bottom margin
                   1079: .nr fm 3v                      \" footer margin
                   1080: .nr tf 3                       \" title font: (real) Times Bold
                   1081: .nr tp 10                      \" title point size
                   1082: .hy 14
                   1083: .nr bi 4m                      \" indent for blocks
                   1084: .nr pi 5n                      \" indent for paragraphs
                   1085: .nr pf 1                       \" normal text font
                   1086: .nr pp 10                      \" normal text point size
                   1087: .nr qi 4n                      \" indent for quotes
                   1088: .nr qp -1                      \" down one point
                   1089: .nr ii 5n                      \" indent for .ip's and .np's
                   1090: .nr $m 1                       \" max number of columns
                   1091: .nr $s 4n                      \" column separation
                   1092: .bd S B 3
                   1093: .\"           *** OTHER INITIALIZATION ***
                   1094: .ds [ \u\x'-0.25v'
                   1095: .ds ] \d
                   1096: .ds < \d\x'0.25v'
                   1097: .ds > \u
                   1098: .ds - --
                   1099: .if t \
                   1100: \{\
                   1101: .      ds [ \v'-0.4m'\x'-0.2m'\s-3
                   1102: .      ds ] \s0\v'0.4m'
                   1103: .      ds < \v'0.4m'\x'0.2m'\s-3
                   1104: .      ds > \s0\v'-0.4m'
                   1105: .      ds - \(em
                   1106: .      nr fi 0.3i
                   1107: .\}
                   1108: .if n \
                   1109: \{\
                   1110: .      nr fi 3n
                   1111: .\}
                   1112: .nr _o \n(.o
                   1113: .if n .po 1i
                   1114: .if \n(.V=1v \
                   1115: .      nr $T 2
                   1116: .if n .if \n(.T=0 \
                   1117: .      nr $T 1
                   1118: .if \nv=2 \
                   1119: \{\
                   1120: .      nr $T 0
                   1121: .      po -0.5i                \" make ugly line on LHS on C/A/T typesetters
                   1122: .\}
                   1123: .if \n($T \
                   1124: \{\
                   1125: .      if \n($T=1 \
                   1126: .              po 0
                   1127: .      ds [ [
                   1128: .      ds ] ]
                   1129: .      ds < <
                   1130: .      ds > >
                   1131: .\}
                   1132: .nr $b \nb                     \" figure the real font 8 font
                   1133: .rr b
                   1134: .if \n($b=0 \
                   1135: \{\
                   1136: .      if n .nr $b 2           \" italic
                   1137: .      if t .nr $b 3           \" bold
                   1138: .\}
                   1139: .nr ps 0.5v                    \" paragraph pre/post spacing
                   1140: .if \n($T \
                   1141: .      nr ps 1v
                   1142: .if t .nr ps 0.35v
                   1143: .nr bs \n(ps                   \" block pre/post spacing
                   1144: .nr qs \n(ps                   \" quote pre/post spacing
                   1145: .nr zs 1v                      \" float-block pre/postspacing
                   1146: .nr xs 0.2v                    \" index prespacing
                   1147: .nr fs 0.2v                    \" footnote prespacing
                   1148: .if \n($T \
                   1149: .      nr fs 0
                   1150: .if n .nr es 1v                        \" equation pre/postspacing
                   1151: .if t .nr es 0.5v
                   1152: .wh 0 @h                       \" set header
                   1153: .nr $l \n(.lu                  \" line length
                   1154: .nr _L \n(.lu                  \" line length of page
                   1155: .nr $c 1                       \" current column number
                   1156: .nr $f 1 1                     \" footnote number
                   1157: .ds * \*[1\*]\k*\"             \" footnote "name"
                   1158: .nr $d 1 1                     \" delayed text number
                   1159: .ds # [1]\k#\"                 \" delayed text "name"
                   1160: .nr _M 1                       \" chapter mode is chapter
                   1161: .ds lq \&"\"                   \" left quote
                   1162: .ds rq \&"\"                   \" right quote
                   1163: .if t \
                   1164: .      ds lq ``
                   1165: .if t \
                   1166: .      ds rq ''
                   1167: .em @z
                   1168: .\"            *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
                   1169: .de sc                 \" *** define special characters
                   1170: .so \\*(||/chars.me
                   1171: .rm sc
                   1172: ..
                   1173: .ll 6.0i
                   1174: .lt 6.0i

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.