%-*-tex-*- \ifundefined{writestatus} \input status \relax \fi % \chcode{align} \def\cqu{} \chapterhead{align}{BASIC ALIGNMENT} Since letters in most fonts are variable width, the only sure way to ensure that words, numbers or vertical rules line up is to tell \tex\ to put them in the right place. Old ways of placing text on the editor's screen will not work. The basic way of doing this in \tex\ is through the alignment commands. The most common use of alignment commands is to make tables, but the uses go well beyond this. For instance, the |\eqalign| for display mathematics is built using the basic |\halign| command. {\it Plain} \tex\ provides two basic alignment formats. The first is the |tabbing| form that is very similar to tabs on a typewriter, and the second is the more basic |\halign| form. In fact the |tabbing| form is built from the basic |\halign|. \intex\ supplies a set of commands for building tables, especially those involving lines (commonly called vertical and horizontal rules). The intent of these commands is to produce tables that are easy to specify and that look, on the editing screen, somewhat like the final product. The commands are built from the |\halign| and preserve all the power of this basic command. They commands are discussed in Section~\ref{intable}. Details on the basic uses of the |\halign| can be found in the chapter on alignment in the \texbook\ and examples of \intex\ tables and uses in the \tex\ Example Book \dots\ to be published. \shead{aligncomlist}{Command List} The command list in this section is organized into |tabbing|, |\halign|, and \intex\ |table| commands. The |\halign| commands are useful in the |table| form. \bigbreak \centerline{\sssheadfont Tabbing Commands} \nobreak \begintwocolumn \pla|\+ ... \cr| \pla|\cleartabs| \pla|\settabs \columns| \pla|\tabalign ...\cr| \endthreecolumn \bigbreak \centerline{\sssheadfont Plain \tex\ halign Commands} \begintwocolumn \pri|&| \pri|#| \pri|\cr| \pri|\halign| \pla|\hidewidth| \pla|\ialign| \pla|\multispan| \pri|\noalign| \pla|\oalign| \pri|\omit| \pla|\openup| \pri|\span| \ext|\strut| \pri|\tabskip| \pri|\valign| \endthreecolumn \bigbreak \centerline{\sssheadfont \intex\ Table Commands} \begintwocolumn \ext\vrt \ext|"| \ext|\|\vrt \ext|~| \ext|\:| \ext|\-| \ext|\br \er| \ext|\begintable| \ext|\begintableformat| \ext|\endtable| \ext|\endtableformat| \ext|\center| \ext|\displaymath| \ext|\everytable| \ext|\fulltablerule| \ext|\left| \ext|\math| \ext|\midtabglue| \ext|\modifystrut \mst| \ext|\right| \ext|\sa| \ext|\sprule| \ext|\tablespread| \ext|\tcs| \ext|\thrule| \ext|\tr| \ext|\tvrule| \ext|\use| \ext|\zerocenteredbox \zb| \endthreecolumn \shead{tabbing}{Tabs for Alignment} \tex\ supplies a format that behaves similarly, but not identically, to {\it tabs} on an ordinary typewriter. The |\settabs \columns| sets tabs so that there are || number of columns across the page. Once set, these {\it tabs} stay set until changed or leaving the group in which they were defined. \tex\ uses the command |\+| to indicate the beginning of a row, the |&| to indicate the {\bf next} column, and the |\cr| to indicate the end of the row. If the text for one column is too wide for that column it will spill over into the next. If it spills, and there is text in the next column, they will superimpose. An example is given below. \begintt \settabs 3 \columns \+This is text in the first Column &THIS IS TEXT IN THE SECOND COLUMN & This is text in the third column \cr \+First Column &&Third Column\cr \endtt which gives \settabs 3 \columns \+This is text in the first Column &THIS IS TEXT IN THE SECOND COLUMN & This is text in the third column \cr \+First Column &&Third Column\cr Note the mess in the first row. The second is better formed. For some simple tables, without rules or lines. This may be the simplest way. If a line starts with the form \begintt \settabs\+& ... &\cr \+\cr ... \endtt then \tex\ will set the tabs as indicated by the sample row, and will not actually print it in the text. To use this, look ahead in the table and find the widest fields. These, and some extra space, can be used to set the tabs. The tabbing format is even more versatile than this. Suppose that there are 2 tabs set. If the input row |\+ ... \cr| has a third or more |&|, then this new tab is added to the set of tabs. Furthermore, the command |\cleartabs| will remove all tabs to the right of the current one, in effect making it the last one in a row. The result is that it is possible to set tabs that change from row to row. For example \begintt \+\cleartabs This text &is to the &left and \cr \+ &this row lines up with the ``is'' \cr \+ & &but this one with the ``left'' \cr \+ &\cleartabs This &row sets new tabs \cr \+ & &so this lines up with ``row''\cr \endtt gives the following \+\cleartabs This text &is to the &left and \cr \+ &this row lines up with the ``is'' \cr \+ & &but this one with the ``left'' \cr \+ &\cleartabs This &row sets new tabs \cr \+ & &so this lines up with ``row''\cr Note the tab location change in the fourth row. Indentation of computer programs is relatively simple with these mechanisms. \shead{halignform}{The {\twelvett \string\halign } } The fundamental alignment command, which is in fact used to build the {\it tabbing} commands in the previous section and the \intex\ {\it table} commands in the next, is the |\halign| . While inside an |\halign|, \tex\ is in {\it internal horizontal mode}. This means that text may be centered or justified by the appropriate use of the infinite glues such as |\hss|. It also means that |$...$|, |\math|, or |\displaymath| are required to switch, perhaps back, into math mode. A |\cr|, terminated by the first |\cr|, describes the pattern of the alignment. This pattern is used for every row of the alignment but there are a set of commands |\span|, |\multispan|, and |\omit| that allow for the skipping or merging of several adjacent columns. This makes it easy to have text that spans several columns. Finally, {\bf between} each column, there is the provision for placing |\tabskip| glue. This glue allows the entire set of columns to stretch or shrink to fill the page as desired. Some special variants of |\halign| such as |\ialign|, force the |\tabskip| glue to be zero. Detailed use of the |\halign| and its associated commands will be found in the \texbook\ with examples in the \tex\ Example Book. The command descriptions in Section~\ref{aligncomforms} give some insight into their use. \shead{intable}{\intex\ Table Commands} \intex\ supplies a set of commands designed to reduce the pain in making tables. The major intent of the commands is to make have the tables being designed appear on the editor screen in a reasonable manner. Although the commands appear to avoid the basic |\halign| commands and forms of |\cr|, |&|, and |#|, their insertion in the tables are not precluded by the structure. The loss by doing this will be some readability but the gain is flexibility. The \intex\ table commands really use two different types of columns: {\it rule} columns for insertion (or omission) of vertical rules and {\it data} columns for the insertion of normal data entries. Generally it is assumed that every data column is separated by a {\it rule} column. In addition, \intex\ requires that there be a rule column at the left and right hand sides. \intex\ makes the insertion or omission of a vertical rule or column as simple as placing a |"| or a \vrt\ in the text. A now classic table for demonstrating the table making skills of a set of macros is shown below. This is reported in the \texbook\ and originally was found in [\cite{[Lesk76]}]. The resulting table is {\bf not} identical to that in the \texbook. It is, however, very close. \centerline{ \begintable \begintableformat \center " \center " \center \endtableformat \br{} \sa{Dividend} "\sa{Dividend} "\sa{Dividend} \er{} %sample line \- \br{\:|} \use{3} AT\&T Common Stock \er{|} \- \br{\:|} Year | Price | Dividend \er{|} \- \br{\:|} 1971 | 41--54 | \$2.60 \er{|} \- \br{\:|} ~~~2 | 41--54 | ~2.70 \er{|} \- \br{\:|} ~~~3 | 46--55 | ~2.87 \er{|} \- \br{\:|} ~~~4 | 40--53 | ~3.24 \er{|} \- \br{\:|} ~~~5 | 45--52 | ~3.40 \er{|} \- \br{\:|} ~~~6 | 51--59 | ~~.95\rlap* \er{|} \- \br{\:}\use{3} \left{* (first quarter only)} \endtable } This table is given by the following: \begingroup \eightpoint \begintt \centerline{ \begintable \begintableformat \center " \center " \center \endtableformat \br{} \sa{Dividend} "\sa{Dividend} "\sa{Dividend} \er{} %sample line \- \br{\:|} \use{3} AT\&T Common Stock \er{|} \- \br{\:|} Year | Price | Dividend \er{|} \- \br{\:|} 1971 | 41--54 | \$2.60 \er{|} \- \br{\:|} ~~~2 | 41--54 | ~2.70 \er{|} \- \br{\:|} ~~~3 | 46--55 | ~2.87 \er{|} \- \br{\:|} ~~~4 | 40--53 | ~3.24 \er{|} \- \br{\:|} ~~~5 | 45--52 | ~3.40 \er{|} \- \br{\:|} ~~~6 | 51--59 | ~~.95\rlap* \er{|} \- \br{\:}\use{3} \left{* (first quarter only)} \endtable } \endtt \endgroup The basic structure of the table is given by this example. A |\begintable... \endtable| pair delineates it, while the row format is defined inside the pair |\begintableformat... \endtableformat|. The entirely optional {\it sample row}, immediately after the |\endtableformat| forces all three columns the same width. This use the fact that |Dividends| was the largest word which was then put in a {\it sample} command |\sa{..}| in each of the three columns. This row, which is invisible in the final table effectively set the width of the columns. The |~| is a space that is exactly the width of a number. Thus the data is lined up in the desired way. The \vrt\ are separators that insert vertical rules or lines and also allow spaces to be ignored after the data in a column. This makes the columns look nicer and more readable. Other details about this table will be apparent later. The \intex\ table commands have been designed to be most useful when the following conventions are obeyed: \beginlist \li {\bull} A rule column is defined in the table format using a |"|. Successive data columns are separated by a rule column. The actual rule is inserted in the text with a \vrt\ or omitted with a |"| rather than being put in the format. \li {\bull} A rule column is appended to each end of the table format statement. In general this means that there is a rule column on both sides of the table. The actual insertion or not of the rule is very easy. \li {\bull} Struts for maintaining row height are inserted in each row rather than in the table format. \endlist The commands make it very easy to include struts, and insert or omit rules as needed. In fact it is no more difficult than inserting a |&| in the appropriate place. The advantage of following this discipline is that partial horizontal lines (rules) are quite easy, as is the exact vertical placement of items in different data columns. The basic format for building a table is \begintt \begintable \begintableformat \endtableformat ... \endtable \endtt Each row has the form \begintt \br{<..>} | " ... | \er{<..>} \endtt where the \vrt\ means to put in a vertical rule and the |"| means to leave it out of the corresponding rule column. The |\br{..}| and |\er{..}| signify the beginning and end of the row respectively. The |\br{..}| and |\er{..}| are intended for rules and/or struts if needed. For instance a |\br{\:|\vrt|}| indicates that this line has a standard strut |\:| and a standard vrule. The |\br{\: height 2pt}| indicates that this row has no strut but that the initial vrule has a height of 2pt. The strut could just as easily been put in the |\er{\:}| instead. The form |\br{}| or |\br{"}| indicates a row with no initial strut or vrule. \intex\ supplies a second flavour of vrule that is user definable. The command |\|\vrt\ may be used in exactly the same way as \vrt. The {\it insides} of the |\|\vrt\ are defined by redefining a command |\sprule|, a {\it special rule}. An \intex\ table format is a template for the table, and corresponds to the normal {\it preamble} in an |\halign|. In fact any valid |\halign| preamble may be used in the table format, as long as the |#| are replaced by |##|. However, \intex\ adds a rule column to the beginning and end of the {\bf format} list for beginning and terminating rules. Thus a repeating field specification, which is indicated by an (extra) |&| in the format should {\bf not} start at a vrule indicator or the result will be two adjacent rules. Simple column formats are indicated by the use of the commands |\left|, |\center|, |\right|, |\math|, and |\displaymath|. The two |\..math| forms are {\bf never} used alone but rather in conjunction with the first three. These forms are {\bf always} separated\footnote{\dagger}{In fact any field of the form |&##&| is acceptable.} by |"|, which allows for, but does not put in, a vertical rule. The simplest table format, and probably the most useful is \begintt \begintableformat &\center \endtableformat \endtt This is a repeating format, as indicated by the |&|, and thus allows for any number of columns. The data in each column is centered. Another simple table format example is \begintt \begintableformat \left " \right " \math\center \endtableformat \endtt This table would have three data columns; the first data column is ordinary text, left justified; the second data column is right justified text; and the last data column is centered mathematics. Each data column is separated by a rule column indicated by |"|. \intex\ will add rule columns to the left and right hand ends of the specification. The commands |\right|, |\left|, and |\center| insert the appropriate glues and spacing at the both sides of the column. The width of this spacing |\tcs|, the {\it table column separation}, is a |dimen|. This may be modified if desired for all tables by putting it in the |\everytable| token list or for a specific table by placing it in the ||. The following is a repeating column specification: \begintt \begintableformat \left " \right " &\math\center \endtableformat \endtt This is identical to the previous one except that the data column format and the implicit rule column added by \intex, |\math\center|~|"|, is repeated indefinitely. For almost all tables, the only |&| that should appear in the table format is that indicating the start of a repeating field. Horizontal rules are specified by |\-| for the standard |\tr| width rule. An hrule the full width of the table should appear all by itself on a line between an |\er| and the following |\br|, or immediately after the table format. Other |\noalign| commands may be inserted as desired. A partial horizontal rule is specified using an |\msp|, the special \intex\ version of the multispan, and the |\-|. \intex\ does place some restrictions on the automatic insertion of tabskip glue. Hopefully these will be minor. \intex\ sets the initial and final tabskip glues to 0pt. This should create no problems. A parameter |\midtabglue| may be modified. This is set just after the first rule column and is turned off at the last rule column. Finally |\tablespread = {to }| will force the table to be || wide, assuming there is enough tabskip glue available. The following set of commands produce the rather contrived table on the following page. \begingroup \eightpoint \beginttverbatim \1centerline{ \1begintable \1begintableformat &\1center \1endtableformat \1- \1br{\1:|} \1use{6} XYZABC \1er{|\1mst{\1:}{3pt}{3pt}\1rlap{ \1it ** i}} \1- \1br{\1:|} \1use{3} XYZ | \1use{3} ABC \1er{|\1mst{\1:}{2pt}{2pt}} \1- \1br{\1:|} X | Y | Z | A | B | C \1er{|} \1- \1br{\1:|} 372.466 | 493.7 " 45 | 124 \1| 489 | 280 \1er{|} \1- \1br{\1:|} 372.40~ | 493.7 | 45 | 124 | 489 | 280 \1er{|} \1br{|} " " | \1use{3}\1- \1er{|} \1br{\1:|} 372.~~~ | 493.7 | 45 | 124 | 489 | 280 \1er{|\1rlap{ \1it ** ii}} \1- \1br{\1:|} \1use{2} | 832 | abc | 774 |$\1int$\1er{|\1mst{$\1int$}{0pt}{3pt}} \1br{|} \1use{2}\1zb{XY/A} |\1use{4}\1- \1er{|} \1br{\1:|} \1use{2} | qrr | aaa | 799 | \1er{|\1rlap{ \1it ** iii}} \1- \1endtable} \endttverbatim \endgroup The actual table is $$ \centerline{ \begintable \begintableformat &\center \endtableformat \- \br{\:|} \use{6} XYZABC \er{|\mst{\:}{3pt}{3pt}\rlap{ \it ** i}} \- \br{\:|} \use{3} XYZ | \use{3} ABC \er{|\mst{\:}{2pt}{2pt}} \- \br{\:|} X | Y | Z | A | B | C \er{|} \- \br{\:|} 372.466 | 493.7 " 45 | 124 \| 489 | 280 \er{|} \- \br{\:|} 372.40~ | 493.7 | 45 | 124 | 489 | 280 \er{|} \br{|} " " | \use{3}\- \er{|} \br{\:|} 372.~~~ | 493.7 | 45 | 124 | 489 | 280 \er{|\rlap{ \it ** ii}} \- \br{\:|} \use{2} | 832 | abc | 774 | $\int$\er{|\mst{$\int$}{0pt}{3pt}} \br{|} \use{2}\zb{XY/A} |\use{4}\- \er{|} \br{\:|} \use{2} | qrr | aaa | 799 | \er{|\rlap{ \it ** iii}} \- \endtable } $$ This example illustrates the power and flexibility of the commands. Row {\it i} shows the modification of the standard strut, which is 2.5ex high and .9ex deep, by changing the height and depth. The |\mst| is used again in row {\it iii} where some extra space is added at the bottom of the integral sign, but not at the top. The |\mst| takes three arguments or parameters. The first is the character from which the strut is derived, the second is the additional space on the top of the character and the third is on the bottom. The first two rows of this table had additional space at both the top and bottom while the ``integral'' row had changes only at the bottom. This fine tuning of tables can improve their visual form immensely. Row {\it iii} demonstrates the use of a |\zb| or ``zero-centered box'' for putting items in the center of larger boxes. This row with the |\zb| has {\bf no} struts. In addition, the |\zb| boxes are centered and have zero height and depth. This means that they take up no vertical space so that a partial horizontal line or rule may be inserted. This is done with the |\use{4}\-| which tells \intex\ to use 4 (data) columns for the horizontal rule. Many variations exist. The commands available in \intex\ for tables are described in the following section. \shead{aligncomforms}{Command Forms} The command forms in this section are organized under three different headings, tabbing, basic |\halign|, and \intex\ table commands. \dssshead{Tabbing Commands} \beginblockmode \pla\@|\+& ... &\cr| \nbr This is the command for entering a line of text in the {\it tab} format. The || in each column is optional and will spill over into the next column if there is no room. If there are $n$ tabs set, all |&| beyond the $n$ will set tabs at the location they appear in the text. The |\cr| terminates the line. See Section \ref{tabbing} for examples. \mbr \pla\@|\cleartabs| \nbr This command clears tabs to the right of the current one, on all subsequent lines. See Section \ref{tabbing} for examples. \mbr \pla\@|\tabalign ... \cr| \nbr This is a non |\outer| form of |\+| and can be used in definitions. \endblockmode \dssshead{Basic {\tentt \string\halign } Command Forms} \beginblockmode \pla\@|\halign{\cr \cr ... \cr}| \nbr This is the basic alignment command. It is necessary to be in (internal) vertical or display math mode to use it. The || describes a template or form for interpreting the text fields in following rows. Each field in an |\halign| is like an individual |\hbox| whose size is calculated by \tex. Between each of these field boxes is |\tabskip| glue that is allowed to stretch or shrink in order to vary the overall size of the alignment. An example of a preamble that creates three columns, the first left justified, the second centered and the third right justified is \begintt --> #\hss &\hss #\hss&\hss # \endtt The |#| shows where the text in that particular column should be placed, with respect to the glue, and the |&| indicates the end of the field. \begintt $$ \halign{#\hss &\hss #\hss&\hss #\cr This particular & example & will give the text \cr shown &below in its& \TeX\ form.\cr It &could &have had mathematics, $x^y$ too.\cr} $$ \endtt will in fact produce, as promised, $$ \halign{#\hss &\hss #\hss&\hss #\cr This particular & example & will give the text \cr shown &below in its& \TeX\ form.\cr It &could &have had mathematics, $x^y$ too.\cr} $$ The |$$...$$| is a convenient way of centering the |\halign|. If the preamble has an extra |&| in its definition, then \tex\ pretends that the pattern between the extra |&| and the |\cr| is repeated an infinite number of times. This means that it is quite easy to define a single |\halign| that can be used even when the number of columns is unknown. If the || above were replaced by |&|, then the entire sequence of left, center, right justified columns would be repeated. \mbr \pla\@|\hidewidth| \nbr This command is used to allow an entry in an alignment field to stick out the side of the field. If it is used on both sides, of an entry, the width of the column is unaffected by that field. This is used when column widths should be determined by the data entries and not the titles. It is probably not to useful in a pure \intex\ table format. \mbr \pla\@|\ialign{\cr \cr ... \cr}| \nbr This is identical to an |\halign| except that the |\tabskip| glue has been preset to be zero. \mbr \pla\@|\multispan {}| \nbr This effectively combines the || number of columns into one column and leaves the simple |#| template or pattern. Note that any implicit spacing at the edges of the column is lost. \mbr \pri\@|\noalign {}| \nbr This will place the || between this and the following row of an alignment. It must be the first token after the |\cr|. It has many uses including placing horizontal separator lines in tables. \mbr \pla\@|\oalign{\cr ... &\cr}| This creates a vertical list of the elements in each of the rows. There is only {\bf one} element allowed in each row. For instance \begintt $$ \oalign{this\cr is\cr a\cr vertical\cr list\cr} $$ \endtt gives $$ \oalign{this\cr is\cr a\cr vertical\cr list\cr} $$ Note that there are no struts in the rows. \mbr \pri\@|\omit| \nbr If |\omit| is the first token after the |&|, or the replacing |\span|, then the template pattern for that field is replaced with the simple |#|. Any tabskip glue is left intact. \mbr \pri\@|\span| \nbr This command in the text fields of an |\halign| can be used to replace the |&|. When this is done, the template or formats of the adjacent columns are butted against each other and results in both data fields placed in a box of the combined size of both columns, including any tabskip glue. This command in the preamble field of an |\halign| will cause the following command to be expanded. \intex\ uses this to transfer the information in format field to the actual |\halign| of the table. \mbr \pri\@|\valign{\cr \cr ... \cr}| \nbr This is the vertical equivalent of the |\halign|. \endblockmode \dssshead{\intex\ Table Command Forms} \beginblockmode \ext\vrt \nbr This command will put a vertical rule of width |\tr| at the point indicated. It should be used only in the text rows and not in the format. The |"| should be used to represent a rule column in the format. This command removes spaces to its left or, equivalently to the right of the item in the previous data column. \silent{\@{\char'42}} \mbr \ext|"| \nbr In text rows this is used to leave the vertical rule out of a rule column. In the format it is used to indicate the existence of a rule column. As a matter of style, \intex\ data columns should always be separated by a rule column. If there is no rule, this is indicated in the text rows by using |"| instead of \vrt. This command removes spaces to its left or, equivalently to the right of the item in the previous data column. \mbr \ext|\|\vrt \nbr This command is used in text rows to insert a rule that has been defined by the command name |\sprule|. The default for this rule is a thick vertical rule. \mbr \ext\@|~| \nbr This is used to force a space exactly the width of the numerals ``0''. Since all numerals are the same width, this enables the lining up of numeric data. If it is used in text mode in a table, it will still {\it tie} but the space will be slightly larger than outside tables. \mbr \ext\@|\:| \nbr This command puts a strut of height 2.5ex and depth .9ex. A strut is an invisible vrule of width 0pt. Thus the definition of |\:| is |\vrule height 2.5ex depth .9ex width 0pt|. A |\:| may be modified in place by putting a new height, depth or width {\bf immediately} after it. This command removes spaces to its left or, equivalently to the right of the item in the previous data column. \mbr \ext\@|\-| \nbr This command draws a horizontal line across the table. If it is used between rows it draws a line the entire width of the table. If it used in a data column, it draws a line the width of the column. It is commonly used in conjunction with |\use|. The commands |\use{3}\-| will draw a horizontal line across 3 columns. \mbr \ext\@|\br{} \er{}| \nbr These two commands are used at the beginning and end of row respectively. Since \intex\ places a rule column at the beginning and end of each table the || are put into those columns. This information includes struts for spacing, such as |\:| or \vrt for the entry of a vertical rule. |\er| removes spaces to its left or, equivalently to the right of the item in the previous data column. \mbr \ext\@|\begintable ... \endtable| \nbr This is the command that is used to begin a table. It starts a group and must have a corresponding |\endtable|. There is a corresponding |\everytable| token list. \mbr \ext\@|\begintableformat ... \endtableformat| \nbr This command starts the format definition of the table. It must have an associated |\endtableformat|. \intex\ searches for this |\endtableformat| {\bf before} actually processing the format information. Disaster ensues if it is not there. {\bf \intex\ adds a rule column to the beginning and the end of all formats.} A valid format is given below \begingroup \begintt \begintableformat \center " &\right " \hss A.B ## \hss " \center &X##X& \math\left \endtableformat \endtt \endgroup Note that the |##| must always appear as a pair rather than as single |#| in the ordinary |\halign| preamble. The |"| indicates a rule column. The |&| before the |\right| indicates that the format from this point to the end, including the {\bf additional} rule column inserted by \intex\ will be infinitely repeated. The |&X##X&| indicates a column with an |X| on either side of the data position. If an |"| were put in this position in the row, a column of |XX| would result. The simplest format, and perhaps the most useful is \begingroup \begintt \begintableformat &\center \endtableformat \endtt\endgroup which results in a potentially infinite number of centered data columns separated by rule columns. If any individual data item needs a different format, the use of a |\left{data}| or similar form may be used. \mbr \ext\@|\center \center{}| \nbr The first form of |\center| is used in a table format statement to create a centered data column. The second form is used in the data position of a data column to override the column format given in the format statement. Thus if the column format were |\center|, an entry of |\left{}| would put the || at the left of the column. If the format entry were |\math\left| then a data column entry of |\center{}| would center the || in the column but would still be in mathematics mode. An entry of |\omit\center{}| would center the data, remove the mathematics mode, {\bf and} remove the spacing at both sides of the data entry. This latter aspect would not show up with |\center| but would with |\left| or |\right|. \mbr \ext\@|\displaymath{}| \nbr In the table format, this command must be used with one of |\center|, |\right|, or |\left|, or any other valid data column specification. For example, a data column where the input data needs to be in display mathematics format and then right justified is given by |\displaymath\right|. In the text rows, this command will take the || and put it in display mathematics format. It will not affect the table format specification of |\right|, |\left| or |\center|. \mbr \ext\@|\everytable| \nbr This is a token list of commands that should be executed for every table. For instance \begintt \everytable ={\ninepoint} \endtt will make very table with |\ninepoint| fonts. \mbr \ext\@|\fulltablerule{}| \nbr This draws a horizontal line across the width of the entire table of thickness ||. |\tr| is used in vertical rules for widths and should be used here. For instance |\fulltablerule{2.5\tr}| will draw a horizontal line 2.5 times the thickness of the vertical rule given by \vrt which has the width |\tr|. \mbr \ext\@|\left| \nbr This command behaves identically to |\center| but {\bf left} justifies the data entry. See |\center| for more details. \mbr \ext\@|\math{}| \nbr This command is similar to |\displaymath| except that it sets up a normal text mathematics mode. Thus |\math{\alpha}| is equivalent to |$\alpha$|. In a table format, it is used in conjunction with the |\center|, |\right|, and |\left|. Thus |\math\center| produces a data column in text mathematics mode. \mbr \ext\@|\midtabglue [=] | \nbr Changing the || value of this parameter will insert tabskip glue into the internal columns in the table. The first and last column tabskip glues are set to 0pt plus 1fill. This is really only useful in conjunction with |\tablespread| when it is required that a table stretch to a bigger size. \mbr \ext\@|\modifystrut{}{}{} \mst = \modifystrut| \nbr |\modifystrut| and its abbreviation |\mst| will create and insert a strut that is || higher and || lower. These latter are dimensions and may be negative. The || may be a strut or a complete expression. || could even be a duplication of the row, as long as the row contained no explicit |&| characters and excluding the |\br| and |\er|. However, the arguments of the |\br| and |\er| could be included. \mbr \ext\@|\right| \nbr This command behaves identically to |\center| but {\bf right} justifies the data entry. See |\center| for more details. \mbr \ext\@|\sa{}| \nbr This command creates an empty box of zero height and depth with the width of the natural width of ||. It is, in effect, a horizontal strut and is used to create columns that have the minimum width as others in the table, without measuring. It was used to make a sample line in the {\it AT\&T} table in Section~\ref{intable}. \mbr \ext\@|\sprule| \nbr This is the name of the command that is inserted in a rule column by the command |\|\vrt. It is usually a rule but in fact is unrestricted. It is initially definded as a vrule of width |2.5\tr|. \mbr \ext\@|\tablespread = {}| \nbr This is a token list that can include any specification that is valid for an |\halign|, or equivalently a box. See Chapter~\ref{basbox} for details. A simple example is when a table is supposed to be exactly 8cm --- assuming that its natural width is less. Then a |\tablespread = {to 8cm}|, added just after the |\begintable|, along with the default tabskip glue, will produce it. An example is the {\it AT\&T} table at the beginning of the section. $$ \centerline{ \begintable \tablespread = {to 8cm} \begintableformat \center " \center " \center \endtableformat \br{} \sa{Dividend} "\sa{Dividend} "\sa{Dividend} \er{} %sample line \- \br{\:|} \use{3} AT\&T Common Stock \er{|} \- \br{\:|} Year | Price | Dividend \er{|} \- \br{\:|} 1971 | 41--54 | \$2.60 \er{|} \- \br{\:|} ~~~2 | 41--54 | ~2.70 \er{|} \- \br{\:|} ~~~3 | 46--55 | ~2.87 \er{|} \- \br{\:|} ~~~4 | 40--53 | ~3.24 \er{|} \- \br{\:|} ~~~5 | 45--52 | ~3.40 \er{|} \- \br{\:|} ~~~6 | 51--59 | ~~.95\rlap* \er{|} \- \br{\:}\use{3} \left{* (first quarter only)} \endtable } $$ \mbr \ext\@|\tcs| \nbr This dimension is the spacing inserted to the left and right of every data column by \intex\ through the use of the |\left|, |\center| and |\right| commands. It may be modified by |\tcs = |. \mbr \ext\@|\thrule{}| \nbr This command is used to insert a horizontal rule of thickness || across an entire data column. The command |\use{3}\thrule{2.5\tr}| will insert a horizontal line across three data columns, and omit the intervening vertical rules, if any. \mbr \ext\@|\tr| \nbr This dimension is the basic table line dimension, being the width of vertical lines and the height of horizontal lines (rules). It defaults to the natural width and height of \tex\ vrules and hrules, namely .4pt. It may be modified by |\tr = |. \mbr \ext\@|\tvrule{}| \nbr This is a vertical line or rule with width ||. The default value of ||, which is a dimen, is |\tr|. \mbr \ext\@|\use{}| \nbr This command effectively merges the next || into one and uses the format or template of the {\bf last} one. Thus if the last template is |\center|, then |\use{4} Table| will put |Table| in the center of these four columns. If the last column had a |\left| format but it was still desired to center |Table| then |\use{4} \center{Table}| will do the job. This is \intex's version of |\multispan| especially tailored to the idea of rule and data columns. \mbr \ext\@|\zerocenteredbox{} \zb = \zerocenteredbox| \nbr |\zerocenteredbox| and its abbreviation |\zb| will take the || and put it in a box, centered, and of zero height and depth. It automatically checks modes so that it will work correctly even with display math templates. It is used to place rows of data so that they are visually between data entries in other columns. For instance, the following table had its last two rows done this way. \bigbreak \centerline{ \begintable \begintableformat \left"&\center \endtableformat \fulltablerule{2.5\tr} \br{\:\|} \| \use{5} SERVICE \er{\|} \br{\|} \| \use{5}\- \er{\|} \br{\:\|}CANONICAL\| Fully | Dynamic | Complete | Switched | Switched \er{\|} \br{\:\|}NETWORK \|Connected|Allocation|Broadcast | Complete |Broadcast \er{\|} \br{\:\|} \| | | | Broadcast| \er{\|} \fulltablerule{3\tr}%--------------------------------------------------------- \br{\:\|} Fully \| | | | | \er{\|} \br{\|} \|\zb{$v$} |\zb{$v$} | \zb{$v$} |\zb{$(N-1)v$}|\zb{$(N-1)v$}\er{\|} \br{\:\|}Connected\| | | | | \er{\|} \- %-------------------------------------------------------------------------- \br{\:\|}Simplex Tree\| | | | | \er{\|} \br{\|} \|\zb{$v/(N-1)$}|\zb{$v$}|\zb{$v/(N-1)$}|\zb{$v$}|\zb{$v$}\er{\|} \br{\:\|}Collection\| | | | | \er{\|} \fulltablerule{2.5\tr} %------------------------------------------------------ \endtable } and is given by \begingroup \eightpoint \beginttverbatim \1centerline{ \1begintable \1begintableformat \1left"&\1center \1endtableformat \1fulltablerule{2.5\1tr} \1br{\1:\1|} \1| \1use{5} SERVICE \1er{\1|} \1br{\1|} \1| \1use{5}\1- \1er{\1|} \1br{\1:\1|}CANONICAL\1| Fully | Dynamic | Complete | Switched | Switched \1er{\1|} \1br{\1:\1|}NETWORK \1|Connected|Allocation|Broadcast | Complete |Broadcast \1er{\1|} \1br{\1:\1|} \1| | | | Broadcast| \1er{\1|} \1fulltablerule{3\1tr}%--------------------------------------------------------- \1br{\1:\1|} Fully \1| | | | | \1er{\1|} \1br{\1|} \1|\1zb{$v$} |\1zb{$v$}|\1zb{$v$}|\1zb{$(N-1)v$}|\1zb{$(N-1)v$}\1er{\1|} \1br{\1:\1|}Connected\1| | | | | \1er{\1|} \1- %-------------------------------------------------------------------------- \1br{\1:\1|}Simplex Tree\1| | | | | \1er{\1|} \1br{\1|} \1|\1zb{$v/(N-1)$}|\1zb{$v$}|\1zb{$v/(N-1)$}|\1zb{$v$}|\1zb{$v$}\1er{\1|} \1br{\1:\1|}Collection\1| | | | | \1er{\1|} \1fulltablerule{2.5\1tr} %------------------------------------------------------ \1endtable } \endttverbatim \endgroup \ejectpage \endblockmode \done