|
|
1.1 ! root 1: .if \nM=0 .RP ! 2: .TM 76-1274-5 39199 39199-11 ! 3: .if \n(tm>0 .ND June 11, 1976* ! 4: .TL ! 5: Tbl \(em A Program to Format Tables ! 6: .AU "MH 2C-569" 6377 ! 7: M. E. Lesk ! 8: .AI ! 9: .MH ! 10: .if \n(tm>0 .FS ! 11: .if \n(tm>0 * This printing revised through August 5, 1977 ! 12: .if \n(tm>0 .FE ! 13: .AB ! 14: .I ! 15: Tbl ! 16: .R ! 17: is a document formatting preprocessor for ! 18: .I ! 19: troff ! 20: .R ! 21: or ! 22: .I ! 23: nroff ! 24: .R ! 25: which makes ! 26: even ! 27: fairly complex tables easy to specify and enter. ! 28: It is available on ! 29: the ! 30: .SM ! 31: PDP-11 UNIX* ! 32: .NL ! 33: system ! 34: .FS ! 35: * UNIX is a Trademark/Service Mark of the Bell System ! 36: .FE ! 37: and on Honeywell 6000 ! 38: .SM ! 39: GCOS. ! 40: .NL ! 41: Tables are made up of columns which may be independently centered, right-adjusted, ! 42: left-adjusted, or aligned by decimal points. ! 43: Headings may be placed over single columns or groups of columns. ! 44: A table entry may contain equations, or may consist of several rows of text. ! 45: Horizontal or vertical lines may be drawn as desired ! 46: in the table, ! 47: and any table or element may be enclosed in a box. ! 48: For example: ! 49: .in 0 ! 50: .ll ! 51: .sp .5 ! 52: .TS ! 53: center, box; ! 54: c s s s ! 55: c s s s ! 56: c |c |c |c ! 57: c |c |c |c ! 58: l |n |n |n. ! 59: 1970 Federal Budget Transfers ! 60: \s-2(in billions of dollars)\s0 ! 61: = ! 62: State Taxes Money Net ! 63: \^ collected spent \^ ! 64: _ ! 65: New York 22.91 21.35 \-1.56 ! 66: New Jersey 8.33 6.96 \-1.37 ! 67: Connecticut 4.12 3.10 \-1.02 ! 68: Maine 0.74 0.67 \-0.07 ! 69: California 22.29 22.42 +0.13 ! 70: New Mexico 0.70 1.49 +0.79 ! 71: Georgia 3.30 4.28 +0.98 ! 72: Mississippi 1.15 2.32 +1.17 ! 73: Texas 9.33 11.13 +1.80 ! 74: .TE ! 75: .AE ! 76: .OK ! 77: Phototypesetting ! 78: Documentation ! 79: .CS 16 0 16 0 12 6 ! 80: .tr # ! 81: .de e1 ! 82: .nr \\$1 \\$2 ! 83: .. ! 84: .de e2 ! 85: .if !\\n(\\$1=\\n% .tm Error in example \\$1: referred to page \\n(\\$1, is on page \\n% ! 86: .rr \\$1 ! 87: .. ! 88: .di qq ! 89: .EQ ! 90: delim $$ ! 91: .EN ! 92: .di ! 93: .rm qq ! 94: .SH ! 95: Introduction. ! 96: .PP ! 97: .I ! 98: Tbl ! 99: .R ! 100: turns a simple description ! 101: of a table into a ! 102: .I ! 103: troff ! 104: .R ! 105: or ! 106: .I ! 107: nroff ! 108: .R ! 109: [1] ! 110: program (list of commands) that prints the table. ! 111: .I ! 112: Tbl ! 113: .R ! 114: may be used on the ! 115: \s-2PDP-\s011 \s-2UNIX\s0 ! 116: .NL ! 117: [2] system and on the Honeywell 6000 ! 118: .SM ! 119: GCOS ! 120: .NL ! 121: system. ! 122: It ! 123: attempts to isolate a portion of a job that it can ! 124: successfully ! 125: handle and leave the remainder for other programs. ! 126: Thus ! 127: .I ! 128: tbl ! 129: .R ! 130: may be used with the equation formatting ! 131: program ! 132: .I ! 133: eqn ! 134: .R ! 135: [3] ! 136: or various ! 137: layout macro packages ! 138: [4,5,6], ! 139: but does not duplicate their functions. ! 140: .PP ! 141: This memorandum is divided into two parts. ! 142: First we give the rules for preparing ! 143: .I ! 144: tbl ! 145: .R ! 146: input; then some examples are shown. ! 147: The description of rules is precise but technical, and ! 148: the beginning user may prefer to read the examples first, ! 149: as they show some common table arrangements. ! 150: A section explaining how to invoke ! 151: .I ! 152: tbl ! 153: .R ! 154: precedes the examples. ! 155: To avoid repetition, henceforth read ! 156: .I ! 157: troff ! 158: .R ! 159: as ! 160: .I ! 161: ``troff ! 162: .R ! 163: or ! 164: .I ! 165: nroff.'' ! 166: .R ! 167: .ds . \^\s14.\s0 ! 168: .PP ! 169: The input to ! 170: .I ! 171: tbl ! 172: .R ! 173: is text for a document, with tables preceded by a ``\*.TS'' ! 174: (table start) ! 175: command and followed by a ``\*.TE'' ! 176: (table end) command. ! 177: .I ! 178: Tbl ! 179: .R ! 180: processes the tables, generating ! 181: .I ! 182: troff ! 183: .R ! 184: formatting commands, ! 185: and leaves the remainder of the text unchanged. ! 186: The ``\*.TS'' and ``\*.TE'' ! 187: lines are copied, too, so that ! 188: .I ! 189: troff ! 190: .R ! 191: page layout macros ! 192: (such as the memo formatting macros [4]\|) can use these lines ! 193: to delimit and place tables as they see fit. ! 194: In particular, any arguments on the ``\*.TS'' or ``\*.TE'' ! 195: lines ! 196: are copied but otherwise ignored, and may be used by document layout ! 197: macro commands. ! 198: .PP ! 199: The format of the input is as follows: ! 200: .DS ! 201: \&text ! 202: \&\*.TS ! 203: \&\fItable\fR ! 204: \&\*.TE ! 205: \&text ! 206: \&\*.TS ! 207: \&\fItable\fR ! 208: \&\*.TE ! 209: \&text ! 210: \&\&\*. \*. \*. ! 211: .DE ! 212: where the format of each table is as follows: ! 213: .DS ! 214: \&\*.TS ! 215: \fIoptions \fB;\fR ! 216: \fIformat \*. ! 217: data ! 218: \&\fR\*.TE ! 219: .DE ! 220: Each table is independent, and must contain formatting ! 221: information ! 222: followed by the data to be entered in the table. ! 223: The formatting information, which describes the ! 224: individual columns and rows of the table, may be preceded ! 225: by a few options that affect the entire table. ! 226: A detailed description of tables is given in the next section. ! 227: .sp .5 ! 228: .SH ! 229: Input commands. ! 230: .PP ! 231: As indicated above, a table contains, first, global options, ! 232: then a format section describing the layout of the table ! 233: entries, and then the data to be printed. The format and data ! 234: are always required, but not the options. ! 235: The various parts of the table are entered as follows: ! 236: .sp .5v ! 237: .IP 1) ! 238: O\s-2PTIONS.\s0 ! 239: There may be a single line of options ! 240: affecting the whole table. ! 241: If present, this line must follow the \*.TS line immediately ! 242: and must contain a list of option names ! 243: separated by spaces, tabs, or commas, and must be terminated by a semicolon. ! 244: The allowable options are: ! 245: .RS ! 246: .IP \fB##center\fR 13 ! 247: \(em center the table (default is left-adjust); ! 248: .IP \fB##expand\fR ! 249: \(em make the table as wide as the current line length; ! 250: .IP \fB##box\fR ! 251: \(em enclose the table in a box; ! 252: .IP \fB##allbox\fR ! 253: \(em enclose each item in the table in a box; ! 254: .IP \fB##doublebox\fR ! 255: \(em enclose the table in two boxes; ! 256: .IP \fB##tab#\fR(\fIx\fR\^) ! 257: \(em use \fIx\fR instead of tab to separate data items. ! 258: .IP \fB##linesize#(\fIn\fR\^) ! 259: \(em set lines or rules (e.g. from \fBbox\fR\^) in \fIn\fR point type; ! 260: .IP \fB##delim#(\fIxy\fR\^) ! 261: \(em recognize \fIx\fR and \fIy\fR as the \fIeqn\fR delimiters. ! 262: .RE ! 263: .LP ! 264: .ns ! 265: .IP ! 266: The ! 267: .I ! 268: tbl ! 269: .R ! 270: program ! 271: tries to keep boxed tables on one page by issuing ! 272: appropriate ``need'' (\fI\*.ne\fR\|) commands. ! 273: These requests are calculated from the number of lines in the tables, ! 274: and if there are spacing commands embedded in the input, these requests may be inaccurate; ! 275: use normal ! 276: .I ! 277: troff ! 278: .R ! 279: procedures, such as keep-release macros, in that case. ! 280: The user who must have a multi-page boxed table ! 281: should use macros designed for this purpose, ! 282: as explained below under `Usage.' ! 283: .sp .5v ! 284: .IP 2) 5 ! 285: F\s-2ORMAT\s0. ! 286: The format section of the table specifies the layout ! 287: of the columns. ! 288: Each line in this section corresponds to one line ! 289: of the table (except that the last line corresponds to all following ! 290: lines up to the next \*.T&, if any \(em see below), ! 291: and each line contains a key-letter for each column ! 292: of the table. ! 293: It is good practice to separate the key letters for each ! 294: column by spaces or tabs. ! 295: Each key-letter is one of the following: ! 296: .RS ! 297: .cs B 25 ! 298: .IP "##\fBL\fR#or#\fBl\fR" 10 ! 299: to indicate a left-adjusted column entry; ! 300: .IP "##\fBR\fR#or#\fBr\fR ! 301: to indicate a right-adjusted column entry; ! 302: .IP "##\fBC\fR#or#\fBc\fR ! 303: to indicate a centered column entry; ! 304: .IP "##\fBN\fR#or#\fBn\fR ! 305: to indicate a numerical column entry, to be aligned with other ! 306: numerical entries so that the units digits of numbers line up; ! 307: .IP "##\fBA\fR#or#\fBa\fR ! 308: to indicate an alphabetic subcolumn; ! 309: all corresponding entries are aligned on the left, and positioned ! 310: so that the widest is centered within the column (see ! 311: example on page 12); ! 312: .IP "##\fBS\fR#or#\fBs\fR ! 313: to indicate a spanned heading, i.e. to indicate that the ! 314: entry from the previous column continues across this ! 315: column ! 316: (not allowed for the first column, obviously); or ! 317: .IP ##\fB\s+4\v'6p'^\v'-6p'\s0\fR ! 318: to indicate a vertically spanned heading, i.e. to indicate that ! 319: the entry from the previous row continues down through this row. ! 320: (Not allowed for the first row of the table, obviously). ! 321: .cs B ! 322: .RE ! 323: .LP ! 324: .ns ! 325: .IP ! 326: When numerical alignment is specified, a location for the decimal ! 327: point is sought. The rightmost dot (\*.) ! 328: adjacent to a digit is used as a decimal point; if there is no ! 329: dot adjoining a digit, the rightmost digit is used as a units digit; ! 330: if no alignment is indicated, the item is centered in the column. ! 331: However, the special non-printing character string \e& may be used ! 332: to override unconditionally dots ! 333: and digits, or to align alphabetic data; ! 334: this string lines up where a dot normally would, ! 335: and then disappears from the final output. ! 336: In the example below, the items shown at the left will be ! 337: aligned (in a numerical column) as shown on the right: ! 338: .KS ! 339: .TS ! 340: center; ! 341: l6 n. ! 342: 13 13 ! 343: 4\*.2 4\&\*.2 ! 344: 26\*.4\*.12 26\*.4\&\*.12 ! 345: abc abc ! 346: abc\e& abc\& ! 347: 43\e&3\*.22 43\&3\*.22 ! 348: 749\*.12 749\&\*.12 ! 349: .TE ! 350: .KE ! 351: .IP ! 352: \fBNote:\fR ! 353: If numerical data are used in the same column with wider ! 354: .B L ! 355: or ! 356: .B r ! 357: type table entries, the widest \fInumber\fR is centered relative ! 358: to the wider ! 359: .B L ! 360: or ! 361: .B r ! 362: items (\fBL\fR is used instead of \fBl\fR for readability; ! 363: they have the same meaning as key-letters). ! 364: Alignment within the numerical items is preserved. ! 365: This is similar to the behavior of ! 366: .B a ! 367: type data, as explained above. ! 368: However, ! 369: alphabetic subcolumns (requested by the ! 370: .B ! 371: a ! 372: .R ! 373: key-letter) ! 374: are always slightly indented relative to ! 375: .B ! 376: L ! 377: .R ! 378: items; ! 379: if necessary, the column width is increased to force this. ! 380: This is not true for \fBn\fR type entries. ! 381: .IP ! 382: .bd I 3 ! 383: .ft I ! 384: Warning: ! 385: .ft 1 ! 386: .bd I ! 387: the \fBn\fR and \fBa\fR items should not be used in ! 388: the same column. ! 389: .IP ! 390: For readability, the key-letters describing each column should ! 391: be separated by spaces. ! 392: The end of the format section is indicated by a period. ! 393: The layout of the key-letters in the format section resembles ! 394: the layout of the actual data in the table. ! 395: Thus a simple format might appear as: ! 396: .br ! 397: .ne 3 ! 398: .in +2 ! 399: .nf ! 400: c s s ! 401: l n n \*. ! 402: .fi ! 403: .in -2 ! 404: which specifies a table of three columns. The first line ! 405: of the table contains a heading centered across all three ! 406: columns; each remaining line contains a left-adjusted item ! 407: in the first column followed by two columns of numerical ! 408: data. ! 409: A sample table in this format might be: ! 410: .br ! 411: .ne 6v ! 412: .br ! 413: .in +4 ! 414: .TS ! 415: c s s ! 416: l n n. ! 417: Overall title ! 418: Item-a 34.22 9.1 ! 419: Item-b 12.65 .02 ! 420: Items: c,d,e 23 5.8 ! 421: Total 69.87 14.92 ! 422: .TE ! 423: .in -4 ! 424: There are some additional features of the key-letter system: ! 425: .RS ! 426: .IP "\fI##Horizontal lines#\fR" ! 427: \(em A key-letter may be replaced by `\(ul' ! 428: (underscore) to indicate ! 429: a horizontal line in place of the corresponding column entry, ! 430: or by `=' to indicate a double horizontal line. ! 431: If an adjacent column contains a horizontal line, or if ! 432: there are vertical lines adjoining this column, ! 433: this horizontal line is extended to meet the nearby lines. ! 434: If any data entry is provided for this column, it is ignored and ! 435: a warning message is printed. ! 436: .QQ do the D(x) and M(x) to draw a line of 'x' characters. ! 437: .QQ D will draw divided lines, M merged lines. thus - is simplh M(\(ru) ! 438: .IP "\fI##Vertical lines#\fR" ! 439: \(em A vertical bar may be placed between column key-letters. This will ! 440: cause a vertical line between the corresponding columns of the table. ! 441: A vertical bar to the left of the first key-letter ! 442: or to the right of the last one produces a line at the ! 443: edge of the table. ! 444: If two vertical bars appear between key-letters, a double vertical ! 445: line is drawn. ! 446: .IP "\fI##Space between columns#\fR" ! 447: \(em A number may follow the key-letter. This indicates the amount of separation ! 448: between this column and the next column. ! 449: The number normally specifies the separation in ! 450: .I ! 451: ens ! 452: .R ! 453: (one ! 454: en ! 455: .ne 3 ! 456: is about the width of the letter `n').* ! 457: .FS ! 458: * More precisely, an en is a number of points (1 point = 1/72 inch) ! 459: equal to half the current type size. ! 460: .FE ! 461: If the ``expand'' option is used, then these numbers are multiplied ! 462: by a constant such that the table is as wide as the current line length. ! 463: The default column separation number is 3. ! 464: If the separation is changed the worst case (largest space requested) governs. ! 465: .IP "\fI##Vertical spanning#\fR" ! 466: \(em Normally, vertically spanned items extending over several ! 467: rows of the table are centered in their vertical range. ! 468: If a key-letter is followed by ! 469: .B ! 470: t ! 471: .R ! 472: or ! 473: .B T , ! 474: any corresponding vertically spanned item ! 475: will begin at the top line of its range. ! 476: .IP "\fI##Font changes#\fR" ! 477: \(em A key-letter may be followed by a string containing a font ! 478: name or number ! 479: preceded by the letter ! 480: .B f ! 481: or ! 482: .B F . ! 483: This indicates that the corresponding column should be in a different ! 484: font from the default font (usually Roman). ! 485: All font names are one or two letters; a one-letter font ! 486: name should be separated from whatever follows by a space or tab. ! 487: The single letters ! 488: \f3B\f1, \f3b\f1, \f3I\f1, ! 489: and ! 490: \f3i\f1 ! 491: are shorter synonyms for ! 492: .B f\^B ! 493: and ! 494: .B f\^I . ! 495: Font change commands given with the table entries ! 496: override these specifications. ! 497: .IP "\fI##Point size changes#\fR" ! 498: \(em A key-letter may be followed by the letter ! 499: .B p ! 500: or ! 501: .B P ! 502: and a number to indicate the point size of the corresponding table entries. ! 503: The number may be a signed digit, in which case it is taken as ! 504: an increment or decrement ! 505: from the current point size. ! 506: If both a point size and a column separation value are given, ! 507: one or more blanks must separate them. ! 508: .IP "\fI##Vertical spacing changes#\fR" ! 509: \(em A key-letter may be followed by the letter ! 510: .B v ! 511: or ! 512: .B V ! 513: and a number to indicate the vertical line spacing to be used ! 514: within a multi-line corresponding table entry. ! 515: The number may be a signed digit, in which case it is taken as an increment ! 516: or decrement from the current vertical spacing. ! 517: A column separation value must be separated by blanks or some other ! 518: specification from a vertical spacing request. ! 519: This request has no effect unless the corresponding table entry ! 520: is a text block (see below). ! 521: .IP "\fI##Column width indication#\fR" ! 522: \(em A key-letter may be followed by the letter ! 523: .B w ! 524: or ! 525: .B W ! 526: and a width value in parentheses. ! 527: This width is used as a minimum column width. ! 528: If the largest element in the column is not as wide as the width value ! 529: given after the \fBw\fR, the largest element is assumed to be that wide. ! 530: If the largest element in the column is wider than the specified value, ! 531: its width is used. ! 532: The width is also used as a default line ! 533: length for included text blocks. ! 534: Normal ! 535: .I ! 536: troff ! 537: .R ! 538: units can be used to scale the width value; if none are used, ! 539: the default is ! 540: ens. ! 541: If the width specification is a unitless integer ! 542: the parentheses may be omitted. ! 543: If the width value is changed in a column, the \fIlast\fR one given controls. ! 544: .IP "\fI##Equal width columns#\fR" ! 545: \(em A key-letter may be followed by the letter ! 546: .B e ! 547: or ! 548: .B E ! 549: to indicate equal width columns. ! 550: All columns whose ! 551: key-letters are followed by \fBe\fR or \fBE\fR are made the same width. ! 552: This permits the user to get a group of regularly spaced ! 553: columns. ! 554: .IP "\fI##Staggered columns#\fR" ! 555: \(em A key-letter may be followed by the letter ! 556: .B u ! 557: or ! 558: .B U ! 559: to indicate that the corresponding entry is to be moved up one half line. ! 560: This makes it easy, for example, to have a column of differences ! 561: between numbers in an adjoining column. ! 562: The ``allbox'' option does not work with staggered columns. ! 563: .IP "\fI##Zero-width item#\fR" ! 564: \(em A key-letter may be followed by the letter ! 565: .B z ! 566: or ! 567: .B Z ! 568: to indicate that the corresponding ! 569: data item is to be ignored in calculating column widths. ! 570: This may be useful, for example, in allowing headings ! 571: to run across adjacent columns where spanned headings ! 572: would be inappropriate. ! 573: .IP "##\fBNote:\fR#" ! 574: The order of the above features is immaterial; they need not be separated ! 575: by spaces, except as indicated above to avoid ambiguities involving ! 576: point size and font changes. Thus ! 577: a numerical column entry in italic font and 12 point type with a minimum ! 578: width of 2.5 inches and separated by 6 ens from the next column could ! 579: be specified as ! 580: .in +5 ! 581: np12w(2\*.5i)f\|I 6 ! 582: .in -5 ! 583: .IP "\fI##Alternative notation#\fR" ! 584: \(em Instead of listing the format of successive lines of a table ! 585: on consecutive lines of the format section, ! 586: successive line formats may be given on the same line, separated ! 587: by commas, so that the format for the example ! 588: above might have been written: ! 589: .in +5 ! 590: c s s, l n n \*. ! 591: .in -5 ! 592: .IP "\fI##Default#\fR" ! 593: \(em Column descriptors missing from the end ! 594: of a format line are assumed to be \fBL\fR. ! 595: The longest line in the format section, however, ! 596: defines the number of columns ! 597: in the table; ! 598: extra columns in the data are ignored silently. ! 599: .QQ put in the diagnostics. ! 600: .RE ! 601: .sp .5v ! 602: .IP 3) ! 603: D\s-2ATA\s0. ! 604: The data for the table are typed after the format. ! 605: Normally, each table line is typed as one line of data. ! 606: Very long input lines can be broken: any line whose last character is ! 607: \e is combined with the following line (and the \e vanishes). ! 608: The data for different columns (the table entries) are separated by tabs, ! 609: or by whatever character has been specified in the option ! 610: .I tabs ! 611: option. ! 612: There are a few special cases: ! 613: .RS ! 614: .IP "\fI##Troff commands within tables\fR#" ! 615: \(em An input line ! 616: beginning with a `\*.' followed by anything ! 617: but a number is assumed to be a command to ! 618: .I ! 619: troff ! 620: .R ! 621: and is passed through unchanged, retaining its position in the table. ! 622: So, for example, space within a table may be produced by ``\*.sp'' ! 623: commands ! 624: in the data. ! 625: .IP "\fI##Full width horizontal lines\fR#" ! 626: \(em An input ! 627: .I line ! 628: containing only the character $fat "\(ul" $ (underscore) ! 629: or \fB=\fR (equal sign) is taken to be a single or double ! 630: line, respectively, extending the ! 631: full width ! 632: of the ! 633: .I table. ! 634: .IP "\fI##Single column horizontal lines\fR#" ! 635: \(em An input table ! 636: .I entry ! 637: containing only the character $fat "\(ul" $ or \fB=\fR ! 638: is taken to be a single or double line extending ! 639: the full width of the ! 640: .I column. ! 641: Such lines are extended to meet horizontal or vertical ! 642: lines adjoining this column. ! 643: To obtain these characters explicitly in a column, either ! 644: precede them by \e& or ! 645: follow them by a space before the usual tab or newline. ! 646: .IP "\fI##Short horizontal lines\fR#" ! 647: \(em An input table ! 648: .I entry ! 649: containing only the string $fat "\e\(ul"$ ! 650: is taken to be a single line as wide as the contents of ! 651: the column. It is not extended to meet ! 652: adjoining lines. ! 653: .IP "\fI##Repeated characters\fR#" ! 654: \(em An input table ! 655: .I entry ! 656: containing only a string of the form $fat "\e"$\f3R\f2x\f1 ! 657: where ! 658: .I x ! 659: is any character is replaced by repetitions of the character ! 660: .I x ! 661: as wide as the data in the column. ! 662: The sequence of ! 663: .I x 's ! 664: is not extended to meet adjoining columns. ! 665: .IP "\fI##Vertically spanned items\fR#" ! 666: \(em An input table entry containing only the ! 667: character string ! 668: .ft B ! 669: \e\s+2\v'2p'^\v'-2p'\s0 ! 670: .ft R ! 671: indicates that the table entry immediately ! 672: above spans downward over this row. It is equivalent ! 673: to a table format key-letter of `^'. ! 674: .IP "\fI##Text blocks\fR#" ! 675: \(em In order to include a block of text as a table entry, ! 676: precede it by $fat roman "T{" $ and follow ! 677: it by $fat roman "T}" $. ! 678: Thus the sequence ! 679: .in +2 ! 680: .nf ! 681: \*. \*. \*. $fat roman "T{"$ ! 682: .I ! 683: block of ! 684: text ! 685: .R ! 686: $fat roman "T}"$ \*. \*. \*. ! 687: .in -2 ! 688: .fi ! 689: is the way to enter, as a single entry in the table, something ! 690: that cannot conveniently be typed as a simple string between ! 691: tabs. ! 692: Note that the $fat roman "T}" $ end delimiter must begin a line; ! 693: additional columns of data may follow after a tab on the same line. ! 694: See the example on page 10 for an illustration of included text blocks ! 695: .e1 aa 10 ! 696: in a table. ! 697: If more than fifty or so text blocks are used in a table, ! 698: various limits in the ! 699: .I ! 700: troff ! 701: .R ! 702: program are likely to be exceeded, ! 703: producing diagnostics such as `too many string/macro names' or `too many ! 704: number registers.' ! 705: .IP ! 706: Text blocks are pulled out from the table, processed separately by ! 707: .I ! 708: troff, ! 709: .R ! 710: and replaced in the table as a solid block. If no line length ! 711: is specified in the ! 712: .I ! 713: block of text ! 714: .R ! 715: itself, or in the table format, ! 716: the default is to use ! 717: $ L times C / (N+1) $ ! 718: where ! 719: .I ! 720: L ! 721: .R ! 722: is the current line length, ! 723: .I ! 724: C ! 725: .R ! 726: is the number of table columns spanned by the text, ! 727: and ! 728: .I ! 729: N ! 730: .R ! 731: is the total number of columns in the table. ! 732: The other parameters (point size, font, etc.) used in setting the ! 733: .I ! 734: block of text ! 735: .R ! 736: are those in effect at the beginning of the table (including ! 737: the effect of the ``\*.TS'' macro) ! 738: and any table format specifications of size, spacing and font, ! 739: using the \fBp\fR, \fBv\fR and \fBf\fR modifiers to the column key-letters. ! 740: Commands within the text block itself are also recognized, of course. ! 741: However, ! 742: .I troff ! 743: commands within the table data but not within the text block ! 744: do not affect that block. ! 745: .br ! 746: .di RR ! 747: . this is going down a rathole ! 748: .EQ ! 749: delim off ! 750: .EN ! 751: .di ! 752: .rm RR ! 753: .IP "##\fBWarnings:\fR#" ! 754: \(em Although any number of lines may be present in a table, ! 755: only the first 200 lines are used in calculating ! 756: the widths of the various columns. ! 757: A multi-page table, ! 758: of course, may be arranged as several single-page tables ! 759: if this proves to be a problem. ! 760: Other difficulties with formatting may arise because, ! 761: in the calculation of column widths all table entries ! 762: are assumed to be in the font and size being used when ! 763: the ``\*.TS'' command was encountered, except for font and size changes ! 764: indicated (a) in the table format section and (b) ! 765: within the table data (as in the entry ! 766: \es+3\efIdata\efP\es0\|). ! 767: Therefore, although arbitrary ! 768: .I ! 769: troff ! 770: .R ! 771: requests may be sprinkled in a table, care must be taken ! 772: to avoid confusing the width calculations; ! 773: use requests such as `\*.ps' with care. ! 774: .tr ## ! 775: .sp .5v ! 776: .RE ! 777: .IP 4) ! 778: A\s-2DDITIONAL COMMAND LINES\s0. ! 779: If the format of a table must be changed after ! 780: many similar lines, as with sub-headings or summarizations, the ``\*.T&'' ! 781: (table continue) ! 782: command can be used ! 783: to change column parameters. ! 784: The outline of such a table input is: ! 785: .DS ! 786: .ft R ! 787: \&\*.TS ! 788: .ft I ! 789: \&options \fB;\fP ! 790: \&format \*. ! 791: \&data ! 792: \&\*. \*. \*. ! 793: .ft R ! 794: \&\*.T& ! 795: .ft I ! 796: \&format \*. ! 797: \&data ! 798: .ft R ! 799: \&\*.T& ! 800: .ft I ! 801: \&format \*. ! 802: \&data ! 803: .ft R ! 804: \&\*.TE ! 805: .DE ! 806: as in the examples on pages 10 and 12. ! 807: .e1 ab 10 ! 808: .e1 ac 12 ! 809: Using this procedure, each table line can be close to its corresponding format line. ! 810: .bd I 3 ! 811: .br ! 812: .sp 3p ! 813: .ft I ! 814: Warning: ! 815: .ft R ! 816: .bd I ! 817: it is not possible to change the number of columns, the space ! 818: between columns, the global options such as \fIbox,\fR ! 819: or the selection of columns to be made equal width. ! 820: Nor is .T& recognized after the first 200 lines of a table. ! 821: .SH ! 822: Usage. ! 823: .PP ! 824: On ! 825: \s-2UNIX\s0, ! 826: .I ! 827: tbl ! 828: .R ! 829: can be run on a simple table with the command ! 830: .DS ! 831: tbl input-file | troff ! 832: .DE ! 833: but ! 834: for more complicated use, where there are several input files, ! 835: and they contain equations and \fIms\fR memorandum layout commands as well ! 836: as tables, the normal command would be ! 837: .DS ! 838: tbl file-1 file-2 \*. \*. \*. | eqn | troff \-ms ! 839: .DE ! 840: and, of course, the usual options may be used on the ! 841: .I ! 842: troff ! 843: .R ! 844: and ! 845: .I ! 846: eqn ! 847: .R ! 848: commands. The usage for ! 849: .I ! 850: nroff ! 851: .R ! 852: is similar ! 853: to that for ! 854: .I ! 855: troff, ! 856: .R ! 857: but only ! 858: \s-2TELETYPE\s+2\(rg Model 37 and ! 859: Diablo-mechanism (\s-2DASI\s0 or \s-2GSI\s0) ! 860: terminals can print boxed tables directly. ! 861: If any of the file names are ``\-'' ! 862: the standard input is read at that point. ! 863: .PP ! 864: For the convenience of users employing line printers without ! 865: adequate driving tables or post-filters, there is a special ! 866: .I \-TX ! 867: command line option to ! 868: .I tbl ! 869: which produces output that does not have fractional line ! 870: motions in it. ! 871: The only other command line options recognized by ! 872: .I tbl ! 873: are ! 874: .I \-ms ! 875: and ! 876: .I \-mm ! 877: which are turned into ! 878: commands to fetch the corresponding macro files; ! 879: usually it is more convenient to place these arguments ! 880: on the ! 881: .I troff ! 882: part of the command line, ! 883: but they are accepted by ! 884: .I tbl ! 885: as well. ! 886: .PP ! 887: Note that when ! 888: .I ! 889: eqn ! 890: .R ! 891: and ! 892: .I ! 893: tbl ! 894: .R ! 895: are used together on the same file ! 896: .I ! 897: tbl ! 898: .R ! 899: should be used first. ! 900: If there are no equations within tables, ! 901: either order works, but it is usually faster ! 902: to run ! 903: .I ! 904: tbl ! 905: .R ! 906: first, since ! 907: .I ! 908: eqn ! 909: .R ! 910: normally produces a larger expansion of the input ! 911: than ! 912: .I ! 913: tbl. ! 914: .R ! 915: However, if there are equations within tables ! 916: (using the ! 917: .I ! 918: delim ! 919: .R ! 920: mechanism in ! 921: .I ! 922: eqn\fR), ! 923: .I ! 924: tbl ! 925: .R ! 926: must be first or the output will be scrambled. ! 927: Users must also beware of using equations in ! 928: \fBn\fR-style columns; this is nearly always wrong, ! 929: since ! 930: .I ! 931: tbl ! 932: .R ! 933: attempts to split numerical format items into two parts and this ! 934: is not possible with equations. ! 935: The user can defend against this by giving the ! 936: .I delim(xx) ! 937: table option; ! 938: this prevents splitting of numerical columns within the delimiters. ! 939: For example, if the ! 940: .I eqn ! 941: delimiters ! 942: are ! 943: .I $$ , ! 944: giving ! 945: .I delim($$) ! 946: a numerical column such as ! 947: ``1245 $+- 16$'' ! 948: will be divided after 1245, not after 16. ! 949: .PP ! 950: .I Tbl ! 951: accepts up to about 35 columns, the exact number ! 952: depending on the availability ! 953: of number registers. ! 954: The user must avoid number register names used ! 955: by tbl, which include two-digit numbers from 31 to 97, ! 956: and strings of the form ! 957: 4\fIx\fR, 5\fIx\fR, ! 958: #\fIx\fR, \fIx\fR+, \fIx\fR\ |, \v'3p'^\v'-3p'\fIx\fR, and \fIx\fR\(mi, ! 959: where ! 960: \fIx\fR is any lower case letter. ! 961: The names ! 962: ##, #\(mi, and #^ are also used in certain circumstances. ! 963: To conserve number register names, the ! 964: \fBn\fR ! 965: and ! 966: \fBa\fR ! 967: formats share a register; ! 968: hence the restriction above that they may not be used in the same column. ! 969: .PP ! 970: For aid in writing layout macros, ! 971: .I ! 972: tbl ! 973: .R ! 974: defines a number register TW which is ! 975: the table width; it is defined by the time that the ``\*.TE'' macro ! 976: is invoked and may be used in the expansion of that macro. ! 977: More importantly, to assist in laying out multi-page boxed tables ! 978: the macro T# is defined to produce the bottom lines and side lines of a boxed ! 979: table, and then invoked at its end. By use of this macro ! 980: in the page footer a multi-page table can be boxed. ! 981: In particular, the ! 982: .I ! 983: ms ! 984: .R ! 985: macros can be used to print a multi-page boxed table with a repeated heading ! 986: by giving the ! 987: argument H to the ``\*.TS'' macro. ! 988: If the table start macro is written ! 989: .br ! 990: \&\*.TS H ! 991: .br ! 992: a line of the form ! 993: .br ! 994: \&\*.TH ! 995: .br ! 996: must be given in the table after any table heading (or at the start if none). ! 997: Material up to the ``\*.TH'' is placed at the top of each page of table; ! 998: the remaining lines in the table are placed on several pages as required. ! 999: Note that this is ! 1000: .I ! 1001: not ! 1002: .R ! 1003: a feature of ! 1004: .I ! 1005: tbl, ! 1006: .R ! 1007: but of the \fIms\fR layout macros. ! 1008: .SH ! 1009: Examples. ! 1010: .PP ! 1011: Here are some examples illustrating features of ! 1012: .I ! 1013: tbl. ! 1014: .R ! 1015: .ds T \|\h'.4n'\v'-.2n'\s6\zT\s0\s10\v'.2n'\h'-.4n'\(ci\|\s0 ! 1016: The symbol \*T in the input represents a tab character. ! 1017: .de IN ! 1018: .po \\n(POu ! 1019: .sp |\\n(.hu ! 1020: .sp ! 1021: .ne \\$1 ! 1022: .mk ! 1023: .B ! 1024: Input: ! 1025: .R ! 1026: .sp .5 ! 1027: .nf ! 1028: .in +3n ! 1029: .. ! 1030: .de OU ! 1031: .br ! 1032: .in -3n ! 1033: .rt ! 1034: .po +3i ! 1035: .B ! 1036: Output: ! 1037: .R ! 1038: .sp .5 ! 1039: .. ! 1040: .rm TS ! 1041: .rm TE ! 1042: .nf ! 1043: .IN 2.5i ! 1044: \&\*.TS ! 1045: \&box; ! 1046: \&c c c ! 1047: \&l l l\*. ! 1048: \&Language\*TAuthors\*TRuns on ! 1049: \& ! 1050: \&Fortran\*TMany\*TAlmost anything ! 1051: \&PL/1\*TIBM\*T360/370 ! 1052: \&C\*TBTL\*T11/45,H6000,370 ! 1053: \&BLISS\*TCarnegie-Mellon\*TPDP-10,11 ! 1054: \&IDS\*THoneywell\*TH6000 ! 1055: \&Pascal\*TStanford\*T370 ! 1056: \&\*.TE ! 1057: .OU ! 1058: .TS ! 1059: box; ! 1060: c c c ! 1061: l l l. ! 1062: Language Authors Runs on ! 1063: ! 1064: Fortran Many Almost anything ! 1065: PL/1 IBM 360/370 ! 1066: C BTL 11/45,H6000,370 ! 1067: BLISS Carnegie-Mellon PDP-10,11 ! 1068: IDS Honeywell H6000 ! 1069: Pascal Stanford 370 ! 1070: .TE ! 1071: .IN 2.8i ! 1072: \&\*.TS ! 1073: \&allbox; ! 1074: \&c s s ! 1075: \&c c c ! 1076: \&n n n\*. ! 1077: \&AT&T Common Stock ! 1078: \&Year\*TPrice\*TDividend ! 1079: \&1971\*T41-54\*T$2\*.60 ! 1080: \&2\*T41-54\*T2\*.70 ! 1081: \&3\*T46-55\*T2\*.87 ! 1082: \&4\*T40-53\*T3\*.24 ! 1083: \&5\*T45-52\*T3\*.40 ! 1084: \&6\*T51-59\*T\*.95* ! 1085: \&\*.TE ! 1086: \&* (first quarter only) ! 1087: .OU ! 1088: .TS ! 1089: allbox; ! 1090: c s s ! 1091: c c c ! 1092: n n n. ! 1093: AT&T Common Stock ! 1094: Year Price Dividend ! 1095: 1971 41-54 $2.60 ! 1096: 2 41-54 2.70 ! 1097: 3 46-55 2.87 ! 1098: 4 40-53 3.24 ! 1099: 5 45-52 3.40 ! 1100: 6 51-59 .95* ! 1101: .TE ! 1102: * (first quarter only) ! 1103: .IN 4i ! 1104: \&\*.TS ! 1105: \&box; ! 1106: \&c s s ! 1107: \&c | c | c ! 1108: \&l | l | n\*. ! 1109: \&Major New York Bridges ! 1110: \&= ! 1111: \&Bridge\*TDesigner\*TLength ! 1112: \&\(ul ! 1113: \&Brooklyn\*TJ\*. A\*. Roebling\*T1595 ! 1114: \&Manhattan\*TG\*. Lindenthal\*T1470 ! 1115: \&Williamsburg\*TL\*. L\*. Buck\*T1600 ! 1116: \&\(ul ! 1117: \&Queensborough\*TPalmer &\*T1182 ! 1118: \&\*T Hornbostel ! 1119: \&\(ul ! 1120: \&\*T\*T1380 ! 1121: \&Triborough\*TO\*. H\*. Ammann\*T\(ul ! 1122: \&\*T\*T383 ! 1123: \&\(ul ! 1124: \&Bronx Whitestone\*TO\*. H\*. Ammann\*T2300 ! 1125: \&Throgs Neck\*TO\*. H\*. Ammann\*T1800 ! 1126: \&\(ul ! 1127: \&George Washington\*TO\*. H\*. Ammann\*T3500 ! 1128: \&\*.TE ! 1129: .OU ! 1130: .TS ! 1131: box; ! 1132: c s s ! 1133: c | c | c ! 1134: l | l | n. ! 1135: Major New York Bridges ! 1136: = ! 1137: Bridge Designer Length ! 1138: _ ! 1139: Brooklyn J. A. Roebling 1595 ! 1140: Manhattan G. Lindenthal 1470 ! 1141: Williamsburg L. L. Buck 1600 ! 1142: _ ! 1143: Queensborough Palmer & 1182 ! 1144: Hornbostel ! 1145: _ ! 1146: 1380 ! 1147: Triborough O. H. Ammann _ ! 1148: 383 ! 1149: _ ! 1150: Bronx Whitestone O. H. Ammann 2300 ! 1151: Throgs Neck O. H. Ammann 1800 ! 1152: _ ! 1153: George Washington O. H. Ammann 3500 ! 1154: .TE ! 1155: .IN 3.0i ! 1156: \&\*.TS ! 1157: \&c c ! 1158: \&np-2 | n | \*. ! 1159: \&\*TStack ! 1160: \&\*T\(ul ! 1161: \&1\*T46 ! 1162: \&\*T\(ul ! 1163: \&2\*T23 ! 1164: \&\*T\(ul ! 1165: \&3\*T15 ! 1166: \&\*T\(ul ! 1167: \&4\*T6\*.5 ! 1168: \&\*T\(ul ! 1169: \&5\*T2\*.1 ! 1170: \&\*T\(ul ! 1171: \&\*.TE ! 1172: .OU ! 1173: .TS ! 1174: c c ! 1175: np-2 | n |. ! 1176: Stack ! 1177: _ ! 1178: 1 46 ! 1179: _ ! 1180: 2 23 ! 1181: _ ! 1182: 3 15 ! 1183: _ ! 1184: 4 6.5 ! 1185: _ ! 1186: 5 2.1 ! 1187: _ ! 1188: .TE ! 1189: .IN 2.5i ! 1190: \&\*.TS ! 1191: \&box; ! 1192: \&L L L ! 1193: \&L L \(ul ! 1194: \&L L | LB ! 1195: \&L L \(ul ! 1196: \&L L L\*. ! 1197: \&january\*Tfebruary\*Tmarch ! 1198: \&april\*Tmay ! 1199: \&june\*Tjuly\*TMonths ! 1200: \&august\*Tseptember ! 1201: \&october\*Tnovember\*Tdecember ! 1202: \&\*.TE ! 1203: .OU ! 1204: .TS ! 1205: box; ! 1206: L L L ! 1207: L L _ ! 1208: L L | LB ! 1209: L L _ ! 1210: L L L. ! 1211: january february march ! 1212: april may ! 1213: june july Months ! 1214: august september ! 1215: october november december ! 1216: .TE ! 1217: .IN 5.0i ! 1218: .e2 ab ! 1219: \&\*.TS ! 1220: \&box; ! 1221: \&cfB s s s\*. ! 1222: \&Composition of Foods ! 1223: \&\(ul ! 1224: \&\*.T& ! 1225: \&c | c s s ! 1226: \&c | c s s ! 1227: \&c | c | c | c\*. ! 1228: \&Food\*TPercent by Weight ! 1229: \&\e^\*T\(ul ! 1230: \&\e^\*TProtein\*TFat\*TCarbo- ! 1231: \&\e^\*T\e^\*T\e^\*Thydrate ! 1232: \&\(ul ! 1233: \&\*.T& ! 1234: \&l | n | n | n\*. ! 1235: \&Apples\*T\*.4\*T\*.5\*T13\*.0 ! 1236: \&Halibut\*T18\*.4\*T5\*.2\*T\*. \*. \*. ! 1237: \&Lima beans\*T7\*.5\*T\*.8\*T22\*.0 ! 1238: \&Milk\*T3\*.3\*T4\*.0\*T5\*.0 ! 1239: \&Mushrooms\*T3\*.5\*T\*.4\*T6\*.0 ! 1240: \&Rye bread\*T9\*.0\*T\*.6\*T52\*.7 ! 1241: \&\*.TE ! 1242: .OU ! 1243: .TS ! 1244: box; ! 1245: cfB s s s. ! 1246: Composition of Foods ! 1247: _ ! 1248: .T& ! 1249: c |c s s ! 1250: c |c s s ! 1251: c |c |c |c. ! 1252: Food Percent by Weight ! 1253: \^ _ ! 1254: \^ Protein Fat Carbo- ! 1255: \^ \^ \^ hydrate ! 1256: _ ! 1257: .T& ! 1258: l |n |n |n. ! 1259: Apples .4 .5 13.0 ! 1260: Halibut 18.4 5.2 ... ! 1261: Lima beans 7.5 .8 22.0 ! 1262: Milk 3.3 4.0 5.0 ! 1263: Mushrooms 3.5 .4 6.0 ! 1264: Rye bread 9.0 .6 52.7 ! 1265: .TE ! 1266: .IN 3.7i ! 1267: .e2 aa ! 1268: \&\*.TS ! 1269: \&allbox; ! 1270: \&cfI s s ! 1271: \&c cw(1i) cw(1i) ! 1272: \&lp9 lp9 lp9\*. ! 1273: \&New York Area Rocks ! 1274: \&Era\*TFormation\*TAge (years) ! 1275: \&Precambrian\*TReading Prong\*T>1 billion ! 1276: \&Paleozoic\*TManhattan Prong\*T400 million ! 1277: \&Mesozoic\*TT{ ! 1278: \&\*.na ! 1279: \&Newark Basin, incl\*. ! 1280: \&Stockton, Lockatong, and Brunswick ! 1281: \&formations; also Watchungs ! 1282: \&and Palisades\*. ! 1283: \&T}\*T200 million ! 1284: \&Cenozoic\*TCoastal Plain\*TT{ ! 1285: \&On Long Island 30,000 years; ! 1286: \&Cretaceous sediments redeposited ! 1287: \&by recent glaciation\*. ! 1288: \&\*.ad ! 1289: \&T} ! 1290: \&\*.TE ! 1291: .OU ! 1292: .fi ! 1293: .TS ! 1294: allbox; ! 1295: cfI s s ! 1296: c cw(1i) cw(1i) ! 1297: lp9 lp9 lp9. ! 1298: New York Area Rocks ! 1299: Era Formation Age (years) ! 1300: Precambrian Reading Prong >1 billion ! 1301: Paleozoic Manhattan Prong 400 million ! 1302: Mesozoic T{ ! 1303: .na ! 1304: Newark Basin, incl. ! 1305: Stockton, Lockatong, and Brunswick ! 1306: formations; also Watchungs ! 1307: and Palisades. ! 1308: T} 200 million ! 1309: Cenozoic Coastal Plain T{ ! 1310: On Long Island 30,000 years; ! 1311: Cretaceous sediments redeposited ! 1312: by recent glaciation. ! 1313: .ad ! 1314: T} ! 1315: .TE ! 1316: .IN 2i ! 1317: \&\*.EQ ! 1318: \&delim $$ ! 1319: \&\*.EN ! 1320: .sp ! 1321: \&\*. \*. \*. ! 1322: .sp ! 1323: \&\*.TS ! 1324: \&doublebox; ! 1325: \&c c ! 1326: \&l l\*. ! 1327: \&Name\*TDefinition ! 1328: \&\*.sp ! 1329: \&\*.vs +2p ! 1330: \&Gamma\*T$GAMMA (z) = int sub 0 sup inf t sup {z-1} e sup -t dt$ ! 1331: \&Sine\*T$sin (x) = 1 over 2i ( e sup ix - e sup -ix )$ ! 1332: \&Error\*T$ roman erf (z) = 2 over sqrt pi int sub 0 sup z e sup {-t sup 2} dt$ ! 1333: \&Bessel\*T$ J sub 0 (z) = 1 over pi int sub 0 sup pi cos ( z sin theta ) d theta $ ! 1334: \&Zeta\*T$ zeta (s) = sum from k=1 to inf k sup -s ~~( Re~s > 1)$ ! 1335: \&\*.vs -2p ! 1336: \&\*.TE ! 1337: .di qq ! 1338: .EQ ! 1339: delim $$ ! 1340: .EN ! 1341: .di ! 1342: .rm qq ! 1343: .rs ! 1344: .OU ! 1345: .TS ! 1346: doublebox; ! 1347: c c ! 1348: l l. ! 1349: Name Definition ! 1350: .sp ! 1351: .vs +2p ! 1352: Gamma $GAMMA (z) = int sub 0 sup inf t sup {z-1} e sup -t dt$ ! 1353: Sine $sin (x) = 1 over 2i ( e sup ix - e sup -ix )$ ! 1354: Error $ roman erf (z) = 2 over sqrt pi int sub 0 sup z e sup {-t sup 2} dt$ ! 1355: Bessel $ J sub 0 (z) = 1 over pi int sub 0 sup pi cos ( z sin theta ) d theta $ ! 1356: Zeta $ zeta (s) = sum from k=1 to inf k sup -s ~~( Re~s > 1)$ ! 1357: .vs -2p ! 1358: .TE ! 1359: .ds : \|:\| ! 1360: .IN 2i ! 1361: \&\*.TS ! 1362: \&box, tab(\*:); ! 1363: \&cb s s s s ! 1364: \&cp-2 s s s s ! 1365: \&c |\|| c | c | c | c ! 1366: \&c |\|| c | c | c | c ! 1367: \&r2 |\|| n2 | n2 | n2 | n\*. ! 1368: \&Readability of Text ! 1369: \&Line Width and Leading for 10-Point Type ! 1370: \&= ! 1371: \&Line\*:Set\*:1-Point\*:2-Point\*:4-Point ! 1372: \&Width\*:Solid\*:Leading\*:Leading\*:Leading ! 1373: \&_ ! 1374: \&9 Pica\*:\e-9\*.3\*:\e-6\*.0\*:\e-5\*.3\*:\e-7\*.1 ! 1375: \&14 Pica\*:\e-4\*.5\*:\e-0\*.6\*:\e-0\*.3\*:\e-1\*.7 ! 1376: \&19 Pica\*:\e-5\*.0\*:\e-5\*.1\*: 0\*.0\*:\e-2\*.0 ! 1377: \&31 Pica\*:\e-3\*.7\*:\e-3\*.8\*:\e-2\*.4\*:\e-3\*.6 ! 1378: \&43 Pica\*:\e-9\*.1\*:\e-9\*.0\*:\e-5\*.9\*:\e-8\*.8 ! 1379: \&\*.TE ! 1380: .OU ! 1381: .TS ! 1382: box, tab(:); ! 1383: cb s s s s ! 1384: cp-2 s s s s ! 1385: c ||c |c |c |c ! 1386: c ||c |c |c |c ! 1387: r2 ||n2 |n2 |n2 |n. ! 1388: Readability of Text ! 1389: Line Width and Leading for 10-Point Type ! 1390: = ! 1391: Line:Set:1-Point:2-Point:4-Point ! 1392: Width:Solid:Leading:Leading:Leading ! 1393: _ ! 1394: 9 Pica:\-9.3:\-6.0:\-5.3:\-7.1 ! 1395: 14 Pica:\-4.5:\-0.6:\-0.3:\-1.7 ! 1396: 19 Pica:\-5.0:\-5.1: 0.0:\-2.0 ! 1397: 31 Pica:\-3.7:\-3.8:\-2.4:\-3.6 ! 1398: 43 Pica:\-9.1:\-9.0:\-5.9:\-8.8 ! 1399: .TE ! 1400: .IN 7i ! 1401: .e2 ac ! 1402: \&\*.TS ! 1403: \&c s ! 1404: \&cip-2 s ! 1405: \&l n ! 1406: \&a n\*. ! 1407: \&Some London Transport Statistics ! 1408: \&(Year 1964) ! 1409: \&Railway route miles\*T244 ! 1410: \&Tube\*T66 ! 1411: \&Sub-surface\*T22 ! 1412: \&Surface\*T156 ! 1413: \&\*.sp \*.5 ! 1414: \&\*.T& ! 1415: \&l r ! 1416: \&a r\*. ! 1417: \&Passenger traffic \e- railway ! 1418: \&Journeys\*T674 million ! 1419: \&Average length\*T4\*.55 miles ! 1420: \&Passenger miles\*T3,066 million ! 1421: \&\*.T& ! 1422: \&l r ! 1423: \&a r\*. ! 1424: \&Passenger traffic \e- road ! 1425: \&Journeys\*T2,252 million ! 1426: \&Average length\*T2\*.26 miles ! 1427: \&Passenger miles\*T5,094 million ! 1428: \&\*.T& ! 1429: \&l n ! 1430: \&a n\*. ! 1431: \&\*.sp \*.5 ! 1432: \&Vehicles\*T12,521 ! 1433: \&Railway motor cars\*T2,905 ! 1434: \&Railway trailer cars\*T1,269 ! 1435: \&Total railway\*T4,174 ! 1436: \&Omnibuses\*T8,347 ! 1437: \&\*.T& ! 1438: \&l n ! 1439: \&a n\*. ! 1440: \&\*.sp \*.5 ! 1441: \&Staff\*T73,739 ! 1442: \&Administrative, etc\*.\*T5,582 ! 1443: \&Civil engineering\*T5,134 ! 1444: \&Electrical eng\*.\*T1,714 ! 1445: \&Mech\*. eng\*. \e- railway\*T4,310 ! 1446: \&Mech\*. eng\*. \e- road\*T9,152 ! 1447: \&Railway operations\*T8,930 ! 1448: \&Road operations\*T35,946 ! 1449: \&Other\*T2,971 ! 1450: \&\*.TE ! 1451: .OU ! 1452: .TS ! 1453: c s ! 1454: cip-2 s ! 1455: l n ! 1456: a n. ! 1457: Some London Transport Statistics ! 1458: (Year 1964) ! 1459: Railway route miles 244 ! 1460: Tube 66 ! 1461: Sub-surface 22 ! 1462: Surface 156 ! 1463: .sp .5 ! 1464: .T& ! 1465: l r ! 1466: a r. ! 1467: Passenger traffic \(mi railway ! 1468: Journeys 674 million ! 1469: Average length 4.55 miles ! 1470: Passenger miles 3,066 million ! 1471: .T& ! 1472: l r ! 1473: a r. ! 1474: Passenger traffic \(mi road ! 1475: Journeys 2,252 million ! 1476: Average length 2.26 miles ! 1477: Passenger miles 5,094 million ! 1478: .T& ! 1479: l n ! 1480: a n. ! 1481: .sp .5 ! 1482: Vehicles 12,521 ! 1483: Railway motor cars 2,905 ! 1484: Railway trailer cars 1,269 ! 1485: Total railway 4,174 ! 1486: Omnibuses 8,347 ! 1487: .T& ! 1488: l n ! 1489: a n. ! 1490: .sp .5 ! 1491: Staff 73,739 ! 1492: Administrative, etc. 5,582 ! 1493: Civil engineering 5,134 ! 1494: Electrical eng. 1,714 ! 1495: Mech. eng. \(mi railway 4,310 ! 1496: Mech. eng. \(mi road 9,152 ! 1497: Railway operations 8,930 ! 1498: Road operations 35,946 ! 1499: Other 2,971 ! 1500: .TE ! 1501: .po \n(POu ! 1502: .sp |\n(.hu ! 1503: .de IN ! 1504: .sp ! 1505: .ne 1i ! 1506: .B ! 1507: Input: ! 1508: .R ! 1509: .sp .5 ! 1510: .in +3n ! 1511: .nf ! 1512: .. ! 1513: .de OU ! 1514: .sp ! 1515: .in -3n ! 1516: .ne 1i ! 1517: .B ! 1518: Output: ! 1519: .R ! 1520: .sp .5 ! 1521: .. ! 1522: .ns ! 1523: .EQ ! 1524: delim off ! 1525: .EN ! 1526: .IN ! 1527: \&\*.ps 8 ! 1528: \&\*.vs 10p ! 1529: \&\*.TS ! 1530: center box; ! 1531: \&c s s ! 1532: \&ci s s ! 1533: \&c c c ! 1534: \&lB l n\*. ! 1535: \&New Jersey Representatives ! 1536: \&(Democrats) ! 1537: \&\*.sp \*.5 ! 1538: \&Name\*TOffice address\*TPhone ! 1539: \&\*.sp \*.5 ! 1540: \&James J\*. Florio\*T23 S\*. White Horse Pike, Somerdale 08083\*T609-627-8222 ! 1541: \&William J\*. Hughes\*T2920 Atlantic Ave\*., Atlantic City 08401\*T609-345-4844 ! 1542: \&James J\*. Howard\*T801 Bangs Ave\*., Asbury Park 07712\*T201-774-1600 ! 1543: \&Frank Thompson, Jr\*.\*T10 Rutgers Pl\*., Trenton 08618\*T609-599-1619 ! 1544: \&Andrew Maguire\*T115 W\*. Passaic St\*., Rochelle Park 07662\*T201-843-0240 ! 1545: \&Robert A\*. Roe\*TU\*.S\*.P\*.O\*., 194 Ward St\*., Paterson 07510\*T201-523-5152 ! 1546: \&Henry Helstoski\*T666 Paterson Ave\*., East Rutherford 07073\*T201-939-9090 ! 1547: \&Peter W\*. Rodino, Jr\*.\*TSuite 1435A, 970 Broad St\*., Newark 07102\*T201-645-3213 ! 1548: \&Joseph G\*. Minish\*T308 Main St\*., Orange 07050\*T201-645-6363 ! 1549: \&Helen S\*. Meyner\*T32 Bridge St\*., Lambertville 08530\*T609-397-1830 ! 1550: \&Dominick V\*. Daniels\*T895 Bergen Ave\*., Jersey City 07306\*T201-659-7700 ! 1551: \&Edward J\*. Patten\*TNatl\*. Bank Bldg\*., Perth Amboy 08861\*T201-826-4610 ! 1552: \&\*.sp \*.5 ! 1553: \&\*.T& ! 1554: \&ci s s ! 1555: \&lB l n\*. ! 1556: \&(Republicans) ! 1557: \&\*.sp \*.5v ! 1558: \&Millicent Fenwick\*T41 N\*. Bridge St\*., Somerville 08876\*T201-722-8200 ! 1559: \&Edwin B\*. Forsythe\*T301 Mill St\*., Moorestown 08057\*T609-235-6622 ! 1560: \&Matthew J\*. Rinaldo\*T1961 Morris Ave\*., Union 07083\*T201-687-4235 ! 1561: \&\*.TE ! 1562: \&\*.ps 10 ! 1563: \&\*.vs 12p ! 1564: .ne 3.2i ! 1565: .OU ! 1566: .ps 8 ! 1567: .vs 10p ! 1568: .TS ! 1569: center box; ! 1570: c s s ! 1571: ci s s ! 1572: c c c ! 1573: lB l n. ! 1574: New Jersey Representatives ! 1575: (Democrats) ! 1576: .sp .5 ! 1577: Name Office address Phone ! 1578: .sp .5 ! 1579: James J. Florio 23 S. White Horse Pike, Somerdale 08083 609-627-8222 ! 1580: William J. Hughes 2920 Atlantic Ave., Atlantic City 08401 609-345-4844 ! 1581: James J. Howard 801 Bangs Ave., Asbury Park 07712 201-774-1600 ! 1582: Frank Thompson, Jr. 10 Rutgers Pl., Trenton 08618 609-599-1619 ! 1583: Andrew Maguire 115 W. Passaic St., Rochelle Park 07662 201-843-0240 ! 1584: Robert A. Roe U.S.P.O., 194 Ward St., Paterson 07510 201-523-5152 ! 1585: Henry Helstoski 666 Paterson Ave., East Rutherford 07073 201-939-9090 ! 1586: Peter W. Rodino, Jr. Suite 1435A, 970 Broad St., Newark 07102 201-645-3213 ! 1587: Joseph G. Minish 308 Main St., Orange 07050 201-645-6363 ! 1588: Helen S. Meyner 32 Bridge St., Lambertville 08530 609-397-1830 ! 1589: Dominick V. Daniels 895 Bergen Ave., Jersey City 07306 201-659-7700 ! 1590: Edward J. Patten Natl. Bank Bldg., Perth Amboy 08861 201-826-4610 ! 1591: .sp .5 ! 1592: .T& ! 1593: ci s s ! 1594: lB l n. ! 1595: (Republicans) ! 1596: .sp .5v ! 1597: Millicent Fenwick 41 N. Bridge St., Somerville 08876 201-722-8200 ! 1598: Edwin B. Forsythe 301 Mill St., Moorestown 08057 609-235-6622 ! 1599: Matthew J. Rinaldo 1961 Morris Ave., Union 07083 201-687-4235 ! 1600: .TE ! 1601: .ps 10 ! 1602: .vs 12p ! 1603: .sp ! 1604: .fi ! 1605: This is a paragraph of normal text placed here only to indicate where ! 1606: the left and right margins are. In this way the reader can judge ! 1607: the appearance of centered tables or expanded tables, and observe ! 1608: how such tables are formatted. ! 1609: .IN ! 1610: \&\*.TS ! 1611: \&expand; ! 1612: \&c s s s ! 1613: \&c c c c ! 1614: \&l l n n\*. ! 1615: \&Bell Labs Locations ! 1616: \&Name\*TAddress\*TArea Code\*TPhone ! 1617: \&Holmdel\*THolmdel, N\*. J\*. 07733\*T201\*T949-3000 ! 1618: \&Murray Hill\*TMurray Hill, N\*. J\*. 07974\*T201\*T582-6377 ! 1619: \&Whippany\*TWhippany, N\*. J\*. 07981\*T201\*T386-3000 ! 1620: \&Indian Hill\*TNaperville, Illinois 60540\*T312\*T690-2000 ! 1621: \&\*.TE ! 1622: .ne 1.3i ! 1623: .OU ! 1624: .TS ! 1625: expand; ! 1626: c s s s ! 1627: c c c c ! 1628: l l n n. ! 1629: Bell Labs Locations ! 1630: Name Address Area Code Phone ! 1631: Holmdel Holmdel, N. J. 07733 201 949-3000 ! 1632: Murray Hill Murray Hill, N. J. 07974 201 582-6377 ! 1633: Whippany Whippany, N. J. 07981 201 386-3000 ! 1634: Indian Hill Naperville, Illinois 60540 312 690-2000 ! 1635: .TE ! 1636: .br ! 1637: .ps 8 ! 1638: .vs 9p ! 1639: .ne 5i ! 1640: .IN ! 1641: \&\*.TS ! 1642: \&box; ! 1643: \&cb s s s ! 1644: \&c | c | c s ! 1645: \<iw(1i) | ltw(2i) | lp8 | lw(1\*.6i)p8\*. ! 1646: \&Some Interesting Places ! 1647: \&_ ! 1648: \&Name\*TDescription\*TPractical Information ! 1649: \&_ ! 1650: \&T{ ! 1651: \&American Museum of Natural History ! 1652: \&T}\*TT{ ! 1653: \&The collections fill 11\*.5 acres (Michelin) or 25 acres (MTA) ! 1654: \&of exhibition halls on four floors\*. There is a full-sized replica ! 1655: \&of a blue whale and the world's largest star sapphire (stolen in 1964)\*. ! 1656: \&T}\*THours\*T10-5, ex\*. Sun 11-5, Wed\*. to 9 ! 1657: \&\e^\*T\e^\*TLocation\*TT{ ! 1658: \&Central Park West & 79th St\*. ! 1659: \&T} ! 1660: \&\e^\*T\e^\*TAdmission\*TDonation: $1\*.00 asked ! 1661: \&\e^\*T\e^\*TSubway\*TAA to 81st St\*. ! 1662: \&\e^\*T\e^\*TTelephone\*T212-873-4225 ! 1663: \&_ ! 1664: \&Bronx Zoo\*TT{ ! 1665: \&About a mile long and \*.6 mile wide, this is the largest zoo in America\*. ! 1666: \&A lion eats 18 pounds ! 1667: \&of meat a day while a sea lion eats 15 pounds of fish\*. ! 1668: \&T}\*THours\*TT{ ! 1669: \&10-4:30 winter, to 5:00 summer ! 1670: \&T} ! 1671: \&\e^\*T\e^\*TLocation\*TT{ ! 1672: \&185th St\*. & Southern Blvd, the Bronx\*. ! 1673: \&T} ! 1674: \&\e^\*T\e^\*TAdmission\*T$1\*.00, but Tu,We,Th free ! 1675: \&\e^\*T\e^\*TSubway\*T2, 5 to East Tremont Ave\*. ! 1676: \&\e^\*T\e^\*TTelephone\*T212-933-1759 ! 1677: \&_ ! 1678: \&Brooklyn Museum\*TT{ ! 1679: \&Five floors of galleries contain American and ancient art\*. ! 1680: \&There are American period rooms and architectural ornaments saved ! 1681: \&from wreckers, such as a classical figure from Pennsylvania Station\*. ! 1682: \&T}\*THours\*TWed-Sat, 10-5, Sun 12-5 ! 1683: \&\e^\*T\e^\*TLocation\*TT{ ! 1684: \&Eastern Parkway & Washington Ave\*., Brooklyn\*. ! 1685: \&T} ! 1686: \&\e^\*T\e^\*TAdmission\*TFree ! 1687: \&\e^\*T\e^\*TSubway\*T2,3 to Eastern Parkway\*. ! 1688: \&\e^\*T\e^\*TTelephone\*T212-638-5000 ! 1689: \&_ ! 1690: \&T{ ! 1691: \&New-York Historical Society ! 1692: \&T}\*TT{ ! 1693: \&All the original paintings for Audubon's ! 1694: \&\*.I ! 1695: \&Birds of America ! 1696: \&\*.R ! 1697: \&are here, as are exhibits of American decorative arts, New York history, ! 1698: \&Hudson River school paintings, carriages, and glass paperweights\*. ! 1699: \&T}\*THours\*TT{ ! 1700: \&Tues-Fri & Sun, 1-5; Sat 10-5 ! 1701: \&T} ! 1702: \&\e^\*T\e^\*TLocation\*TT{ ! 1703: \&Central Park West & 77th St\*. ! 1704: \&T} ! 1705: \&\e^\*T\e^\*TAdmission\*TFree ! 1706: \&\e^\*T\e^\*TSubway\*TAA to 81st St\*. ! 1707: \&\e^\*T\e^\*TTelephone\*T212-873-3400 ! 1708: \&\*.TE ! 1709: .br ! 1710: .ps \n(PS ! 1711: .vs \n(VSp ! 1712: .OU ! 1713: .fi ! 1714: .rr 10 11 12 13 14 15 16 17 18 19 20 21 22 98 99 ! 1715: .rr 60 61 62 63 64 65 66 67 68 69 70 ! 1716: .rr 43 44 45 46 47 48 49 50 51 52 53 ! 1717: .rr 83 84 85 86 87 88 89 90 91 92 93 ! 1718: .rr #a ! 1719: .rr #b ! 1720: .rr #c ! 1721: .rr #d ! 1722: .rr #e ! 1723: .rr YY ! 1724: .rr OJ ! 1725: .rr P ! 1726: .rr AV CW GW DW FL KN SJ A1 A2 A3 I1 I2 I3 ! 1727: .in 0 ! 1728: .hy 1 ! 1729: .TS ! 1730: box; ! 1731: cb s s s ! 1732: c | c | c s ! 1733: ltiw(1i) | ltw(2i) | lp8| lw(1.6i)p8. ! 1734: Some Interesting Places ! 1735: _ ! 1736: Name Description Practical Information ! 1737: _ ! 1738: T{ ! 1739: American Museum of Natural History ! 1740: T} T{ ! 1741: The collections fill 11.5 acres (Michelin) or 25 acres (MTA) ! 1742: of exhibition halls on four floors. There is a full-sized replica ! 1743: of a blue whale and the world's largest star sapphire (stolen in 1964). ! 1744: T} Hours 10-5, ex. Sun 11-5, Wed. to 9 ! 1745: \^ \^ Location T{ ! 1746: Central Park West & 79th St. ! 1747: T} ! 1748: \^ \^ Admission Donation: $1.00 asked ! 1749: \^ \^ Subway AA to 81st St. ! 1750: \^ \^ Telephone 212-873-4225 ! 1751: _ ! 1752: Bronx Zoo T{ ! 1753: About a mile long and .6 mile wide, this is the largest zoo in America. ! 1754: A lion eats 18 pounds ! 1755: of meat a day while a sea lion eats 15 pounds of fish. ! 1756: T} Hours T{ ! 1757: 10-4:30 winter, to 5:00 summer ! 1758: T} ! 1759: \^ \^ Location T{ ! 1760: 185th St. & Southern Blvd, the Bronx. ! 1761: T} ! 1762: \^ \^ Admission $1.00, but Tu,We,Th free ! 1763: \^ \^ Subway 2, 5 to East Tremont Ave. ! 1764: \^ \^ Telephone 212-933-1759 ! 1765: _ ! 1766: Brooklyn Museum T{ ! 1767: Five floors of galleries contain American and ancient art. ! 1768: There are American period rooms and architectural ornaments saved ! 1769: from wreckers, such as a classical figure from Pennsylvania Station. ! 1770: T} Hours Wed-Sat, 10-5, Sun 12-5 ! 1771: \^ \^ Location T{ ! 1772: Eastern Parkway & Washington Ave., Brooklyn. ! 1773: T} ! 1774: \^ \^ Admission Free ! 1775: \^ \^ Subway 2,3 to Eastern Parkway. ! 1776: \^ \^ Telephone 212-638-5000 ! 1777: _ ! 1778: T{ ! 1779: New-York Historical Society ! 1780: T} T{ ! 1781: All the original paintings for Audubon's ! 1782: .I ! 1783: Birds of America ! 1784: .R ! 1785: are here, as are exhibits of American decorative arts, New York history, ! 1786: Hudson River school paintings, carriages, and glass paperweights. ! 1787: T} Hours T{ ! 1788: Tues-Fri & Sun, 1-5; Sat 10-5 ! 1789: T} ! 1790: \^ \^ Location T{ ! 1791: Central Park West & 77th St. ! 1792: T} ! 1793: \^ \^ Admission Free ! 1794: \^ \^ Subway AA to 81st St. ! 1795: \^ \^ Telephone 212-873-3400 ! 1796: .TE ! 1797: .rr 40 ! 1798: .rr 41 ! 1799: .rr 42 ! 1800: .rr 43 ! 1801: .rr 80 ! 1802: .rr 81 ! 1803: .rr 82 ! 1804: .rr 83 ! 1805: .rr 60 ! 1806: .rr 61 ! 1807: .rr 62 ! 1808: .rr 63 ! 1809: .rr #a ! 1810: .rr #b ! 1811: .rr #c ! 1812: .rr #d ! 1813: .rr #e ! 1814: .rr ## ! 1815: .ne 2i ! 1816: .fi ! 1817: .LP ! 1818: .SH ! 1819: Acknowledgments. ! 1820: .PP ! 1821: Many thanks are due to J. C. Blinn, who has done a large amount ! 1822: of testing and assisted with the design of the program. ! 1823: He has also written many of the more intelligible sentences ! 1824: in this document and helped edit all of it. ! 1825: All phototypesetting programs on \s-2UNIX\s0 are dependent on the work ! 1826: of the late J. F. Ossanna, whose assistance with this program in particular ! 1827: had been most helpful. ! 1828: This program is patterned on a table formatter originally ! 1829: written by J. F. Gimpel. ! 1830: The assistance of ! 1831: T. A. Dolotta, B. W. Kernighan, and J. N. Sturman ! 1832: is gratefully acknowledged. ! 1833: .SG MH-1274-MEL-troff ! 1834: .ne 2i ! 1835: .SH ! 1836: References. ! 1837: .IP [1] ! 1838: J. F. Ossanna, ! 1839: .I ! 1840: N\s-2ROFF\s0/T\s-2ROFF\s0 User's Manual, ! 1841: .R ! 1842: Computing Science Technical Report No. 54, ! 1843: Bell Laboratories, 1976. ! 1844: .IP [2] ! 1845: K. Thompson and D. M. Ritchie, ! 1846: ``The U\s-2NIX\s0 Time-Sharing System,'' ! 1847: \fIComm. ACM. \fB17\fR, pp. 365\(mi75 (1974). ! 1848: .IP [3] ! 1849: B. W. Kernighan and L. L. Cherry, ! 1850: ``A System for Typesetting Mathematics,'' ! 1851: \fIComm. ACM. \fB18\fR, pp. 151\(mi57 (1975). ! 1852: .IP [4] ! 1853: M. E. Lesk, ! 1854: .I ! 1855: Typing Documents on U\s-2NIX\s0, ! 1856: .R ! 1857: UNIX Programmer's Manual, Volume 2. ! 1858: .IP [5] ! 1859: M. E. Lesk and B. W. Kernighan, ! 1860: .I ! 1861: Computer Typesetting of Technical Journals on U\s-2NIX\s0, ! 1862: .R ! 1863: \f2Proc. AFIPS NCC\f1, vol. 46, pp. 879-888 (1977). ! 1864: .IP [6] ! 1865: J. R. Mashey and D. W. Smith, ! 1866: ``Documentation Tools and Techniques,'' ! 1867: .I ! 1868: Proc. 2nd Int. Conf. on Software Engineering, ! 1869: .R ! 1870: pp. 177-181 (October, 1976). ! 1871: .sp 3 ! 1872: .SH ! 1873: .ce ! 1874: List of Tbl Command Characters and Words ! 1875: .LP ! 1876: .EQ ! 1877: delim $$ ! 1878: gfont roman ! 1879: .EN ! 1880: .TS ! 1881: center; ! 1882: cI cI cI ! 1883: aB lf1 nf1 . ! 1884: Command Meaning Section ! 1885: a A Alphabetic subcolumn 2 ! 1886: allbox Draw box around all items 1 ! 1887: b B Boldface item 2 ! 1888: box Draw box around table 1 ! 1889: c C Centered column 2 ! 1890: center Center table in page 1 ! 1891: doublebox Doubled box around table 1 ! 1892: e E Equal width columns 2 ! 1893: expand Make table full line width 1 ! 1894: f F Font change 2 ! 1895: i I Italic item 2 ! 1896: l L Left adjusted column 2 ! 1897: n N Numerical column 2 ! 1898: \fInnn\fR Column separation 2 ! 1899: p P Point size change 2 ! 1900: r R Right adjusted column 2 ! 1901: s S Spanned item 2 ! 1902: t T Vertical spanning at top 2 ! 1903: tab \fR(\fIx\|\fR) Change data separator character 1 ! 1904: $fat roman "T{" ~~ fat roman "T}"$ Text block 3 ! 1905: v V Vertical spacing change 2 ! 1906: w W Minimum width value 2 ! 1907: \&\s+4.\s0\fIxx\fR Included \fItroff\fR command 3 ! 1908: \(bv Vertical line 2 ! 1909: \(bv\|\(bv Double vertical line 2 ! 1910: \&\s+4\v'4p'^\v'-4p'\s0 Vertical span 2 ! 1911: \e\&\s+4\v'4p'^\v'-4p'\s0 Vertical span 3 ! 1912: \&= Double horizontal line 2,3 ! 1913: \&$fat "_"$ Horizontal line 2,3 ! 1914: \&$fat "\e_"$ Short horizontal line 3 ! 1915: \&$fat "\e"$\f3R\f2x Repeat character 3 ! 1916: .TE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.