Annotation of researchv10no/cmd/monk/db/macro.m, revision 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'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'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'u \" quotations shrink line length
        !           190: .                      nr column_counter +1            \" set column indicator
        !           191: .                      ie \\n(U\\n('column_counter'u \
        !           192: '                              sp |\\n(U\\n('column_counter'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'u \" restore new offset
        !           198: .                      po \\nOu                        \" set new offset
        !           199: .                      nr W \\n(W\\n('column_counter'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'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.