From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/inrstex/inrsdoc/thalign.tex | 1002 ++++++++++++++++++++++++++++++++++++
 1 file changed, 1002 insertions(+)
 create mode 100644 macros/inrstex/inrsdoc/thalign.tex

(limited to 'macros/inrstex/inrsdoc/thalign.tex')

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
-- 
cgit v1.2.3

