Annotation of researchv10no/cmd/monk/o.db/macro.m, revision 1.1.1.1

1.1       root        1: |include(macro.h)
                      2: 
                      3: |include(style.h)
                      4: 
                      5: |macro(.top.of.page;
                      6:        [
                      7: '\"    #T used by tbl to draw boxes ?????
                      8: '\"    :2 store for multi-page table heading
                      9: '\"    :A multi-page table heading being used
                     10: '\"    :T top of table printed
                     11: '\"    :V vertical spacing
                     12: '\"    :d prevent )h from outputting a floating group
                     13: '\"    :m initial footer place and partial footnote diverter trap
                     14: '\"    :o footer trap location
                     15: '\"    :q amount of footnote text
                     16: '\"    :r position at end of page header macro
                     17: '\"    :v width of stored footnote 0=narrow, 1=wide
                     18: '\"    :w output counter for floating keeps
                     19: '\"    :z input counter for floating keeps
                     20: '\"    Un position to return to for column n
                     21: '\"    W current page width
                     22: '\"    Wn page width for column n
                     23: '\"    ;i remembered indent TEMP
                     24: '\"    ;o prevailing page offset ??????? bug with .po
                     25: '\"    ;t copy of :w TEMP
                     26: '\"    ;w convert to alpha format TEMP
                     27: .              de )h
                     28: .              ev 2                                    \" use header environment
                     29: .              ll \\nWu                                \" use full page
                     30: .              lt \\nWu
                     31: .              ie "\*(.T"aps" \{\
                     32: .                      nr ;o \\n(.o                    \" save prevailing page offset
                     33: .                      po 0                            \" always from left margin
                     34: .                      lt 7.5i                         \" width of photo composer
                     35: .                      ps 10                           \" 10 point roman font
                     36: .                      vs 12p
                     37: .                      ft 1
                     38: .                      tl '--''--'                     \" output the cut marks
                     39: .                      ft                              \" restore values
                     40: .                      vs
                     41: .                      ps
                     42: .                      lt
                     43: .                      po \\n(;ou \}
                     44: .              el \{\
                     45: .                      ps 10                           \" 10 point roman font
                     46: .                      vs 12p
                     47: .                      ft 1
                     48: .                      tl ''''                         \" output nothing
                     49: .                      ft                              \" restore values
                     50: .                      vs
                     51: .                      ps \}
                     52: .              nr page_counter +1                      \" incr page number
                     53: .              if \\n(column_counter \{\
                     54: .                      ll \\n(W0u                      \" go wide
                     55: .                      lt \\n(W0u \}
                     56: .              TP                                      \" user-redefinable macro
                     57: .              if \\n(column_counter \{\
                     58: .                      ll \\nWu                        \" go narrow
                     59: .                      lt \\nWu \}
                     60: .              br                                      \" force a break in the header environment
                     61: .              ev                                      \" back to main environment
                     62: .              ch )n -\\n(:mu                          \" reset partial footnote diverter
                     63: .              ch )f -\\n(:ou                          \" reset footer trap
                     64: .              if !\\n(:q .nr :v 0                     \" no saved footnotes, thus narrow
                     65: .              nr :V \\n(.v                            \" for footnote uncertainty correction
                     66: .              mk :r                                   \" position at end of page header macro
                     67: .              mk U0                                   \" save where all columns start
                     68: .              rr U1 U2 U3 U4 U5 U6 U7 U8 U9           \" zero column starts
                     69: '\"    output floating displays
                     70: .              if \\n(:d=0&((\\n(:z-\\n(:w):(\\n(:w-\\n(:z)) \{\
                     71: .                      nr ;t \\n(:w%26+1               \" get index of next output element
                     72: .                      af ;w a                         \" conversion register for display queue names
                     73: .                      nr ;w \\n(;t                    \" form the next queue element name
                     74: .                      ie \\n(!\\n(;w \{\
                     75: .                              )z                      \" output at least one floating display
                     76: .                              )s                      \" but as many as will fit
                     77: .                              mk U0                   \" save where all columns start
                     78: .                              rr U1 U2 U3 U4 U5 U6 U7 U8 U9 \} \" zero column starts
                     79: .                      el \{\
                     80: .                              )z                      \" output at least one floating display
                     81: .                              )s \}                   \" but as many as will fit
                     82: .                      rr ;t ;w \}                     \" free storage
                     83: '\"    print top part of multi-page table
                     84: .              nr :T 0                                 \" mark multi-page table header not printed
                     85: .              if \\n(:A>0 \{\
                     86: .                      nr ;i \\n(.i                    \" save prevailing indent
                     87: .                      in 0                            \" indent back
                     88: .                      :2                              \" heading
                     89: .                      nr :T 1                         \" mark multi-page table header printed
                     90: .                      in \\n(;iu \}                   \" restore prevailing indent
                     91: .              mk #T                                   \" mark spot for table drawing ???????
                     92: .              rr ;i ;o ;t ;w                          \" free storage
                     93: .              ns                                      \" avoid .sp in user text here
                     94: ..
                     95: ])
                     96: 
                     97: |macro(top.of.page;
                     98:        [
                     99: '\"    ;P page number register TEMP
                    100: .              de TP
                    101: '              sp
                    102: .              af ;P \\g+Q+-Q-page_counter             \" save format of page_counter
                    103: .              af page_counter 1                       \" normal format for next line
                    104: .              nr ;P \\n page_counter                  \" must use different name for P
                    105: .              af page_counter \\g(;P                  \" restore format to P
                    106: .              af ;P 1                                 \" normal format for control register
                    107: '              sp 2
                    108: .              if \\n(;P-1 .tl \\*(page_header         \" output headers
                    109: .              if !\\n(;P%2 .tl \\*(even_header
                    110: .              if \\n(;P%2 .tl \\*(odd_header
                    111: '              sp 2
                    112: .              if \\n(;P=4 .if "\\*(format_type"model" \
                    113: .                      pl 13.25i                       \" model format kludge
                    114: .              rr ;P                                   \" free storage
                    115: ..
                    116: ])
                    117: 
                    118: |macro(.bottom.of.page;
                    119:        [
                    120: '\"    !{a-z} width of stored floating 0=narrow, 1=wide
                    121: '\"    #T used by tbl to draw boxes ?????
                    122: '\"    :2 store for multi-page table heading
                    123: '\"    :A multi-page table heading being used
                    124: '\"    :K position for )f trap
                    125: '\"    :M initial footer and partial footnote diverter for full output page
                    126: '\"    :T top of table printed
                    127: '\"    :V vertical spacing
                    128: '\"    :c number of columns
                    129: '\"    :d prevent )h from outputting a floating group
                    130: '\"    :f bottom of table printed
                    131: '\"    :m initial footer place and partial footnote diverter trap
                    132: '\"    :o footer trap location
                    133: '\"    :q amount of footnote text
                    134: '\"    :v width of stored footnote 0=narrow, 1=wide
                    135: '\"    :w output counter for floating keeps
                    136: '\"    :z input counter for floating keeps
                    137: '\"    O current page offset
                    138: '\"    On page offset for column n
                    139: '\"    Un position to return to for column n
                    140: '\"    W current page width
                    141: '\"    Wn page width for column n
                    142: '\"    T# used by tbl to draw boxes ?????
                    143: '\"    T. ?????
                    144: '\"    ;d delta width TEMP
                    145: '\"    ;i remembered indent TEMP
                    146: '\"    ;t copy of :w TEMP
                    147: '\"    ;u hidden def of )f TEMP
                    148: '\"    ;w convert to alpha format TEMP
                    149: '\"    ;y room left on the page TEMP
                    150: .              de )f
                    151: '\"    print bottom part of boxed multi-page table
                    152: .              if \\n(:A \{\
                    153: .                      rn )f ;u                        \" hide footer
                    154: .                      nr T. 1
                    155: .                      if \\n(:f=0 .T# 1               \" print multi-page table footer
                    156: '                      br                              \" output new page
                    157: .                      nr :f 1                         \" remember footer has been printed
                    158: .                      rn ;u )f \}                     \" restore footer
                    159: .              nr ;y \\n(.pu-\\n(nlu-\\n(:mu           \" compute amount of room left on the page
                    160: .              if \\n(:qu>1v .nr ;y -1v                \" output a reasonable amount
                    161: '\"    if footnotes and there is room left and full page or left column output,
                    162: '\"    or narrow footnotes, call footnote expander
                    163: .              ie \\n(:q&\\n(;y&((\\n(column_counter<2):(\\n(:v=0)) .)o
                    164: .              el \{\
                    165: .                      nr :o \\n(:m+\\n(:q             \" reset footer trap location
                    166: .                      if \\n(:q \
                    167: .                              nr :o +\\n(:Vu-1u       \" traps spring once we go past
                    168: .                      ch )n 15i                       \" hide partial footnote diverter
                    169: .                      ch )f 15i \}                    \" move footer over it
                    170: .              ie \\n(column_counter=0 'bp             \" new page if not multi-column
                    171: '\"    end last column
                    172: .              el .ie \\n(column_counter=\\n(:c \{\
                    173: .                      nr ;d \\n(.lu-\\n(W\\n(column_counter+Q+-Q-u \" quotations shrink line length
                    174: .                      nr column_counter 1             \" set column indicator
                    175: .                      nr O \\n(O1u                    \" restore first column offset
                    176: .                      po \\nOu                        \" set first column offset
                    177: .                      nr W \\n(W1u+\\n(;du            \" restore first column width
                    178: .                      ll \\nWu                        \" set first column line length
                    179: .                      lt \\nWu                        \" set first column title length
                    180: .                      nr :m \\n(:M                    \" set initial footer place and partial footnote diverter trap
                    181: '                      bp                              \" force next page
                    182: .                      rr ;d \}                        \" free storage
                    183: '\"    end other columns
                    184: .                  el \{\
                    185: .                      if \\n(column_counter=1 .if "\\*(format_type"acm" \
                    186: .                              pl 10.875i                      \" acm format kludge
                    187: .                      if \\n(nl>\\n(U\\n(column_counter \
                    188: .                              mk U\\n(column_counter  \" new vertical position
                    189: .                      nr ;d \\n(.lu-\\n(W\\n(column_counter+Q+-Q-u \" quotations shrink line length
                    190: .                      nr column_counter +1            \" set column indicator
                    191: .                      ie \\n(U\\n(column_counter+Q+-Q-u \
                    192: '                              sp |\\n(U\\n(column_counter+Q+-Q-u \" restore vertical position
                    193: .                      el 'sp |\\n(U0u                 \" default top if not set
                    194: .                      ch )n -\\n(:mu                  \" reset partial footnote diverter
                    195: .                      ch )f -\\n(:ou                  \" reset footer trap
                    196: .                      if !\\n(:q .nr :v 0             \" no saved footnotes, thus narrow
                    197: .                      nr O \\n(O\\n(column_counter+Q+-Q-u \" restore new offset
                    198: .                      po \\nOu                        \" set new offset
                    199: .                      nr W \\n(W\\n(column_counter+Q+-Q-u+\\n(;du \" restore new width
                    200: .                      ll \\nWu                        \" set new line length
                    201: .                      lt \\nWu                        \" set new title length
                    202: '\"    output floating displays that are narrow
                    203: .                      if \\n(:d=0&((\\n(:z-\\n(:w):(\\n(:w-\\n(:z)) \{\
                    204: .                              nr ;t \\n(:w%26+1       \" get index of next output element
                    205: .                              af ;w a                 \" conversion register for display queue names
                    206: .                              nr ;w \\n(;t            \" form the next queue element name
                    207: '\"    inhibit if wide display
                    208: .                              if !\\n(!\\n(;w \{\
                    209: .                                      )z              \" output at least one floating display
                    210: .                                      )s \}           \" but as many as will fit
                    211: .                              rr ;t ;w \}             \" free storage
                    212: '\"    print top part of multi-page table
                    213: .                      nr :T 0                         \" mark multi-page table header not printed
                    214: .                      if \\n(:A>0 \{\
                    215: .                              nr ;i \\n(.i            \" save prevailing indent
                    216: .                              in 0                    \" indent back
                    217: .                              :2                      \" heading
                    218: .                              nr :T 1                 \" mark multi-page table header printed
                    219: .                              in \\n(;iu \}           \" restore prevailing indent
                    220: .                      mk #T                           \" mark spot for table drawing ???????
                    221: .                      rr ;d ;i ;t ;w                  \" free storage
                    222: .                      ns \}                           \" avoid .sp in user text here
                    223: .              if \\n(:A \{\
                    224: .                      nr :K \\n(:ou+2v                \" position for )f trap
                    225: .                      ch >f -(\\n(:Ku+1v)             \" when moved by >f macro
                    226: '                      br \}
                    227: .              rr ;y                                   \" free storage
                    228: ..
                    229: ])
                    230: 
                    231: |macro(bottom.of.page;
                    232:        [
                    233: '\"    ;P page number register TEMP
                    234: .              de BP
                    235: .              ev 2                                    \" use header environment
                    236: .              if \\n(column_counter \{\
                    237: .                      ll \\n(W0u                      \" go wide
                    238: .                      lt \\n(W0u \}
                    239: '              sp
                    240: .              af ;P \\g+Q+-Q-page_counter             \" save format of page_counter
                    241: .              af page_counter 1                       \" normal format for next line
                    242: .              nr ;P \\n page_counter                  \" must use different name for P
                    243: .              af page_counter \\g(;P                  \" restore format to P
                    244: .              af ;P 1                                 \" normal format for control register
                    245: .              if !\\n(;P%2 .tl \\*(even_footer
                    246: .              if \\n(;P%2 .tl \\*(odd_footer
                    247: .              tl \\*(page_footer                      \" output footers
                    248: .              if \\n(column_counter \{\
                    249: .                      ll \\nWu                        \" go narrow
                    250: .                      lt \\nWu \}
                    251: .              ev                                      \" back to main environment
                    252: .              rr ;P                                   \" free storage
                    253: ..
                    254: ])
                    255: 
                    256: |macro(.float.output;
                    257:        [
                    258: '\"    !{a-z} width of stored floating 0=narrow, 1=wide
                    259: '\"    :d prevent )h from outputting a floating group
                    260: '\"    :w output counter for floating keeps
                    261: '\"    :z input counter for floating keeps
                    262: '\"    ?{a-z} text of stored floating
                    263: '\"    |{a-z} size of stored floating
                    264: '\"    ;L remembered line spacing TEMP
                    265: '\"    ;i remembered indent TEMP
                    266: '\"    ;q remembered fill/no-fill mode TEMP
                    267: '\"    ;w convert to alpha format TEMP
                    268: .              de )z
                    269: .              if \\n(:z=\\n(:w .tm no floats to output
                    270: .              nr :w \\n(:w%26+1                       \" get index of next output element
                    271: .              af ;w a                                 \" conversion register for display queue names
                    272: .              nr ;w \\n(:w                            \" form the next queue element name
                    273: .              nr ;q \\n(.u                            \" save prevailing fill/no-fill mode
                    274: .              nr ;L \\n(.L                            \" save line spacing
                    275: .              nr ;i \\n(.i                            \" save prevailing indent
                    276: .              ev 1                                    \" use footnote environment
                    277: .              nf                                      \" bring it back in no-fill
                    278: .              ls 1                                    \" output display in ls 1
                    279: .              in 0                                    \" indent back
                    280: .              nr :d 1                                 \" inhibit header from calling )y
                    281: .              rs                                      \" restore spacing
                    282: .              br                                      \" output partial line before display
                    283: .              ?\\n(;w                                 \" lay out one keep
                    284: .              if \\n(;q .fi                           \" restore fill if necessary
                    285: .              ls \\n(;L                               \" restore line spacing
                    286: .              in \\n(;iu                              \" restore prevailing indent
                    287: .              nr :d 0                                 \" allow )h to process fl keeps again
                    288: .              ev                                      \" back to previous environment
                    289: .              ne 2                                    \" require two lines under float
                    290: .              rm ?\\n(;w                              \" free storage
                    291: .              rr |\\n(;w !\\n(;w
                    292: .              rr ;L ;i ;q ;w
                    293: ..
                    294: ])
                    295: 
                    296: |macro(.multiple.float.output;
                    297:        [
                    298: '\"    !{a-z} width of stored floating 0=narrow, 1=wide
                    299: '\"    :m initial footer place and partial footnote diverter trap
                    300: '\"    :o footer trap location
                    301: '\"    :r position at end of page header macro
                    302: '\"    :w output counter for floating keeps
                    303: '\"    :z input counter for floating keeps
                    304: '\"    |{a-z} size of stored floating
                    305: '\"    ;h height of floating display on top of queue TEMP
                    306: '\"    ;t copy of :w TEMP
                    307: '\"    ;w convert to alpha format TEMP
                    308: .              de )s
                    309: '\"    inhibit if no floats in queue
                    310: .              if !(\\n(:z=\\n(:w) \{\
                    311: .                      nr ;t \\n(:w%26+1               \" get index of next output element
                    312: .                      af ;w a                         \" conversion register for display queue names
                    313: .                      nr ;w \\n(;t                    \" form the next queue element name
                    314: .                      nr ;h \\n(|\\n(;w               \" height of current display
                    315: '\"    The following if condition tests: (1) if wide displays and (2) we are on the
                    316: '\"    first column and (3) if the float fits on the current page
                    317: '\"    or (4) the float is too large to fit on any one page, and (5) we have used
                    318: '\"    less than half of the current page. (the five conditions are grouped
                    319: '\"    in the form ((1 & 2) & (1 : (2 & 3))). If this total condition is true,
                    320: '\"    then a float is output.
                    321: .                      if (((\\n(!\\n(;w=1)&(\\n(column_counter<2))&\
                    322: ((\\n(;h<\\n(.t):((\\n(;h>(\\n(.p-\\n(:r-\\n(:m))&\
                    323: (\\n(nl<=(\\n(.p-\\n(:r-\\n(:o/2u+\\n(:r))))) \{\
                    324: .                              )z                      \" output it
                    325: .                              )s \}                   \" recurse
                    326: .                      rr ;h ;t ;w \}                  \" free storage
                    327: ..
                    328: ])
                    329: 
                    330: |macro(.flush.float.output;
                    331:        [
                    332: '\"    :d prevent )h from outputting a floating group
                    333: '\"    :w output counter for floating keeps
                    334: '\"    :z input counter for floating keeps
                    335: '\"    ;o copy of :w TEMP
                    336: .              de )w
                    337: '\"    inhibit if no floats in queue
                    338: .              if !(\\n(:z=\\n(:w) \{\
                    339: .                      nr ;o \\n(:w                    \" save output count
                    340: .                      )s
                    341: .                      if \\n(:w=\\n(;o \{\
                    342: .                              nr :d 1                 \" inhibit header from calling )y
                    343: .                              rs                      \" turn on spacing
                    344: .                              bp                      \" top of next page
                    345: .                              nr :d 0 \}              \" allow )h to process fl keeps again
                    346: .                      )w \}                           \" recurse
                    347: .              rr ;o                                   \" free storage
                    348: ..
                    349: ])
                    350: 
                    351: |macro(.footnote.output;
                    352:        [
                    353: '\"    dump accumulated footnote text
                    354: '\"    long text may spring )n trap so the remaining partial
                    355: '\"    text may go into :3
                    356: '\"    :3 store for partial footnotes
                    357: '\"    :F Footnote text
                    358: '\"    :H height of footnote separater
                    359: '\"    :V vertical spacing
                    360: '\"    :m initial footer place and partial footnote diverter trap
                    361: '\"    :o footer trap location
                    362: '\"    :q amount of footnote text
                    363: '\"    :v width of stored footnote 0=narrow, 1=wide
                    364: .              de )o
                    365: .              if \\n(:v&\\n(column_counter=1 .nr :m \\n(:o \" if printing wide
                    366: .              ev 1                                    \" use footnote environment
                    367: .              nf                                      \" bring it back in no-fill
                    368: .              ls 1                                    \" output display in ls 1
                    369: .              in 0                                    \" indent back
                    370: .              :F                                      \" lay out footnotes
                    371: '\"    did we spring the partial footnote trap
                    372: .              ie "\\n(.z":3" \{\
                    373: .                      br                              \" get last partial line
                    374: .                      di                              \" end diversion
                    375: .                      ie \\n(dnu<=\\n(:Hu \{\
                    376: .                              nr :q 0                 \" ignore just divider line
                    377: .                              nr :o \\n(:mu           \" reset footnote location register
                    378: .                              rm :3 :F \}
                    379: .                      el \{\
                    380: .                              nr dn +\\n(:V-\\n(.v    \" uncertainty correction
                    381: .                              nr :q \\n(dnu           \" fix amount of footnote text
                    382: .                              nr :o \\n(:mu+\\n(:qu   \" reset footnote location register
                    383: .                              nr :o +\\n(:Vu-1u       \" traps spring once we go past
                    384: .                              rn :3 :F \} \}          \" put text back in :F
                    385: .              el \{\
                    386: .                      nr :q 0                         \" clear amount of footnote text
                    387: .                      rm :F                           \" clear text of footnote
                    388: .                      nr :o \\n(:mu                   \" reset footnote location register
                    389: .                      ch )n 15i \}                    \" hide partial footnote diverter
                    390: .              ev                                      \" back to main environment
                    391: ..
                    392: ])
                    393: 
                    394: |macro(.footnote.diverter;
                    395:        [
                    396: '\"    partial footnote text diverter
                    397: '\"    called via trap planted at -\n(:m
                    398: '\"    since the default footer trap is also at -n(:m,
                    399: '\"    this macro actually invoked when the footer trap
                    400: '\"    has been moved up due to footnote processing
                    401: '\"    :3 store for partial footnotes
                    402: '\"    :H height of footnote separater
                    403: '\"    O current page offset
                    404: '\"    ;o prevailing page offset ??????? bug with .po
                    405: .              de )n
                    406: .              di :3
                    407: .              nr ;o \\n(.o                            \" save prevailing page offset
                    408: .              po \\nOu                                \" always from left margin
                    409: .              ps 10                                   \" 10 point roman font
                    410: .              vs 12p
                    411: .              ft 1
                    412: .              ie \n(.A=0 \l@\\n(.lu@
                    413: .              el _____________________________
                    414: .              nr :H \\n(.v                            \" height of separater
                    415: .              ft                                      \" restore values
                    416: .              vs
                    417: .              ps
                    418: .              po \\n(;ou
                    419: ..
                    420: ])
                    421: 
                    422: |macro(.catch.diverter;
                    423:        [
                    424: '\"    catch output diverter
                    425: .              de catch_diverter
                    426: .              di catch_output
                    427: ..
                    428: ])
                    429: 
                    430: |macro(.end.of.file;
                    431:        [
                    432: .              de )q
                    433: ..
                    434: ])
                    435: 
                    436: |macro(.pop.counter;
                    437:        [
                    438: '\"    clever way to restore a number from a stack
                    439: '\"    push is via .ds fo \n(xx \*(fo
                    440: '\"    .)C counter-name stack-name stack-args
                    441: .              de )C
                    442: .                      nr \\$1 \\$3
                    443: .                      ds \\$2 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    444: ..
                    445: ])
                    446: 
                    447: |macro(.initalize;
                    448:        [
                    449: '\"    REQUIRED INITIALIZATIONS
                    450: '\"    initialize various regs
                    451: '\"    !{a-z} width of stored floating 0=narrow, 1=wide
                    452: '\"    #T used by tbl to draw boxes ?????
                    453: '\"    :0 store for initally diverted text
                    454: '\"    :1 store for centered block text
                    455: '\"    :2 store for multi-page table heading
                    456: '\"    :3 store for partial footnotes
                    457: '\"    :4 store for equations
                    458: '\"    :A multi-page table heading being used
                    459: .              nr :A 0
                    460: '\"    :B amount of accumulate blank lines
                    461: .              nr :B 0
                    462: '\"    column_counter 0=one column, N=column number
                    463: .              nr column_counter 0
                    464: `\"    :D amount of accumulate blank lines in diversion
                    465: '\"    :E position of last minimum space in diversion
                    466: '\"    :F Footnote text
                    467: '\"    :H height of footnote separater
                    468: '\"    :K position for )f trap
                    469: .              nr :K 0
                    470: '\"    :M initial footer and partial footnote diverter for full output page
                    471: .              nr :M .8i
                    472: '\"    :N position of last minimum space
                    473: .              nr :N 0
                    474: '\"    :T top of table printed
                    475: .              nr :T 0
                    476: '\"    :V vertical spacing
                    477: .              nr :V \n(.v
                    478: '\"    :Y width of a center block diversion
                    479: '\"    :c number of columns
                    480: .              nr :c 0
                    481: '\"    :d prevent )h from outputting a floating group
                    482: .              nr :d 0
                    483: '\"    :f bottom of table printed
                    484: .              nr :f 0
                    485: '\"    :m initial footer place and partial footnote diverter trap
                    486: .              nr :m .8i
                    487: '\"    :o footer trap location
                    488: .              nr :o \n(:mu
                    489: '\"    :q amount of footnote text
                    490: .              nr :q 0
                    491: '\"    :r position at end of page header macro
                    492: .              nr :r .6i
                    493: '\"    :v width of stored footnote 0=narrow, 1=wide
                    494: .              nr :v 0
                    495: '\"    :w output counter for floating keeps
                    496: .              nr :w 0
                    497: '\"    :x flag indicating footnote in progress
                    498: .              nr :x 0
                    499: '\"    :y flag indicating group/float in progress
                    500: .              nr :y 0
                    501: '\"    :z input counter for floating keeps
                    502: .              nr :z 0
                    503: '\"    ?{a-z} text of stored floating
                    504: '\"    |{a-z} size of stored floating
                    505: '\"    }D name of last minimum space diversion
                    506: '\"    10 the equation as a string
                    507: '\"    AT string containing AT&T in helvetica
                    508: .              ds AT \f(HBA\h'-.2m'T\h'-.15m'\s0\s13&\s0\s16\h'-.15m'T\fP
                    509: '\"    date string
                    510: .              if \n(mo-0 .ds date_string January
                    511: .              if \n(mo-1 .ds date_string February
                    512: .              if \n(mo-2 .ds date_string March
                    513: .              if \n(mo-3 .ds date_string April
                    514: .              if \n(mo-4 .ds date_string May
                    515: .              if \n(mo-5 .ds date_string June
                    516: .              if \n(mo-6 .ds date_string July
                    517: .              if \n(mo-7 .ds date_string August
                    518: .              if \n(mo-8 .ds date_string September
                    519: .              if \n(mo-9 .ds date_string October
                    520: .              if \n(mo-10 .ds date_string November
                    521: .              if \n(mo-11 .ds date_string December
                    522: .              as date_string " \n(dy, 19\n(yr
                    523: '\"    at&t logo
                    524: .              ie "\*(.T"aps" .ds att_logo \s36\(Lb\s0
                    525: .              el .ie "\*(.T"eps" .ds att_logo \s36\(Lb\s0
                    526: .              el .ie "\*(.T"i300" .ds att_logo \s36\(Lb\s0
                    527: .              el .ie "\*(.T"im300" .ds att_logo \s36\(Lb\s0
                    528: .              el .ie "\*(.T"post" .ds att_logo \s36\(LH\s0
                    529: .              el .ds att_logo \s36\(L1\s0\s16\v'-.4'\*(AT\v'.4'\h'-\w'\*(AT'u'\s0
                    530: '\"    MK set to a non zero by eqn if a mark or a lineup is used
                    531: '\"    O current page offset
                    532: '\"    On page offset for column n
                    533: '\"    page number
                    534: .              if \n page_counter .nr page_counter -1
                    535: .              nr page_counter \n page_counter 1
                    536: '\"    T# used by tbl to draw boxes ?????
                    537: '\"    T. ?????
                    538: '\"    Un position to return to for column n
                    539: .              nr U0 .6i
                    540: .              rr U1 U2 U3 U4 U5 U6 U7 U8 U9
                    541: '\"    W current page width
                    542: '\"    Wn page width for column n
                    543: '\"    INITIAL SET UP
                    544: .              ds page_header ''- \\n page_counter -'' \" top of page string
                    545: .              wh 0 )h                                 \" trap for header
                    546: .              wh -\n(:mu )f                           \" trap for footer
                    547: .              ch )f 15i                               \" move it over partial footnote diverter
                    548: .              wh -\n(:mu )n                           \" trap for partial footnote diverter
                    549: .              ch )f -\n(:mu
                    550: .              wh -\n(:ru BP                           \" trap for bottom
                    551: .              em )q                                   \" end macro
                    552: '\"    TROFF ACCENTS (` ' ^ ~ cedilla and 2 umlauts)
                    553: '\"    The accent string must follow immediately the character to be accented.
                    554: '\"    These strings are "tuned" to the Times Roman type faces ONLY.
                    555: '\"    The R, I, and B fonts are assumed to be mounted in
                    556: '\"    positions 1, 2, and 3, respectively.
                    557: '\"    All of these strings alter the number register `:'.
                    558: '\"    Grave accent -- {aeou}\*`
                    559: .              ds ` \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m@\(ga\h@|\\n:u@
                    560: '\"    Lower-case acute accent -- {aeou}\*'
                    561: .              ds ' \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m+.07m@\(aa\h@|\\n:u@
                    562: '\"    Upper-case acute accent -- {aeou}\*+
                    563: .              ds + \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m+.07m@\[email protected]@\(aa\[email protected]@\h@|\\n:u@
                    564: '\"    Circumflex -- {aeou}\*^
                    565: .              ds ^ \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.15m-.07m@\
                    566: \h@\\n(.fu-1u/2u*.02m@^\h@|\\n:u@
                    567: '\"    Tilde -- n\*~ (But watch out for ".tr ~")
                    568: .              ds ~ \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m-.07m@\
                    569: \h@\\n(.fu-1u/2u*.05m@~\h@|\\n:u@
                    570: '\"    Cedilla -- c\*,
                    571: .              ds , \\k:\h@-\\n(.wu*85u/100u@\[email protected]@,\[email protected]@\h@|\\n:u@
                    572: '\"    Lower-case umlaut -- {aeou}\*:
                    573: .              ds : \\k:\h@-\\n(.wu*85u/100u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*3u*.06m@\
                    574: \h@3u-\\n(.fu/2u*.05m-.1m@\
                    575: \[email protected]@\z.\h@\\n(.fu-1u/2u*.05m+.2m@.\[email protected]@\h@|\\n:u@
                    576: '\"    Upper-case umlaut -- {AEOU}\*;
                    577: .              ds ; \\k:\h@-\\n(.wu*75u/100u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*3u*.09m@\
                    578: \h@3u-\\n(.fu/2u*.06m-.15m@\h@\\n(.fu-1u/2u*.04m@\
                    579: \[email protected]@\z.\[email protected]@.\[email protected]@\h@|\\n:u@
                    580: '\"    Nasal -- c\*-
                    581: .              ds - \\k:\h@-\\n(.wu*75u/100u@\[email protected]@`\[email protected]@\h@|\\n:u@
                    582: '\"    Slash -- c\*/
                    583: .              ds / \\k:\h@-\\n(.wu*85u/100u@\[email protected]@\(aa\[email protected]@\h@|\\n:u@
                    584: ])

unix.superglobalmegacorp.com

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