summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/misc/btable.sty
blob: a11bdb7a057fdda7c396ddbd9ec71cfbc6bd85e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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