summaryrefslogtreecommitdiff
path: root/macros/inrstex/inrsdoc/thalign.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/inrstex/inrsdoc/thalign.tex')
-rw-r--r--macros/inrstex/inrsdoc/thalign.tex1002
1 files changed, 1002 insertions, 0 deletions
diff --git a/macros/inrstex/inrsdoc/thalign.tex b/macros/inrstex/inrsdoc/thalign.tex
new file mode 100644
index 0000000000..436874708d
--- /dev/null
+++ b/macros/inrstex/inrsdoc/thalign.tex
@@ -0,0 +1,1002 @@
+%-*-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 <integer> \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 <integer> \columns| sets tabs so
+that there are |<integer>| 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\+<sample first column>& ... &<sample last column>\cr
+\+<first real text row>\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 |<preamble>\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
+<special table forms>
+\begintableformat
+<table format>
+\endtableformat
+<first row>
+ ...
+<last row>
+\endtable
+\endtt
+Each row has the form
+\begintt
+\br{<..>} <item> | <item> " <item> ... | <item> \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 |&<optional stuff>##<optional stuff>&| 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
+|<special table forms>|.
+
+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 <dimen>}| will force
+the table to be |<dimen>| 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\@|\+<text>&<text> ... &<text>\cr|
+\nbr
+This is the command for entering a line of text in the {\it tab} format. The
+|<text>| 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{<preamble>\cr <first row>\cr ... <last row>\cr}|
+\nbr
+This is the basic alignment command. It is necessary to be in (internal)
+vertical or display math mode to use it.
+The |<preamble>| 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
+<preamble> --> #\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 |<preamble>| above were
+replaced by |&<preamble>|, 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{<preamble>\cr <first row>\cr ... <last row>\cr}|
+\nbr
+This is identical to an |\halign| except that the |\tabskip| glue has been
+preset to be zero.
+
+\mbr
+\pla\@|\multispan {<integer>}|
+\nbr
+This effectively combines the |<integer>| 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 {<text>}|
+\nbr
+This will place the |<text>| 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{<first row>\cr ... &<last row>\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{<preamble>\cr <first column>\cr ... <last column>\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{<rules..>} \er{<rules..>}|
+\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
+|<rules..>| 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{<argument>}|
+\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{<text>}| would put the
+|<text>| at the left of the column. If the format entry were |\math\left|
+then a data column entry of |\center{<text>}| would center the |<text>| in
+the column but would still be in mathematics mode. An entry of
+|\omit\center{<text>}| 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{<argument>}|
+\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 |<argument>| 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{<dimen>}|
+\nbr
+This draws a horizontal line across the width of the entire table of
+thickness |<dimen>|. |\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{<argument>}|
+\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 [=] <glue>|
+\nbr
+Changing the |<glue>| 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{<original>}{<add to height>}{<add to depth>}
+\mst = \modifystrut|
+\nbr
+|\modifystrut| and its abbreviation |\mst| will create and insert a strut
+that is |<add to height>| higher and |<add to depth>| lower. These latter are
+dimensions and may be negative. The |<original>| may be a strut or a complete
+expression. |<original>| 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{<text>}|
+\nbr
+This command creates an empty box of zero height and depth with the width of
+the natural width of |<text>|. 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 = {<halign specification>}|
+\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 = <new dimen>|.
+
+\mbr
+\ext\@|\thrule{<height>}|
+\nbr
+This command is used to insert a horizontal rule of thickness |<height>|
+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 = <new dimen>|.
+
+\mbr
+\ext\@|\tvrule{<width>}|
+\nbr
+This is a vertical line or rule with width |<width>|. The default value of
+|<width>|, which is a dimen, is |\tr|.
+
+\mbr
+\ext\@|\use{<number of data columns>}|
+\nbr
+This command effectively merges the next
+|<number of data columns>| 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{<text>}
+ \zb = \zerocenteredbox|
+\nbr
+|\zerocenteredbox| and its abbreviation |\zb| will take the |<text>| 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 \ No newline at end of file