Annotation of researchv10dc/vol2/tbl/tbl.pm.bug, revision 1.1.1.1

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\(dg
                      6: .AU "MH 2C-569" 6377
                      7: L. L. Cherry
                      8: M. E. Lesk
                      9: .AI
                     10: .MH
                     11: .AB
                     12: .I Tbl
                     13: is a document formatting preprocessor for
                     14: .I troff
                     15: or
                     16: .I nroff
                     17: which makes
                     18: even
                     19: fairly complex tables easy to specify and enter.
                     20: Tables are made up of columns which may be independently centered, right-adjusted,
                     21: left-adjusted, or aligned by decimal points.
                     22: Headings may be placed over single columns or groups of columns.
                     23: A table entry may contain equations, or may consist of several rows of text.
                     24: Horizontal or vertical lines may be drawn as desired
                     25: in the table,
                     26: and any table or element may be enclosed in a box.
                     27: For example:
                     28: .TS
                     29: center, box;
                     30: c  s  s  s
                     31: c  s  s  s
                     32: c |c |c |c
                     33: c |cp-2 |c |c
                     34: l |n |n |n.
                     35: U. S. Energy Production/Consumption
                     36: \s-2(in quadrillion Btu)\s0
                     37: =
                     38: Year   Production      Consumption     Net
                     39: \^     all sources             \^
                     40: _
                     41: 1953   36.77   36.27   +0.51
                     42: 1958   38.81   40.35   \-1.54
                     43: 1963   45.85   48.32   \-2.47
                     44: 1968   56.81   61.00   \-4.19
                     45: 1973   62.06   74.28   \-12.22
                     46: 1978   61.01   78.09   \-17.08
                     47: 1983   61.19   70.05   \-8.86
                     48: 1987   64.55   76.01   \-11.46
                     49: .TE
                     50: .AE
                     51: .tr # 
                     52: .de e1
                     53: .nr \\$1 \\$2
                     54: ..
                     55: .de e2
                     56: .if !\\n(\\$1=\\n% .tm Error in example \\$1: referred to page \\n(\\$1, is on page \\n%
                     57: .rr \\$1
                     58: ..
                     59: .di qq
                     60: .EQ
                     61: delim $$
                     62: .EN
                     63: .di
                     64: .rm qq
                     65: .FS
                     66: \(dg This is version of |reference(v7tbl) revised by Lorinda Cherry.
                     67: .FE
                     68: .2C
                     69: .NH
                     70: Introduction.
                     71: .PP
                     72: .I Tbl
                     73: turns a simple description
                     74: of a table into a
                     75: .I troff
                     76: or
                     77: .I nroff |reference(troff reference)
                     78: program (list of commands) that prints the table.
                     79: It
                     80: attempts to isolate a portion of a job that it can
                     81: successfully
                     82: handle and leave the remainder for other programs.
                     83: Thus
                     84: .I tbl
                     85: may be used with the equation formatting
                     86: program
                     87: .I eqn |reference(latest eqn)
                     88: or various
                     89: layout macro packages |reference(msmacros)|reference(lesk kernighan typesetting)|reference(mashey smith documentation),
                     90: but does not duplicate their functions.
                     91: .PP
                     92: This memorandum is divided into two parts.
                     93: First we give the rules for preparing
                     94: .I tbl
                     95: input; then some examples are shown.
                     96: The description of rules is precise but technical, and
                     97: the beginning user may prefer to read the examples first,
                     98: as they show some common table arrangements.
                     99: A section explaining how to invoke
                    100: .I tbl
                    101: precedes the examples.
                    102: To avoid repetition, henceforth read
                    103: .I troff
                    104: as
                    105: .I
                    106: ``troff
                    107: .R
                    108: or
                    109: .I
                    110: nroff.''
                    111: .R
                    112: .ds . \^\s14.\s0
                    113: .PP
                    114: The input to
                    115: .I
                    116: tbl
                    117: .R
                    118: is text for a document, with tables preceded by a ``\f(CW.TS\fP''
                    119: (table start)
                    120: command and followed by a ``\f(CW.TE\fP''
                    121: (table end) command.
                    122: .I Tbl
                    123: processes the tables, generating
                    124: .I troff
                    125: formatting commands,
                    126: and leaves the remainder of the text unchanged.
                    127: The
                    128: .CW .TS
                    129: and
                    130: .CW .TE
                    131: lines are copied, too, so that
                    132: .I troff
                    133: page layout macros
                    134: (such as the memo formatting macros|reference(msmacros)) can use these lines
                    135: to delimit and place tables as they see fit.
                    136: In particular, any arguments on the
                    137: .CW .TS
                    138: or
                    139: .CW .TE
                    140: lines
                    141: are copied but otherwise ignored, and may be used by document layout
                    142: macro commands.
                    143: .PP
                    144: The format of the input is as follows:
                    145: .DS
                    146: \&text
                    147: .CW .TS
                    148: \&\fItable\fR
                    149: .CW .TE
                    150: \&text
                    151: .CW .TS
                    152: \&\fItable\fR
                    153: .CW .TE
                    154: \&text
                    155: \&\&\*. \*. \*.
                    156: .DE
                    157: where the format of each table is as follows:
                    158: .DS
                    159: .CW .TS
                    160: \fIoptions \f(CW;\fR
                    161: \fIformat \f(CW.\fP
                    162: data
                    163: .CW .TE
                    164: .DE
                    165: .R
                    166: Each table is independent, and must contain formatting
                    167: information
                    168: followed by the data to be entered in the table.
                    169: The formatting information, which describes the
                    170: individual columns and rows of the table, may be preceded
                    171: by a few options that affect the entire table.
                    172: A detailed description of tables is given in the next section.
                    173: .NH
                    174: Input commands.
                    175: .PP
                    176: As indicated above, a table contains, first, global options,
                    177: then a format section describing the layout of the table
                    178: entries, and then the data to be printed.  The format and data
                    179: are always required, but not the options.
                    180: The various parts of the table are entered as follows:
                    181: .NH 2
                    182: Options
                    183: .PP
                    184: There may be a single line of options
                    185: affecting the whole table.
                    186: If present, this line must follow the
                    187: .CW .TS
                    188: line immediately
                    189: and must contain a list of option names
                    190: separated by spaces, tabs, or commas, and must be terminated by a semicolon.
                    191: The allowable options are:
                    192: .IP \f(CW##center\fR 15
                    193: center the table (default is left-adjust);
                    194: .IP \f(CW##expand\fR
                    195: make the table as wide as the current line length;
                    196: .IP \f(CW##box\fR
                    197: enclose the table in a box;
                    198: .IP \f(CW##allbox\fR
                    199: enclose each item in the table in a box;
                    200: .IP \f(CW##doublebox\fR
                    201: enclose the table in two boxes;
                    202: .IP \f(CW##tab#\fR(\fIx\fR\^)
                    203: use \fIx\fR instead of tab to separate data items.
                    204: .IP \f(CW##linesize(\fIn\fP)\fR
                    205: set lines or rules (e.g. from \f(CWbox\fR\^) in \fIn\fR point type;
                    206: .IP \f(CW##delim(\fIxy\fP)\fR
                    207: recognize \fIx\fR and \fIy\fR as the \fIeqn\fR delimiters.
                    208: .PP
                    209: .I Tbl
                    210: tries to keep boxed tables on one page by issuing
                    211: appropriate
                    212: .I troff
                    213: \&``need''
                    214: .CW .ne ) (
                    215: commands.
                    216: These requests are calculated from the number of lines in the tables,
                    217: and if there are spacing commands embedded in the input, these requests may be inaccurate;
                    218: use normal
                    219: .I troff
                    220: procedures, such as keep-release macros, in that case.
                    221: The user who must have a multi-page boxed table
                    222: should use macros designed for this purpose,
                    223: as explained below under `Usage.'
                    224: .NH 2
                    225: Format
                    226: .PP
                    227: The format section of the table specifies the layout
                    228: of the columns.
                    229: Each line in this section corresponds to one line
                    230: of the table (except that the last line corresponds to all following
                    231: lines up to the next
                    232: .CW .T& ,
                    233: if any \(em see below),
                    234: and each line contains a key-letter for each column
                    235: of the table.
                    236: It is good practice to separate the key letters for each
                    237: column by spaces or tabs.
                    238: Each key-letter is one of the following:
                    239: .cs B 25
                    240: .IP "##\f(CWL\fR#or#\f(CWl\fR" 10
                    241: to indicate a left-adjusted column entry;
                    242: .IP "##\f(CWR\fR#or#\f(CWr\fR
                    243: to indicate a right-adjusted column entry;
                    244: .IP "##\f(CWC\fR#or#\f(CWc\fR
                    245: to indicate a centered column entry;
                    246: .IP "##\f(CWN\fR#or#\f(CWn\fR
                    247: to indicate a numerical column entry, to be aligned with other
                    248: numerical entries so that the units digits of numbers line up;
                    249: .IP "##\f(CWA\fR#or#\f(CWa\fR
                    250: to indicate an alphabetic subcolumn;
                    251: all corresponding entries are aligned on the left, and positioned
                    252: so that the widest is centered within the column (see
                    253: example on page 12);
                    254: .IP "##\f(CWS\fR#or#\f(CWs\fR
                    255: to indicate a spanned heading, i.e. to indicate that the
                    256: entry from the previous column continues across this
                    257: column
                    258: (not allowed for the first column, obviously); or
                    259: .IP ##\f(CW\s+4\v'6p'^\v'-6p'\s0\fR
                    260: to indicate a vertically spanned heading, i.e. to indicate that
                    261: the entry from the previous row continues down through this row.
                    262: (Not allowed for the first row of the table, obviously).
                    263: .cs B
                    264: .PP
                    265: When numerical alignment is specified, a location for the decimal
                    266: point is sought.  The rightmost dot
                    267: .CW . ) (
                    268: adjacent to a digit is used as a decimal point; if there is no
                    269: dot adjoining a digit, the rightmost digit is used as a units digit;
                    270: if no alignment is indicated, the item is centered in the column.
                    271: However, the special non-printing character string
                    272: .CW \e&
                    273: may be used
                    274: to override unconditionally dots
                    275: and digits, or to align alphabetic data;
                    276: this string lines up where a dot normally would,
                    277: and then disappears from the final output.
                    278: In the example below, the items shown at the left will be
                    279: aligned (in a numerical column) as shown on the right:
                    280: .KS
                    281: .TS
                    282: center;
                    283: l6 n.
                    284: 13     13
                    285: 4\*.2  4\&\*.2
                    286: 26\*.4\*.12    26\*.4\&\*.12
                    287: abc    abc
                    288: abc\e& abc\&
                    289: 43\e&3\*.22    43\&3\*.22
                    290: 749\*.12       749\&\*.12
                    291: .TE
                    292: .KE
                    293: .PP
                    294: \fBNote:\fR
                    295: If numerical data are used in the same column with wider
                    296: .CW L
                    297: or
                    298: .CW r
                    299: type table entries, the widest \fInumber\fR is centered relative
                    300: to the wider
                    301: .CW L
                    302: or
                    303: .CW r
                    304: items (\f(CWL\fR is used instead of \f(CWl\fR for readability;
                    305: they have the same meaning as key-letters).
                    306: Alignment within the numerical items is preserved.
                    307: This is similar to the behavior of
                    308: .CW a
                    309: type data, as explained above.
                    310: However,
                    311: alphabetic subcolumns (requested by the
                    312: .CW a
                    313: key-letter)
                    314: are always slightly indented relative to
                    315: .CW L
                    316: items;
                    317: if necessary, the column width is increased to force this.
                    318: This is not true for \f(CWn\fR type entries.
                    319: .PP
                    320: .ft BI
                    321: Warning:
                    322: .ft 1
                    323: the \f(CWn\fR and \f(CWa\fR items should not be used in
                    324: the same column.
                    325: .PP
                    326: For readability, the key-letters describing each column should
                    327: be separated by spaces.
                    328: The end of the format section is indicated by a period.
                    329: The layout of the key-letters in the format section resembles
                    330: the layout of the actual data in the table.
                    331: Thus a simple format might appear as:
                    332: .P1
                    333: c  s  s
                    334: l  n  n .
                    335: .P2
                    336: which specifies a table of three columns. The first line
                    337: of the table contains a heading centered across all three
                    338: columns; each remaining line contains a left-adjusted item
                    339: in the first column followed by two columns of numerical
                    340: data.
                    341: A sample table in this format might be:
                    342: .br
                    343: .ne 6v
                    344: .br
                    345: .in +4
                    346: .TS
                    347: c s s
                    348: l n n.
                    349: Overall title
                    350: Item-a 34.22   9.1
                    351: Item-b 12.65   .02
                    352: Items: c,d,e   23      5.8
                    353: Total  69.87   14.92
                    354: .TE
                    355: .in -4
                    356: There are some additional features of the key-letter system:
                    357: .IP "\fI##Horizontal lines#\fR"
                    358: \(em A key-letter may be replaced by
                    359: .CW _
                    360: (underscore) to indicate
                    361: a horizontal line in place of the corresponding column entry,
                    362: or by
                    363: .CW =
                    364: to indicate a double horizontal line.
                    365: If an adjacent column contains a horizontal line, or if
                    366: there are vertical lines adjoining this column,
                    367: this horizontal line is extended to meet the nearby lines.
                    368: If any data entry is provided for this column, it is ignored and
                    369: a warning message is printed.
                    370: .QQ do the D(x) and M(x) to draw a line of 'x' characters.
                    371: .QQ D will draw divided lines, M merged lines. thus - is simplh M(\(ru)
                    372: .IP "\fI##Vertical lines#\fR"
                    373: \(em A vertical bar may be placed between column key-letters.  This will
                    374: cause a vertical line between the corresponding columns of the table.
                    375: A vertical bar to the left of the first key-letter
                    376: or to the right of the last one produces a line at the
                    377: edge of the table.
                    378: If two vertical bars appear between key-letters, a double vertical
                    379: line is drawn.
                    380: .IP "\fI##Space between columns#\fR"
                    381: \(em A number may follow the key-letter.  This indicates the amount of separation
                    382: between this column and the next column.
                    383: The number normally specifies the separation in
                    384: .I
                    385: ens
                    386: .R
                    387: (one
                    388: en
                    389: .ne 3
                    390: is about the width of the letter `n').* 
                    391: .FS
                    392: * More precisely, an en is a number of points (1 point = 1/72 inch)
                    393: equal to half the current type size.
                    394: .FE
                    395: If the ``expand'' option is used, then these numbers are multiplied
                    396: by a constant such that the table is as wide as the current line length.
                    397: The default column separation number is 3.
                    398: If the separation is changed the worst case (largest space requested) governs.
                    399: .IP "\fI##Vertical spanning#\fR"
                    400: \(em Normally, vertically spanned items extending over several
                    401: rows of the table are centered in their vertical range.
                    402: If a key-letter is followed by
                    403: .CW t
                    404: or
                    405: .CW T ,
                    406: any corresponding vertically spanned item
                    407: will begin at the top line of its range.
                    408: .IP "\fI##Font changes#\fR"
                    409: \(em A key-letter may be followed by a string containing a font
                    410: name or number
                    411: preceded by the letter
                    412: .CW f
                    413: or
                    414: .CW F .
                    415: This indicates that the corresponding column should be in a different
                    416: font from the default font (usually Roman).
                    417: All font names are one or two letters; a one-letter font
                    418: name should be separated from whatever follows by a space or tab.
                    419: The single letters
                    420: .CW B ,
                    421: .CW b ,
                    422: .CW I ,
                    423: and
                    424: .CW i
                    425: are shorter synonyms for
                    426: .CW fB
                    427: and
                    428: .CW fI
                    429: and refer to the bold and italic fonts in the current font family.
                    430: Font change commands given with the table entries
                    431: override these specifications.
                    432: .IP "\fI##Point size changes#\fR"
                    433: \(em A key-letter may be followed by the letter
                    434: .CW p
                    435: or
                    436: .CW P
                    437: and a number to indicate the point size of the corresponding table entries.
                    438: The number may be a signed digit, in which case it is taken as
                    439: an increment or decrement
                    440: from the current point size.
                    441: If both a point size and a column separation value are given,
                    442: one or more blanks must separate them.
                    443: .IP "\fI##Vertical spacing changes#\fR"
                    444: \(em A key-letter may be followed by the letter
                    445: .CW v
                    446: or
                    447: .CW V
                    448: and a number to indicate the vertical line spacing to be used
                    449: within a multi-line corresponding table entry.
                    450: The number may be a signed digit, in which case it is taken as an increment
                    451: or decrement from the current vertical spacing.
                    452: A column separation value must be separated by blanks or some other
                    453: specification from a vertical spacing request.
                    454: This request has no effect unless the corresponding table entry
                    455: is a text block (see below).
                    456: .IP "\fI##Column width indication#\fR"
                    457: \(em A key-letter may be followed by the letter
                    458: .CW w
                    459: or
                    460: .CW W
                    461: and a width value in parentheses.
                    462: This width is used as a minimum column width.
                    463: If the largest element in the column is not as wide as the width value
                    464: given after the \f(CWw\fR, the largest element is assumed to be that wide.
                    465: If the largest element in the column is wider than the specified value,
                    466: its width is used.
                    467: The width is also used as a default line
                    468: length for included text blocks.
                    469: Normal
                    470: .I troff
                    471: units can be used to scale the width value; if none are used,
                    472: the default is
                    473: ens.
                    474: If the width specification is a unitless integer
                    475: the parentheses may be omitted.
                    476: If the width value is changed in a column, the \fIlast\fR one given controls.
                    477: .IP "\fI##Equal width columns#\fR"
                    478: \(em A key-letter may be followed by the letter
                    479: .CW e
                    480: or
                    481: .CW E
                    482: to indicate equal width columns.
                    483: All columns whose
                    484: key-letters are followed by \f(CWe\fR or \f(CWE\fR are made the same width.
                    485: This permits the user to get a group of regularly spaced
                    486: columns.
                    487: .IP "\fI##Staggered columns#\fR"
                    488: \(em A key-letter may be followed by the letter
                    489: .CW u
                    490: or
                    491: .CW U
                    492: to indicate that the corresponding entry is to be moved up one half line.
                    493: This makes it easy, for example, to have a column of differences
                    494: between numbers in an adjoining column.
                    495: The
                    496: .CW allbox
                    497: option does not work with staggered columns.
                    498: .IP "\fI##Zero-width item#\fR"
                    499: \(em A key-letter may be followed by the letter
                    500: .CW z
                    501: or
                    502: .CW Z
                    503: to indicate that the corresponding
                    504: data item is to be ignored in calculating column widths.
                    505: This may be useful, for example, in allowing headings
                    506: to run across adjacent columns where spanned headings
                    507: would be inappropriate.
                    508: .IP "##\f(CWNote:\fR#"
                    509: The order of the above features is immaterial; they need not be separated
                    510: by spaces, except as indicated above to avoid ambiguities involving
                    511: point size and font changes.  Thus
                    512: a numerical column entry in italic font and 12 point type with a minimum
                    513: width of 2.5 inches and separated by 6 ens from the next column could
                    514: be specified as
                    515: .P1
                    516: np12w(2.5i)fI  6
                    517: .P2
                    518: .IP "\fI##Alternative notation#\fR"
                    519: \(em Instead of listing the format of successive lines of a table
                    520: on consecutive lines of the format section,
                    521: successive line formats may be given on the same line, separated
                    522: by commas, so that the format for the example
                    523: above might have been written:
                    524: .P1
                    525: c s s, l n n .
                    526: .P2
                    527: .IP "\fI##Default#\fR"
                    528: \(em Column descriptors missing from the end
                    529: of a format line are assumed to be \f(CWL\fR.
                    530: The longest line in the format section, however,
                    531: defines the number of columns
                    532: in the table;
                    533: extra columns in the data are ignored silently.
                    534: .QQ put in the diagnostics.
                    535: .NH 2
                    536: Data
                    537: .PP
                    538: The data for the table are typed after the format.
                    539: Normally, each table line is typed as one line of data.
                    540: Very long input lines can be broken: any line whose last character is
                    541: .CW \e
                    542: is combined with the following line (and the
                    543: .CW \e
                    544: vanishes).
                    545: The data for different columns (the table entries) are separated by tabs,
                    546: or by whatever character has been specified with the option
                    547: .I tabs .
                    548: There are a few special cases:
                    549: .IP "\fI##Troff commands within tables\fR#"
                    550: \(em An input line
                    551: beginning with a
                    552: .CW .
                    553: followed by anything
                    554: but a number is assumed to be a command to
                    555: .I troff
                    556: and is passed through unchanged, retaining its position in the table.
                    557: So, for example, vertical space within a table may be produced by
                    558: .CW .sp
                    559: commands
                    560: in the data.
                    561: .IP "\fI##Full width horizontal lines\fR#"
                    562: \(em An input
                    563: .I line
                    564: containing only
                    565: .CW _
                    566: (underscore)
                    567: or
                    568: .CW =
                    569: (equal sign) is taken to be a single or double
                    570: line, respectively, extending the
                    571: full width
                    572: of the
                    573: .I table.
                    574: .IP "\fI##Single column horizontal lines\fR#"
                    575: \(em An input table
                    576: .I entry
                    577: containing only the character $fat "\(ul" $ or \f(CW=\fR
                    578: is taken to be a single or double line extending
                    579: the full width of the
                    580: .I column.
                    581: Such lines are extended to meet horizontal or vertical
                    582: lines adjoining this column.
                    583: To obtain these characters explicitly in a column, either
                    584: precede them by
                    585: .CW \e&
                    586: or
                    587: follow them by a space before the usual tab or newline.
                    588: .IP "\fI##Short horizontal lines\fR#"
                    589: \(em An input table
                    590: .I entry
                    591: containing only the string
                    592: .CW \e_
                    593: is taken to be a single line as wide as the contents of
                    594: the column.  It is not extended to meet
                    595: adjoining lines.
                    596: .IP "\fI##Repeated characters\fR#"
                    597: \(em An input table
                    598: .I entry
                    599: containing only a string of the form
                    600: .CW \eR \fIx\fR
                    601: where
                    602: .I x
                    603: is any character is replaced by repetitions of the character
                    604: .I x
                    605: as wide as the data in the column.
                    606: The sequence of
                    607: .I x 's
                    608: is not extended to meet adjoining columns.
                    609: .IP "\fI##Vertically spanned items\fR#"
                    610: \(em An input table entry containing only the
                    611: character string
                    612: .CW \e^
                    613: indicates that the table entry immediately
                    614: above spans downward over this row.  It is equivalent
                    615: to a table format key-letter of
                    616: .CW ^ .
                    617: .IP "\fI##Text blocks\fR#"
                    618: \(em In order to include a block of text as a table entry,
                    619: precede it by
                    620: .CW T{
                    621: and follow
                    622: it by
                    623: .CW T} .
                    624: Thus the sequence
                    625: .P1
                    626: \&\fR. . .\fP T{
                    627: .I
                    628: block of
                    629: text
                    630: .CW
                    631: T}\fR . . .
                    632: .P2
                    633: is the way to enter, as a single entry in the table, something
                    634: that cannot conveniently be typed as a simple string between
                    635: tabs.
                    636: Note that the
                    637: .CW T}
                    638: end delimiter must begin a line;
                    639: additional columns of data may follow after a tab on the same line.
                    640: See the example on page 10 for an illustration of included text blocks
                    641: .e1 aa 10
                    642: in a table.
                    643: If more than fifty or so text blocks are used in a table,
                    644: various limits in the
                    645: .I troff
                    646: program are likely to be exceeded,
                    647: producing diagnostics such as `too many string/macro names' or `too many
                    648: number registers.'
                    649: .IP
                    650: Text blocks are pulled out from the table, processed separately by
                    651: .I
                    652: troff,
                    653: .R
                    654: and replaced in the table as a solid block.  If no line length
                    655: is specified in the
                    656: .I
                    657: block of text
                    658: .R
                    659: itself, or in the table format,
                    660: the default is to use
                    661: $ L times C / (N+1) $
                    662: where $L$ is the current line length,
                    663: $C$ is the number of table columns spanned by the text,
                    664: and $N$ is the total number of columns in the table.
                    665: The other parameters (point size, font, etc.) used in setting the
                    666: .I
                    667: block of text
                    668: .R
                    669: are those in effect at the beginning of the table (including
                    670: the effect of the
                    671: .CW .TS
                    672: macro)
                    673: and any table format specifications of size, spacing and font,
                    674: using the \f(CWp\fR, \f(CWv\fR and \f(CWf\fR modifiers to the column key-letters.
                    675: Commands within the text block itself are also recognized, of course.
                    676: However,
                    677: .I troff
                    678: commands within the table data but not within the text block
                    679: do not affect that block.
                    680: .br
                    681: .di RR
                    682: .     this is going down a rathole
                    683: .EQ
                    684: delim off
                    685: .EN
                    686: .di
                    687: .rm RR
                    688: .IP "##\fBWarnings:\fR#"
                    689: Although any number of lines may be present in a table,
                    690: only the first 200 lines are used in calculating
                    691: the widths of the various columns.
                    692: A multi-page table,
                    693: of course, may be arranged as several single-page tables
                    694: if this proves to be a problem.
                    695: Other difficulties with formatting may arise because,
                    696: in the calculation of column widths all table entries
                    697: are assumed to be in the font and size being used when
                    698: the
                    699: .CW .TS
                    700: command was encountered, except for font and size changes
                    701: indicated (a) in the table format section and (b)
                    702: within the table data (as in the entry
                    703: .CW \es+3\efIdata\efP\es0 ).
                    704: Therefore, although arbitrary
                    705: .I troff
                    706: requests may be sprinkled in a table, care must be taken
                    707: to avoid confusing the width calculations;
                    708: use requests such as
                    709: .CW .ps
                    710: with care.
                    711: .tr ##
                    712: .sp .5v
                    713: .NH 2
                    714: Additional Command Lines
                    715: .PP
                    716: If the format of a table must be changed after
                    717: many similar lines, as with sub-headings or summarizations, the
                    718: .CW .T&
                    719: (table continue)
                    720: command can be used
                    721: to change column parameters.
                    722: The outline of such a table input is:
                    723: .DS
                    724: .ft CW
                    725: \&.TS
                    726: .ft I
                    727: \&options \f(CW;\fP
                    728: \&format \*.
                    729: \&data
                    730: \&\*. \*. \*.
                    731: .ft CW
                    732: \&.T&
                    733: .ft I
                    734: \&format \*.
                    735: \&data
                    736: .ft CW
                    737: \&.T&
                    738: .ft I
                    739: \&format \*.
                    740: \&data
                    741: .ft CW
                    742: \&.TE
                    743: .DE
                    744: .R
                    745: as in the examples on pages 9 and 12.
                    746: .e1 ab 9
                    747: .e1 ac 12
                    748: Using this procedure, each table line can be close to its corresponding format line.
                    749: .sp 3p
                    750: .ft BI
                    751: Warning:
                    752: .ft R
                    753: it is not possible to change the number of columns, the space
                    754: between columns, the global options such as \fIbox,\fR
                    755: or the selection of columns to be made equal width.
                    756: Nor is
                    757: .CW .T&
                    758: recognized after the first 200 lines of a table.
                    759: .NH
                    760: Usage.
                    761: .PP
                    762: On
                    763: .UX ,
                    764: .I tbl
                    765: can be run on a simple table with the command
                    766: .P1
                    767: tbl input-file | troff
                    768: .P2
                    769: but
                    770: for more complicated use, where there are several input files,
                    771: and they contain equations and \fIms\fR memorandum layout commands as well
                    772: as tables, the normal command would be
                    773: .P1
                    774: tbl \fIfiles ...\fP | eqn | troff -ms
                    775: .P2
                    776: and, of course, the usual options may be used on the
                    777: .I troff
                    778: and
                    779: .I eqn
                    780: commands. If any of the file names are
                    781: .CW -
                    782: the standard input is read at that point.
                    783: .PP
                    784: For the convenience of users employing line printers without
                    785: adequate driving tables or post-filters, there is a special
                    786: .CW -TX
                    787: command line option to
                    788: .I tbl
                    789: which produces output that does not have fractional line
                    790: motions in it.
                    791: .PP
                    792: Note that when
                    793: .I eqn
                    794: and
                    795: .I tbl
                    796: are used together on the same file,
                    797: .I tbl
                    798: should be used first.
                    799: If there are no equations within tables,
                    800: either order works, but it is usually faster
                    801: to run
                    802: .I tbl
                    803: first, since
                    804: .I eqn
                    805: normally produces a larger expansion of the input
                    806: than
                    807: .I tbl .
                    808: However, if there are equations within tables
                    809: (using the
                    810: .I delim
                    811: mechanism in
                    812: .I eqn ),
                    813: .I tbl
                    814: must be first or the output will be scrambled.
                    815: Users must also beware of using equations in
                    816: \f(CWn\fR-style columns; this is nearly always wrong,
                    817: since
                    818: .I tbl
                    819: attempts to split numerical format items into two parts and this
                    820: is not possible with equations.
                    821: The user can defend against this by giving the
                    822: .I delim(xx)
                    823: table option;
                    824: this prevents splitting of numerical columns within the delimiters.
                    825: For example, if the
                    826: .I eqn
                    827: delimiters
                    828: are
                    829: .I $$ ,
                    830: giving
                    831: .I delim($$)
                    832: a numerical column such as
                    833: .CW "1245$+- 16$"
                    834: will be divided after 1245, not after 16.
                    835: .PP
                    836: .I Tbl
                    837: accepts up to about 35 columns, the exact number
                    838: depending on the availability
                    839: of number registers.
                    840: The user must avoid number register names used
                    841: by tbl, which include two-digit numbers from 31 to 97,
                    842: and strings of the form
                    843: .CW 4\fIx\fR,
                    844: .CW 5\fIx\fR,
                    845: .CW #\fIx\fR,
                    846: \fIx\f(CW+\fR, \fIx\f(CW|\fR, \f(CW^\fIx\fR, and \fIx\f(CW-\fR,
                    847: where
                    848: \fIx\fR is any lower case letter.
                    849: The names
                    850: .CW ## ,
                    851: .CW #- ,
                    852: and
                    853: .CW #^
                    854: are also used in certain circumstances.
                    855: To conserve number register names, the
                    856: .CW n
                    857: and
                    858: .CW a
                    859: formats share a register;
                    860: hence the restriction above that they may not be used in the same column.
                    861: .PP
                    862: For aid in writing layout macros,
                    863: .I tbl
                    864: defines a number register
                    865: .CW TW
                    866: which is
                    867: the table width; it is defined by the time that the
                    868: .CW .TE
                    869: macro
                    870: is invoked and may be used in the expansion of that macro.
                    871: More importantly, to assist in laying out multi-page boxed tables
                    872: the macro T# is defined to produce the bottom lines and side lines of a boxed
                    873: table, and then invoked at its end.  By use of this macro
                    874: in the page footer a multi-page table can be boxed.
                    875: In particular, the
                    876: .I ms
                    877: macros can be used to print a multi-page boxed table with a repeated heading
                    878: by giving the
                    879: argument
                    880: .CW H
                    881: to the
                    882: .CW .TS
                    883: macro.
                    884: If the table start macro is written
                    885: .P1
                    886:        \&\*.TS H
                    887: .P2
                    888: a line of the form
                    889: .P1
                    890:        \&\*.TH
                    891: .P2
                    892: must be given in the table after any table heading (or at the start if none).
                    893: Material up to the
                    894: .CW .TH
                    895: is placed at the top of each page of table;
                    896: the remaining lines in the table are placed on several pages as required.
                    897: Note that this is
                    898: .I not
                    899: a feature of
                    900: .I tbl ,
                    901: but of the \fIms\fR layout macros.
                    902: .FC
                    903: .1C
                    904: .NH
                    905: Examples.
                    906: .PP
                    907: Here are some examples illustrating features of
                    908: .I
                    909: tbl.
                    910: .R
                    911: .ds T \|\h'.4n'\v'-.2n'\s6\zT\s0\s10\v'.2n'\h'-.4n'\(ci\|\s0
                    912: The symbol \*T in the input represents a tab character.
                    913: .de IN
                    914: .po \\n(POu
                    915: .sp |\\n(.hu
                    916: .sp
                    917: .NE \\$1
                    918: .mk
                    919: .B
                    920: Input:
                    921: .R
                    922: .sp .5
                    923: .nf
                    924: .in +3n
                    925: ..
                    926: .de OU
                    927: .br
                    928: .in -3n
                    929: .rt
                    930: .po +3i
                    931: .B
                    932: Output:
                    933: .R
                    934: .sp .5
                    935: ..
                    936: .rm TS
                    937: .rm TE
                    938: .nf
                    939: .KS
                    940: .IN 2.5i
                    941: \&\*.TS
                    942: \&box;
                    943: \&c c c
                    944: \&l l r\*.
                    945: \&Fact\*TLocation\*TStatistic
                    946: \&
                    947: \&Largest state\*TAlaska\*T591,004 sq. mi.
                    948: \&Smallest state\*TRhode Island\*T1,212 sq. mi.
                    949: \&Longest river\*TMississippi-Missouri\*T3,710 mi.
                    950: \&Highest mountain\*TMount McKinley, AK\*T20,320 ft.
                    951: \&Lowest point\*TDeath Valley, CA\*T\-282 ft.
                    952: \&\*.TE
                    953: .OU
                    954: .TS
                    955: box;
                    956: c c c
                    957: l l r.
                    958: Fact   Location        Statistic
                    959: 
                    960: Largest state  Alaska  591,004 sq. mi.
                    961: Smallest state Rhode Island    1,212 sq. mi.
                    962: Longest river  Mississippi-Missouri    3,710 mi.
                    963: Highest mountain       Mount McKinley, AK      20,320 ft.
                    964: Lowest point   Death Valley, CA        \-282 ft.
                    965: .TE
                    966: .IN 2.8i
                    967: \&\*.TS
                    968: \&allbox;
                    969: \&c s s
                    970: \&c c c
                    971: \&n n n\*.
                    972: \&AT&T Common Stock
                    973: \&Year\*TPrice\*TDividend
                    974: \&1984\*T15-20\*T$1\*.20
                    975: \&5\*T19-25\*T1\*.20
                    976: \&6\*T21-28\*T1\*.20
                    977: \&7\*T20-36\*T1\*.20
                    978: \&8\*T24-30\*T1\*.20
                    979: \&9\*T29-37\*T\*.30*
                    980: \&\*.TE
                    981: \&* (first quarter only)
                    982: .OU
                    983: .TS
                    984: allbox;
                    985: c s s
                    986: c c c
                    987: n n n.
                    988: AT&T Common Stock
                    989: Year   Price   Dividend
                    990: 1984   15-20   $1.20
                    991: 5      19-25   1.20
                    992: 6      21-28   1.20
                    993: 7      20-36   1.20
                    994: 8      24-30   1.20
                    995: 9      29-37   .30*
                    996: .TE
                    997: * (first quarter only)
                    998: .KE
                    999: .BP
                   1000: .KS
                   1001: .IN 4i
                   1002: \&\*.TS
                   1003: \&box;
                   1004: \&c s s
                   1005: \&c | c | c
                   1006: \&l | l | n\*.
                   1007: \&Major New York Bridges
                   1008: \&=
                   1009: \&Bridge\*TDesigner\*TLength
                   1010: \&\(ul
                   1011: \&Brooklyn\*TJ\*. A\*. Roebling\*T1595
                   1012: \&Manhattan\*TG\*. Lindenthal\*T1470
                   1013: \&Williamsburg\*TL\*. L\*. Buck\*T1600
                   1014: \&\(ul
                   1015: \&Queensborough\*TPalmer &\*T1182
                   1016: \&\*T  Hornbostel
                   1017: \&\(ul
                   1018: \&\*T\*T1380
                   1019: \&Triborough\*TO\*. H\*. Ammann\*T\(ul
                   1020: \&\*T\*T383
                   1021: \&\(ul
                   1022: \&Bronx Whitestone\*TO\*. H\*. Ammann\*T2300
                   1023: \&Throgs Neck\*TO\*. H\*. Ammann\*T1800
                   1024: \&\(ul
                   1025: \&George Washington\*TO\*. H\*. Ammann\*T3500
                   1026: \&\*.TE
                   1027: .OU
                   1028: .TS
                   1029: box;
                   1030: c s s
                   1031: c | c | c
                   1032: l | l | n.
                   1033: Major New York Bridges
                   1034: =
                   1035: Bridge Designer        Length
                   1036: _
                   1037: Brooklyn       J. A. Roebling  1595
                   1038: Manhattan      G. Lindenthal   1470
                   1039: Williamsburg   L. L. Buck      1600
                   1040: _
                   1041: Queensborough  Palmer &        1182
                   1042:          Hornbostel
                   1043: _
                   1044:                1380
                   1045: Triborough     O. H. Ammann    _
                   1046:                383
                   1047: _
                   1048: Bronx Whitestone       O. H. Ammann    2300
                   1049: Throgs Neck    O. H. Ammann    1800
                   1050: _
                   1051: George Washington      O. H. Ammann    3500
                   1052: .TE
                   1053: .IN 3.0i
                   1054: \&\*.TS
                   1055: \&c c
                   1056: \&np-2 | n | \*.
                   1057: \&\*TStack
                   1058: \&\*T\(ul
                   1059: \&1\*T46
                   1060: \&\*T\(ul
                   1061: \&2\*T23
                   1062: \&\*T\(ul
                   1063: \&3\*T15
                   1064: \&\*T\(ul
                   1065: \&4\*T6\*.5
                   1066: \&\*T\(ul
                   1067: \&5\*T2\*.1
                   1068: \&\*T\(ul
                   1069: \&\*.TE
                   1070: .OU
                   1071: .TS
                   1072: c c
                   1073: np-2 | n |.
                   1074:        Stack
                   1075:        _
                   1076: 1      46
                   1077:        _
                   1078: 2      23
                   1079:        _
                   1080: 3      15
                   1081:        _
                   1082: 4      6.5
                   1083:        _
                   1084: 5      2.1
                   1085:        _
                   1086: .TE
                   1087: .KE

unix.superglobalmegacorp.com

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