diff options
Diffstat (limited to 'macros/plain/contrib/misc/btable.sty')
-rw-r--r-- | macros/plain/contrib/misc/btable.sty | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/macros/plain/contrib/misc/btable.sty b/macros/plain/contrib/misc/btable.sty new file mode 100644 index 0000000000..a11bdb7a05 --- /dev/null +++ b/macros/plain/contrib/misc/btable.sty @@ -0,0 +1,134 @@ +%From: mathas_a@maths.su.oz.au ( Andrew ) +%Newsgroups: comp.text.tex,aus.tex +%Subject: large table macros for TeX - btable.sty +%Message-ID: <1990Jul6.052546.5887@metro.ucc.su.OZ.AU> +%Date: 6 Jul 90 05:25:46 GMT +%Sender: news@metro.ucc.su.OZ.AU (news) +%Organization: Mathematics, University of Sydney +%Lines: 123 +%Xref: jarthur comp.text.tex:1959 +%Replies-To: comp.text.tex + +%Several people have expressed an interest in the table macros which +%I purported to have. They appear below. They do *not* work in LaTeX; +%however after looking at the supertab macros for LaTeX (which several +%people told me about), I think that I could modifify them to work +%with LaTeX. Any one who wishes to convert them feel free as I won't +%have the time to do this until the end of August. + +%The basic macros were written primarily by Bob Howlett +%(howlett_r@maths.su.oz.au), with me watching and making the odd +%suggestion and modification. Consequently I have called the macros +%the "btable.sty" macros. All credit should go to Bob. + +%The macros were written to typeset large character tables and +%consequently everything is put into math mode. To take them out of +%math mode the definitions of \tableline and \nextbit need to be +%changed in the obvious way (ie. remove the "$"s). + +%The reason why I wanted these macros was that TeX and LaTeX both +%spat the dummy and gave a memory overflow when I asked them to +%do my tables by conventional methods. I also tried using the +%tabular environment in LaTeX; butm for reasons which I can't +%comprehend (or through ill-use?), there seems to be a limit of +%approximately 15 columns in this evironment - I needed up to +%31 columns. Given this limit, the supertab environment written for LaTeX +%has the same restriction (it uses the tabular environment), and +%so it would be worthwhile to convert these macros to LaTeX (they +%don't work in LaTeX at the moment because \plainoutput is not +%defined in LaTeX). + +%These macros do not appear to have any memory restrictions: I ran +%what turned out to be 22 pages of 31 column tables through TeX in +%one hit without any complaints. As such they meet my specifications - +%I hope that they also met yours. + +%Andrew Mathas. + +% - smile at a stranger today and help make the world a better +% place; while you're, at it, why not hug a friend! + +%______________________________________________________________________ +%% Written by Bob Howlett with modifications by Andrew Mathas 1990. +%%% Table Format: +%% All entries are formatted in math mode. A horizontal line +%% is placed under the table header, and a vertical line +%% separates the first and second columns. The first column +%% is left justified and all other columns are right justified. +%% Any row can have an arbitrary number of columns. The macros were +%% designed for TeXing character tables. +%%% Table Syntax: +% - table begun with \starttable +% - columns separated by & +% - each row ended by &! +% - last row of table ended by &* and followed by \endtable +% - table header specified by \tableheader ...&! +% - if a blank line is wanted in the table put !\gap at the +% end of the row +% - to force a page break put !\pagegap at end of row +% - pages are broken naturally if \pagegap is not used, and the +% table header is put at the top of the following page. +%%% Column spacing +% - nameskip: width of the title column +% - colSkip: width of the columns +% - colsep: separation between columns +% - firstcol: extra space to the left of the first column (in my +% character tables the the first column (as distinct from the +% left-most column which "labels" each row), contains the +% degrees of the characters which are often very large numbers +% and so I needed more space: eg. psi | xxxxxxx xxxx xxxx ...). +\def\nameskip{\kern30pt} +\def\colskip{\kern20pt} +\def\colsep{\kern3pt} +\def\firstcol{\kern10pt} +%%% Known bug +% If the row ends with ...& &! then the next row may be +% added to the end of this row. This can be avoided +% by typing ...&\relax&! instead. +%% Useful note: +% set \hsize=\wd0 to make the page width equal the table width + +%_________________________btable.sty____________________________________ +%% Written by Bob Howlett with modifications by Andrew Mathas 1990. +\let\gap\relax +\newif\ifpagegap +\let\pagegap\pagegaptrue +\def\spacing{height8.5ptdepth4.5pt}% +\def\normalspacing{height8.5pt depth3.5pt} +\def\moreheight{height9.5pt depth4.5pt\let\spacing\normalspacing} +\def\muchmoreheight{height15pt depth4.5pt\let\spacing\normalspacing} +\def\tableheader#1!{\setbox0\hbox{\def\spacing{height8.5ptdepth4.5pt} + \tableline#1*}% + \global\def\TableHeader{\copy0\hrule width\wd0\let\spacing\moreheight}} +\def\starttable{\begingroup\offinterlineskip + \parskip=0pt\parindent=0pt% + \output={\plainoutput\TableHeader} + \TableHeader\startnewline} +\def\startnewline{\hfil\par\futurelet\next\continue} +\def\continue{\ifx\gap\next\message{III}\let\spacing\muchmoreheight\fi% + \ifx\pagegaptrue\next\vfill\eject\tableline\message{XXX}\pagegapfalse + \else\message{CCC}\tableline\fi} +\def\tableline#1&{\noindent% + \rlap{$#1$}\nameskip\colsep\vrule\spacing\firstcol\nextbit} +\def\nextbit#1&{\colskip\llap{$#1$}\colsep\check} +\def\check#1{\if!#1\expandafter\startnewline\else\if*#1\hfil + \else\nextbit#1\relax\fi\fi} +\def\endtable{\endgroup\vskip20pt} +%------------------------------------------------------------------------------- +\endinput +%A small example: larger examples available upon request +%(mathas_a@maths.su.oz.au). +\tableheader C_1&C_2&C_3&! +\starttable +\chi&1&0&0&-1&! +\chi&1&0&0&-1&! +\chi&1&0&0&-1&! +\chi&&0&0&-1&!\gap +\chi&1&0&&-1&! +\chi&1&0&&-1&! +\chi&1&0&0&-1&! +\phi&5&8&-1&2&!\pagegap +\psi&1&2&&&! +\alpha&59&0&* +\endtable +\bye |