% 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{\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