summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/misc/tabledoc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib/misc/tabledoc.tex')
-rw-r--r--macros/plain/contrib/misc/tabledoc.tex678
1 files changed, 678 insertions, 0 deletions
diff --git a/macros/plain/contrib/misc/tabledoc.tex b/macros/plain/contrib/misc/tabledoc.tex
new file mode 100644
index 0000000000..2ff9fe6deb
--- /dev/null
+++ b/macros/plain/contrib/misc/tabledoc.tex
@@ -0,0 +1,678 @@
+% file: tabledoc.tex
+% :: $Header: /usr2/myers/texsis/RCS/tabledoc.tex,v 1.1 90/05/24 13:39:32 myers Rel $
+% +--------------------------------------------------------------------+
+% | |
+% | This file contains documentation for the macro set TABLES.TEX. |
+% | |
+% | To make a copy, say "TEX1 TABLEDOC". |
+% | |
+% | |
+% | Ray F. Cowan, 22-February-85. |
+% | |
+% | Princeton University |
+% | |
+% | |
+% | Major Revision History: |
+% | ----------------------- |
+% | |
+% | 22-Oct-85 RFC Temporary fixes for \& added. |
+% | |
+% | 27-Feb-86 RFC Removed call to PHYZZX macro package. |
+% | Fixes for \& no longer needed and were removed. |
+% | |
+% +--------------------------------------------------------------------+
+%
+% Note to myself: add info on \tablelet
+% put \tstrut in table
+% \vctr
+% \ifhmode test in centeredtables
+% \header
+% \spreadwidth
+% new def of \tstrut
+% put spaces around entries
+% last revision ( 2 places )
+% notes on use of spaces
+%
+%%%\input TABLES.TEX
+\input ruled.tex % use E. Myers' ruled table macros instead
+%
+% +--------------------------------------------------------------------+
+% | |
+% | Definitions of font families and spacing parameters. |
+% | |
+% +--------------------------------------------------------------------+
+%
+\catcode`\@=11% Enable use of `@' in macro names.
+%
+\font\fourteenrm=cmr10 scaled\magstep2
+%
+\font\twelverm=cmr10 scaled\magstep1
+\font\twelvebf=cmbx10 scaled\magstep1
+\font\twelvei=cmmi10 scaled\magstep1 \skewchar\twelvei='177
+\font\twelvesy=cmsy10 scaled\magstep1 \skewchar\twelvesy='60
+\font\twelveex=cmex10 scaled\magstep1
+\font\twelvesl=cmsl10 scaled\magstep1
+\font\twelveit=cmti10 scaled\magstep1
+\font\twelvett=cmtt10 scaled\magstep1
+\font\twelvecp=cmcsc10 scaled\magstep1
+%
+\font\ninerm=cmr9 \font\sixrm=cmr6
+\font\ninebf=cmbx9 \font\sixbf=cmbx6
+\font\ninei=cmmi9 \skewchar\ninei='177
+\font\ninesy=cmsy9 \skewchar\ninesy='60
+\font\ninesl=cmsl9
+%
+\font\sixi=cmmi6 \skewchar\sixi='177
+\font\sixsy=cmsy6 \skewchar\sixsy='60
+%
+\font\tencp=cmcsc10
+\newfam\cpfam
+%
+\newcount\f@ntkey \f@ntkey=0
+\def\samef@nt{\relax \ifcase\f@ntkey \rm \or\oldstyle \or\or
+ \or\it \or\sl \or\bf \or\tt \or\caps \fi }
+%
+\def\twelvepoint{\relax
+ \textfont0=\twelverm \scriptfont0=\ninerm
+ \scriptscriptfont0=\sixrm
+ \def\rm{\fam0 \twelverm \f@ntkey=0 }\relax
+ \textfont1=\twelvei \scriptfont1=\ninei
+ \scriptscriptfont1=\sixi
+ \def\oldstyle{\fam1 \twelvei\f@ntkey=1 }\relax
+ \textfont2=\twelvesy \scriptfont2=\ninesy
+ \scriptscriptfont2=\sixsy
+ \textfont3=\twelveex \scriptfont3=\twelveex
+ \scriptscriptfont3=\twelveex
+ \def\it{\fam\itfam \twelveit \f@ntkey=4 }\textfont\itfam=\twelveit
+ \def\sl{\fam\slfam \twelvesl \f@ntkey=5 }\textfont\slfam=\twelvesl
+ \scriptfont\slfam=\ninesl
+ \def\bf{\fam\bffam \twelvebf \f@ntkey=6 }\textfont\bffam=\twelvebf
+ \scriptfont\bffam=\ninebf \scriptscriptfont\bffam=\sixbf
+ \def\tt{\fam\ttfam \twelvett \f@ntkey=7 }\textfont\ttfam=\twelvett
+ \h@big=10.2\p@{}
+ \h@Big=13.8\p@{}
+ \h@bigg=17.4\p@{}
+ \h@Bigg=21.0\p@{}
+ \def\caps{\fam\cpfam \twelvecp \f@ntkey=8 }\textfont\cpfam=\twelvecp
+ \setbox\strutbox=\hbox{\vrule height 10pt depth 4pt width\z@}
+ \samef@nt}
+%
+\def\tenpoint{\relax
+ \textfont0=\tenrm \scriptfont0=\sevenrm
+ \scriptscriptfont0=\fiverm
+ \def\rm{\fam0 \tenrm \f@ntkey=0 }\relax
+ \textfont1=\teni \scriptfont1=\seveni
+ \scriptscriptfont1=\fivei
+ \def\oldstyle{\fam1 \teni \f@ntkey=1 }\relax
+ \textfont2=\tensy \scriptfont2=\sevensy
+ \scriptscriptfont2=\fivesy
+ \textfont3=\tenex \scriptfont3=\tenex
+ \scriptscriptfont3=\tenex
+ \def\it{\fam\itfam \tenit \f@ntkey=4 }\textfont\itfam=\tenit
+ \def\sl{\fam\slfam \tensl \f@ntkey=5 }\textfont\slfam=\tensl
+ \def\bf{\fam\bffam \tenbf \f@ntkey=6 }\textfont\bffam=\tenbf
+ \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf
+ \def\tt{\fam\ttfam \tentt \f@ntkey=7 }\textfont\ttfam=\tentt
+ \def\caps{\fam\cpfam \tencp \f@ntkey=8 }\textfont\cpfam=\tencp
+ \setbox\strutbox=\hbox{\vrule height 8.5pt depth 3.5pt width\z@}
+ \samef@nt}
+%
+\newdimen\h@big \h@big=8.5\p@
+\newdimen\h@Big \h@Big=11.5\p@
+\newdimen\h@bigg \h@bigg=14.5\p@
+\newdimen\h@Bigg \h@Bigg=17.5\p@
+%
+\def\big#1{{\hbox{$\left#1\vbox to\h@big{}\right.\n@space$}}}
+\def\Big#1{{\hbox{$\left#1\vbox to\h@Big{}\right.\n@space$}}}
+\def\bigg#1{{\hbox{$\left#1\vbox to\h@bigg{}\right.\n@space$}}}
+\def\Bigg#1{{\hbox{$\left#1\vbox to\h@Bigg{}\right.\n@space$}}}
+%
+\normalbaselineskip = 20pt plus 0.2pt minus 0.1pt
+\normallineskip = 1.5pt plus 0.1pt minus 0.1pt
+\normallineskiplimit = 1.5pt
+\newskip\normaldisplayskip
+\normaldisplayskip = 20pt plus 5pt minus 10pt
+\newskip\normaldispshortskip
+\normaldispshortskip = 6pt plus 5pt
+\newskip\normalparskip
+\normalparskip = 6pt plus 2pt minus 1pt
+\newskip\skipregister
+\skipregister = 5pt plus 2pt minus 1.5pt
+%
+\newif\ifsingl@ \newif\ifdoubl@
+\newif\iftwelv@ \twelv@true
+%
+\def\singlespace{\singl@true\doubl@false\spaces@t}
+\def\doublespace{\singl@false\doubl@true\spaces@t}
+\def\normalspace{\singl@false\doubl@false\spaces@t}
+\def\Tenpoint{\tenpoint\twelv@false\spaces@t}
+\def\Twelvepoint{\twelvepoint\twelv@true\spaces@t}
+%
+\def\spaces@t{\relax%
+ \iftwelv@ \ifsingl@\subspaces@t3:4;\else\subspaces@t1:1;\fi%
+ \else \ifsingl@\subspaces@t3:5;\else\subspaces@t4:5;\fi \fi%
+ \ifdoubl@ \multiply\baselineskip by 5%
+ \divide\baselineskip by 4 \fi \unskip}
+%
+\def\subspaces@t#1:#2;{
+ \baselineskip = \normalbaselineskip
+ \multiply\baselineskip by #1 \divide\baselineskip by #2
+ \lineskip = \normallineskip
+ \multiply\lineskip by #1 \divide\lineskip by #2
+ \lineskiplimit = \normallineskiplimit
+ \multiply\lineskiplimit by #1 \divide\lineskiplimit by #2
+ \parskip = \normalparskip
+ \multiply\parskip by #1 \divide\parskip by #2
+ \abovedisplayskip = \normaldisplayskip
+ \multiply\abovedisplayskip by #1 \divide\abovedisplayskip by #2
+ \belowdisplayskip = \abovedisplayskip
+ \abovedisplayshortskip = \normaldispshortskip
+ \multiply\abovedisplayshortskip by #1
+ \divide\abovedisplayshortskip by #2
+ \belowdisplayshortskip = \abovedisplayshortskip
+ \advance\belowdisplayshortskip by \belowdisplayskip
+ \divide\belowdisplayshortskip by 2
+ \smallskipamount = \skipregister
+ \multiply\smallskipamount by #1 \divide\smallskipamount by #2
+ \medskipamount = \smallskipamount \multiply\medskipamount by 2
+ \bigskipamount = \smallskipamount \multiply\bigskipamount by 4 }
+%
+\def\normalbaselines{ \baselineskip=\normalbaselineskip
+ \lineskip=\normallineskip \lineskiplimit=\normallineskip
+ \iftwelv@\else \multiply\baselineskip by 4 \divide\baselineskip by 5
+ \multiply\lineskiplimit by 4 \divide\lineskiplimit by 5
+ \multiply\lineskip by 4 \divide\lineskip by 5 \fi }
+%
+\Twelvepoint % That's the default
+%
+\interlinepenalty=50
+\interfootnotelinepenalty=5000
+\predisplaypenalty=9000
+\postdisplaypenalty=500
+\hfuzz=1pt
+\vfuzz=0.2pt
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Next, I define output routines, footnotes & related stuff.
+%
+\def\pagecontents{
+ \ifvoid\topins\else\unvbox\topins\vskip\skip\topins\fi
+ \dimen@ = \dp255 \unvbox255
+ \ifvoid\footins\else\vskip\skip\footins\footrule\unvbox\footins\fi
+ \ifr@ggedbottom \kern-\dimen@ \vfil \fi }
+%
+\def\makeheadline{\vbox to 0pt{ \skip@=\topskip
+ \advance\skip@ by -12pt \advance\skip@ by -2\normalbaselineskip
+ \vskip\skip@ \line{\vbox to 12pt{}\the\headline} \vss
+ }\nointerlineskip}
+\def\makefootline{\baselineskip = 1.5\normalbaselineskip
+ \line{\the\footline}}
+%
+\newif\iffrontpage
+%
+% +--------------------------------------------------------------------+
+% | |
+% | Footnote definitions. |
+% | |
+% +--------------------------------------------------------------------+
+%
+\def\footrule{\dimen@=\prevdepth\nointerlineskip
+ \vbox to 0pt{\vskip -0.25\baselineskip \hrule width 0.35\hsize \vss}
+ \prevdepth=\dimen@ }
+%
+\newtoks\foottokens
+\foottokens={\Tenpoint\singlespace}
+\newdimen\footindent
+\footindent=24pt
+%
+\def\vfootnote#1{\insert\footins\bgroup \the\foottokens
+ \interlinepenalty=\interfootnotelinepenalty \floatingpenalty=20000
+ \splittopskip=\ht\strutbox \boxmaxdepth=\dp\strutbox
+ \leftskip=\footindent \rightskip=\z@skip
+ \parindent=0.5\footindent \parfillskip=0pt plus 1fil
+ \spaceskip=\z@skip \xspaceskip=\z@skip
+ \Textindent{$ #1 $}\footstrut\futurelet\next\fo@t}
+%
+\def\Textindent#1{\noindent\llap{#1\enspace}\ignorespaces}
+\def\footnote#1{\attach{#1}\vfootnote{#1}}
+\def\footattach{\attach\footsymbol}
+\def\foot{\attach\footsymbolgen\vfootnote{\footsymbol}}
+\let\footsymbol=\star
+%
+\newcount\lastf@@t \lastf@@t=-1
+\newcount\footsymbolcount \footsymbolcount=0
+\newif\ifPhysRev
+%
+\def\footsymbolgen{\relax \ifPhysRev \iffrontpage \NPsymbolgen\else
+ \PRsymbolgen\fi \else \NPsymbolgen\fi
+ \global\lastf@@t=\pageno \footsymbol }
+%
+\def\NPsymbolgen{\ifnum\footsymbolcount<0 \global\footsymbolcount=0\fi
+ {\iffrontpage \else \advance\lastf@@t by 1 \fi
+ \ifnum\lastf@@t<\pageno \global\footsymbolcount=0
+ \else \global\advance\footsymbolcount by 1 \fi }
+ \ifcase\footsymbolcount \fd@f\star\or \fd@f\dagger\or \fd@f\ast\or
+ \fd@f\ddagger\or \fd@f\natural\or \fd@f\diamond\or \fd@f\bullet\or
+ \fd@f\nabla\else \fd@f\dagger\global\footsymbolcount=0 \fi }
+\def\fd@f#1{\xdef\footsymbol{#1}}
+%
+\def\PRsymbolgen{\ifnum\footsymbolcount>0 \global\footsymbolcount=0\fi
+ \global\advance\footsymbolcount by -1
+ \xdef\footsymbol{\sharp\number-\footsymbolcount} }
+%
+\def\space@ver#1{\let\@sf=\empty \ifmmode #1\else \ifhmode
+ \edef\@sf{\spacefactor=\the\spacefactor}\unskip${}#1$\relax\fi\fi}
+\def\attach#1{\space@ver{\strut:{\mkern 2mu #1} }\@sf\ }
+%
+%
+\def\alphabetic#1{\count255='140 \advance\count255 by #1\char\count255}
+\def\Alphabetic#1{\count255='100 \advance\count255 by #1\char\count255}
+\def\Roman#1{\uppercase\expandafter{\romannumeral #1}}
+\def\roman#1{\romannumeral #1}
+\def\Number#1{\number #1}
+%
+\def\GENITEM#1;#2{\par \hangafter=0 \hangindent=#1
+ \Textindent{$ #2 $}\ignorespaces}
+\outer\def\newitem#1=#2;{\gdef#1{\GENITEM #2;}}
+%
+\newdimen\itemsize \itemsize=30pt
+\newitem\item=1\itemsize;
+\newitem\sitem=1.75\itemsize; \let\subitem=\sitem
+\newitem\ssitem=2.5\itemsize; \let\subsubitem\ssitem
+%
+\outer\def\newlist#1=#2&#3&#4;{\toks0={#2}\toks1={#3}%
+ \count255=\escapechar \escapechar=-1
+ \alloc@0\list\countdef\insc@unt\listcount \listcount=0
+ \edef#1{\par
+ \countdef\listcount=\the\allocationnumber
+ \advance\listcount by 1
+ \hangafter=0 \hangindent=#4
+ \Textindent{\the\toks0{\listcount}\the\toks1}}
+ \expandafter\expandafter\expandafter
+ \edef\c@t#1{begin}{\par
+ \countdef\listcount=\the\allocationnumber \listcount=1
+ \hangafter=0 \hangindent=#4
+ \Textindent{\the\toks0{\listcount}\the\toks1}}
+ \expandafter\expandafter\expandafter
+ \edef\c@t#1{con}{\par \hangafter=0 \hangindent=#4 \noindent}
+ \escapechar=\count255}
+\def\c@t#1#2{\csname\string#1#2\endcsname}
+%
+\newlist\point=\Number&.&1.0\itemsize;
+\newlist\subpoint=(\alphabetic&)&1.75\itemsize;
+\newlist\subsubpoint=(\roman&)&2.5\itemsize;
+%
+\let\spoint=\subpoint \let\sspoint=\subsubpoint
+\let\spointbegin=\subpointbegin \let\sspointbegin=\subsubpointbegin
+\let\spointcon=\subpointcon \let\sspointcon=\subsubpointcon
+%
+\def\endpage{\vfil\break}
+%
+\hsize=6.5in
+\vsize=8.9in
+\voffset=0.5in
+%
+%
+\catcode`\@=12% Return `@' to normal use.
+%
+%
+% +--------------------------------------------------------------------+
+% | |
+% | Verbatim listing macros. |
+% | |
+% +--------------------------------------------------------------------+
+%
+\newif\ifverbatimmode%
+\verbatimmodefalse%
+\def\|{|}%
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1=12 }%
+ \dospecials%
+}%
+%
+\def\startverbatim{\catcode`\|=13}%
+\def\endverbatim{\catcode`\|=12}%
+\def\setupverbatim{%
+ \tt%
+ \def\par{\leavevmode\endgraf}%
+ \catcode`\`=13%
+ \obeylines%
+ \uncatcodespecials%
+ \obeyspaces%
+}%
+%
+{\obeyspaces\global\let =\ }% Let active space=control space.
+{\catcode`\`=13\gdef`{\relax\lq}}% Fix for Spanish punctuation in \tt.
+%
+{\catcode`\|=13%
+\gdef|{%
+ \relax%
+ \ifverbatimmode %
+ \endgroup%
+ \verbatimmodefalse%
+ \begingroup%
+ \else%
+ \verbatimmodetrue%
+ \begingroup%
+ \setupverbatim%
+ \parindent=1in% Set the indentation of verbatim lines.
+ \parskip=0pt% Don't put so much space between the lines.
+ \begingroup\aftergroup\relax% This makes \relax the first token
+% scanned after the |; prevents
+% premature association of catcodes.
+ \fi%
+\endgroup}%
+}% Return | to its normal use.
+\def\beginverbatimlisting{\par\begingroup\setupverbatim\doverbatim}
+{\catcode`\|=0 \catcode`\\=12 % | is temporary escape character
+ |obeylines|gdef|doverbatim^^M#1\endverbatimlisting{#1|endgroup}}
+%
+% Macro for verbatim listing of a file.
+%
+\def\inputverbatimlisting#1{%
+ \par%
+ \begingroup%
+ \parskip0pt%
+ \parindent0pt%
+ \setupverbatim%
+ \input#1 %
+ \endgroup%
+}%
+%
+\def\Table#1#2{%
+ \setbox0=\hbox to 1.5in{\hfil\it Table~#1.\quad}%
+ \par\hangindent1.5in\hangafter1%
+ \noindent\box0 #2%
+}%
+\def\\{\char`\\}
+\def\{{\char`\{}
+\def\}{\char`\}}
+\def\vbar{\char`\|}
+\def\Psizzl{%
+ P%
+ \kern-.30em\lower.70ex\hbox{s}%
+ \kern-.08em\lower.0 ex\hbox{i}%
+ \kern-.05em\lower.0 ex\hbox{z}%
+ \kern-.17em\lower.5 ex\hbox{z}%
+ \kern-.09em\lower.2 ex\hbox{l}%
+ }%
+%
+\font\tensltt=cmsltt10%
+\footline={\ifnum\count0=1
+\rlap{\tensl[From file {\tensltt TABLEDOC.TEX}]}%
+\hfil\it\number\count0\hfil\llap{\tensl[Last revision 27--Feb--86]}%
+\else\hfil\fi}
+\headline={\ifnum\count0=1 \hfil\else\vbox{\baselineskip0pt
+ \line{\tenit Page~\number\count0\hfil Making Tables with Macros}
+ \line{\leaders\hrule\hfill}}\fi}
+\startverbatim
+{\thicksize=0.8pt\def\tstrut{\vrule width0pt height18pt depth7pt}
+\begintable
+\quad\fourteenrm Making Tables with Macros\quad\endtable}
+\vskip 0.4in
+\centerline{Ray F.~Cowan}
+\vskip 0.1in
+\centerline{22 February 1985}
+\vskip 0.3in
+\par
+Tables have traditionally been difficult to make using \TeX---especially
+ruled tables. The file |TABLES.TEX| contains macros designed
+to prepare both ruled and unruled tables with considerably less effort.
+Note that |TABLES.TEX| can be
+used with any macro set;
+it does not depend upon prior loading of |PHYZZX|
+or \Psizzl, for example.
+One of the main advantages of this macro set is
+that you no longer need to
+design a
+preamble for the table; the macros will scan your table entries and
+construct a suitable preamble for you.
+To access the macros, say \hbox{`|\input TABLES|'} in your \TeX\
+file, somewhere before the first time you use them.
+The macros available are listed in Table~1 and Table~2.
+
+\endverbatim
+\midinsert
+\smallskip
+\tablewidth=\hsize
+\begintable
+\sl Macro name\hfill | \sl Description \hfill \crthick
+ \tt\\begintable\hfill | \para{Indicates the start of a new table.} \cr
+ \tt\\endtable\hfill | \para{Ends the current table. Must be used
+ in place of the last {\tt\\cr}.}\cr
+ \tt\\cr \hfill | \para{Ends the current row, and starts the next
+ one. The completed row will be
+ separated from the next with a thin
+ horizontal rule.} \cr
+ \tt\\crthick\hfill | \para{Similar to {\tt\\cr}, but the rows will be
+ separated with a thick horizontal rule.}\cr
+\tt\\crnorule \rm or \tt \\nr \hfill | \para{Similar
+to {\tt\\cr}, but the rows will not
+ be separated by any rule.}\cr
+ \vtop{\noindent\hsize=1.4in\tt\vbar\qquad \rm (vertical bar)\hfil\break
+ or \tt\\vb} \hfill
+ | \para{Separates one column from the next, and
+ puts a vertical rule between them.} \cr
+ \tt\&\ \rm or\tt\ \\novb \hfill
+ | \para{Same as {\tt\vbar}, but does not put in the
+ vertical rule between the columns.}\cr
+ \tt \\\vbar \hfill | \para{Same as {\tt\vbar}, but puts in a
+ thick vertical rule.}
+\endtable
+\Table{1}{Description of simple table macros.}
+\endinsert
+\startverbatim
+\par
+The general idea is that you start your table with the command
+|\begintable|, type your entries in one row at a time, then finish
+with the command |\endtable|.
+To specify a row, enter the individual entries into your \TeX\ file,
+separating each column entry with a {\tt \vbar}, an {\tt \&}, or
+a {\tt \\\vbar}. A {\tt \vbar} will separate the adjoining columns
+with a thin vertical rule, an {\tt \&} will leave out the vertical rule,
+and
+a {\tt \\\vbar} will separate the columns with a thick vertical rule.
+To end one row and start another, use either a |\cr|, a |\crnorule|, or
+a |\crthick|. A |\cr| separates the rows with a thin
+horizontal rule; a |\crnorule| leaves out the horizontal
+rule, while |\crthick| inserts a thick horizontal rule.
+Then end the last row with an |\endtable|.
+\par
+Each row of the table must contain exactly the same number of columns,
+otherwise unpredictable things will happen. Again, the {\it last row}
+ must {\it not} end
+with |\cr|$\ldots\,$, but
+{\it must} end with an |\endtable|. If you put a |\cr|
+and an |\endtable| both on the last row, you won't like what happens.
+\endverbatim
+\pageinsert
+\smallskip
+\tablewidth=\hsize
+\begintable
+\sl Macro name\hfill | \sl Description \hfill \crthick
+ \tt\\thicksize={\it dimen} \hfill | \para{This
+ dimension specifies the thickness
+ of the thick rules in the table. The default size
+ is 1.5 points.} \cr
+ \tt\\thinsize={\it dimen} \hfill | \para{This dimension specifies the
+ thickness of thin rules in the table. The default
+ size is 0.8 points.} \cr
+ \tt\\tablewidth={\it dimen} \hfill | \para{Specifies how wide to make
+ the next table. If not specified, the table is made to
+ its natural width. This value is reset following
+ the construction of each table.} \cr
+ \tt\\multispan\{$n$\}\hfill | \para{Makes
+ the next entry span the next $n$
+ columns, where $n$ is an integer, $n>0$.
+ See other notes on {\tt\\multispan} below.}\cr
+ \tt\\omit \hfill | \para{This \TeX\ primitive causes the normal
+ template for its entry to be omitted, allowing the
+ user to do something else with this entry.} \cr
+ \tt\\para\{{\it text}\}\ \hfill | \para{Formats {\it text} into
+ a neat little paragraph like this one. The width of
+ the paragraph produced is determined by the dimension
+ {\tt \\parasize}. The default is 4 inches. } \cr
+ \tt\\parasize={\it dimen} \hfill | \para{Sets the width of paragraphs
+ produced with the {\tt\\para} macro. } \cr
+ \tt\\ctr\{\#\} \hfill | \para{Used in the standard template, this
+ macro centers its argument in the column. The
+ user can redefine it for special effects.
+ The default definition is
+ \par \tt \\def\\ctr\#1\{\\hfil\\\ \#1\\\ \\hfil\} } \cr
+ \tt\\vctr\{\#\}\hfill | \para{Centers an entry vertically. The
+ vertical center of the entry is placed on
+ the baseline of the row containing it. The
+ intended use is to center an entry between
+ two rows.} \cr
+ \tt\\centeredtables\hfill | \para{Turns table centering on. Each table
+ will be centered
+ left-to-right on the page. This is the
+ default.} \cr
+ \tt\\noncenteredtables\hfill | \para{Turns table centering off. Each
+ table is returned as an {\tt\\hbox}, and it
+ is up to the user to place it as desired.}
+\endtable
+\smallskip\rightline{\it continued$\ldots$}
+\vfill
+\endinsert
+\topinsert\leftline{\it continued$\ldots$}\smallskip
+\tablewidth=\hsize
+\begintable
+\sl Macro name\hfill | \sl Description \hfill \crthick
+\tt\\tableinfotrue\hfill | \para{Turns on the diagnostic message telling
+ you how many rows and colums were found in the
+ table. This is the default.} \cr
+\tt\\tableinfofalse\hfill\ | \para{Turns off the diagnostic messages
+ concerning rows and columns.}
+\endtable
+\Table{2}{Description of extended table macros.}
+\endinsert
+\startverbatim
+\par
+Each
+entry will be centered in its column (unless you use |\omit|, a \TeX\
+primitive, or |\multispan|. See notes below).
+The table will be centered in an |\hbox| of width the |\hsize|, unless
+you have turned table centering off (see the commands |\centeredtables|
+and |\noncenteredtables|).
+\par
+Each time a new table is encountered, a message similar to
+`|[Nrows=|$xx$|, Ncols=|$yy$|]|' is
+printed on your terminal, where $xx$ is the number of rows
+and $yy$ the number of columns discovered in your table. If you think
+they are incorrect, you may have left out some {\tt\|}'s or
+{\tt\&}'s or {\tt\\cr}'s.
+This diagnostic feature can be disabled by saying |\tableinfofalse|
+(and restarted by saying |\tableinfotrue|).
+\bigskip
+\leftline{\it An example}
+\par
+ A simple 3-row, 2-column table with a header spanning two
+ columns could be specified as (see notes 3 and 4
+ below on
+ the use of |\multispan|\foot{Note to experienced \TeX\ %
+ users: these macros locally (within the {\tt \\begintable}$\,\ldots%
+\,${\tt \\endtable} grouping) redefine {\tt \\multispan} to take as its %
+argument %
+the number of user entries $n$ to be spanned, and not the total number %
+of columns including rules, which would be $2n-1$.}):
+\endverbatim
+\par\noindent
+\line{\vbox{\parskip0pt\baselineskip15pt
+\beginverbatimlisting
+ \begintable
+ \multispan{2}\tstrut\hfil The Top Line\hfil\crthick
+ Entry 1 | Entry 2 \cr
+ Entry 3 | Entry 4 \endtable
+\endverbatimlisting}\hfil}
+\par\noindent
+These commands produce Table~3.
+\midinsert
+\medskip
+ \begintable
+ \multispan{2}\tstrut\hfil The Top Line\hfil\crthick
+ Entry 1 | Entry 2 \cr
+ Entry 3 | Entry 4 \endtable
+\smallskip
+\Table{3}{A sample table.}
+\medskip\endinsert
+\startverbatim
+\bigskip
+\leftline{\it An example of non-centered tables}
+\par
+Two or more tables can be placed side-by-side by using the
+|\noncenteredtables| command. Consider the two tables here:
+\midinsert
+\medskip
+\noncenteredtables
+\line{
+\begintable
+Item ABC | Item DEF \cr
+Item GHI | Item JKL \endtable
+\hfil
+\begintable
+Data 111 | Data 222 \cr
+Data 333 | Data 444 \cr
+Data 555 | Data 666 \endtable
+} % This `}' ends the \line we started above.
+\smallskip
+\Table{4}{Two non-centered tables aligned side-by-side.}
+\medskip
+\endinsert
+These were produced by saying:
+\par\noindent
+\endverbatim
+\line{\vbox{\parskip0pt\baselineskip15pt
+\beginverbatimlisting
+ \noncenteredtables
+ \line{
+ \begintable
+ Item ABC | Item DEF \cr
+ Item GHI | Item JKL \endtable
+ \hfil
+ \begintable
+ Data 111 | Data 222 \cr
+ Data 333 | Data 444 \cr
+ Data 555 | Data 666 \endtable
+ } % This `}' ends the \line we started above.
+\endverbatimlisting}\hfil}
+\centeredtables
+\startverbatim
+\par\noindent
+Notice that tables of unequal height are aligned at the bottom.
+\bigbreak
+\par\noindent
+\leftline{$\underline{\hbox{\bf Usage notes:}}$}
+\pointbegin
+ Vertical spacing is done with a strut, called |\tstrut|, which is
+ initially defined as 3.1ex high and 1.2ex deep.
+ If you don't like the way it looks, you can redefine |\tstrut| to
+ your own
+ liking:|
+\def\tstrut{\vrule height |$hh$| depth |$dd$| width 0pt}
+|\pointcon where you
+ specify your desired height $hh$ and depth $dd$.
+\point You can control the thickness of the thin and thick rules
+ through the use of |\thicksize| and |\thinsize|. You can even
+ turn off the rules entirely by saying |
+\thinsize=0pt
+\thicksize=0pt
+|\pointcon for example.
+ \point If you use a |\multispan|
+ or an |\omit| in the first column of a row, you will
+ lose the effect of the |\tstrut| within that row and
+ must specify it yourself. See
+ the example above.
+ \point Use of |\multispan| and |\omit| will
+ cause the default centering of
+ the entry to be lost; if you want it centered, put an |\hfil| on
+ each side of the entry, as in the example above.
+ \point To override the default centering action, include an |\hfill| on
+ the left or right as desired; the |\hfill| will
+ override the default
+ |\hfil|.
+%
+\endverbatim
+\endpage
+\bye