|
|
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: ])
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.