%%
%% This is file `supertabular.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% supertabular.dtx (with options: `package')
%%
%% Copyright (C) 1988-97 by Theo Jurriens, Johanes Braams (90-96).
%% All rights reserved.
%%
%% IMPORTANT NOTICE:
%%
%% You are not allowed to change this file. You may however copy this file
%% to a file with a different name and then change the copy.
%%
%% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED
%% to take money for the distribution or use of this file (or a changed
%% version) except for a nominal charge for copying etc.
%%
%% You are allowed to distribute this file under the condition that it is
%% distributed together with all files mentioned below.
%%
%% If you receive only some of these files from someone, complain!
%%
%% Error Reports in case of UNCHANGED versions to either of
%%
%% J.L. Braams
%% TeXniek
%% Kooienswater 62
%% 2715 AJ Zoetermeer
%% The Netherlands
%% Internet: <[email protected]>
%%
%% Theo Jurriens
%% Rijks Universiteit Groningen
%% P.O Box 800,
%% 9700 AV Groningen
%% The Netherlands
%% Internet: <[email protected]>
%%
%% File `supertabular.dtx'.
%% Copyright (C) 1988 by Theo Jurriens <[email protected]>
%% P.O Box 800, 9700 AV Groningen
%% Copyright (C) 1990-1997 by Johannes Braams <[email protected]>
%% Kooienswater 62
%% 2715 AJ Zoetermeer NL
%% all rights reserved.
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{supertabular}
[1997/02/20 v4.0c the supertabular environment]
\newcount\c@tracingst
\DeclareOption{errorshow}{\c@tracingst\z@}
\DeclareOption{pageshow}{\c@tracingst\tw@}
\DeclareOption{debugshow}{\c@tracingst5\relax}
\ProcessOptions
\newif\if@topcaption \@topcaptiontrue
\def\topcaption{\@topcaptiontrue\tablecaption}
\def\bottomcaption{\@topcaptionfalse\tablecaption}
\long\def\tablecaption{%
\refstepcounter{table}\@dblarg{\@xtablecaption}}
\long\def\@xtablecaption[#1]#2{%
\long\gdef\@process@tablecaption{\ST@caption{table}[#1]{#2}}}
\global\let\@process@tablecaption\relax
\newif\ifST@star
\newdimen\ST@wd
\long\def\ST@caption#1[#2]#3{\par%
\addcontentsline{\csname ext@#1\endcsname}{#1}%
{\protect\numberline{%
\csname the#1\endcsname}{\ignorespaces #2}}
\begingroup
\@parboxrestore
\normalsize
\if@topcaption \vskip -10\p@ \fi
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\if@topcaption \vskip 10\p@ \fi
\endgroup}
\newcommand\tablehead[1]{%
\gdef\@tablehead{%
\noalign{%
\global\let\@savcr=\\
\global\let\\=\cr}%
#1%
\noalign{\global\let\\=\@savcr}}}
\tablehead{}
\newcommand\tablefirsthead[1]{\gdef\@table@first@head{#1}}
\newcommand\tabletail[1]{%
\gdef\@tabletail{%
\noalign{%
\global\let\@savcr=\\
\global\let\\=\cr}%
#1%
\noalign{\global\let\\=\@savcr}}}
\tabletail{}
\newcommand\tablelasttail[1]{\gdef\@table@last@tail{#1}}
\newcommand\sttraceon{\c@tracingst5\relax}
\newcommand\sttraceoff{\c@tracingst\z@}
\newcommand\ST@trace[2]{%
\ifnum\c@tracingst>#1\relax
\GenericWarning
{(supertabular)\@spaces\@spaces}
{Package supertabular: #2}%
\fi
}
\newdimen\ST@pageleft
\newcommand*\shrinkheight[1]{%
\noalign{\global\ST@pageleft=#1\relax}}
\newdimen\ST@headht
\newdimen\ST@tailht
\newdimen\ST@pagesofar
\newdimen\ST@pboxht
\newdimen\ST@lineht
\newdimen\ST@toadd
\newdimen\ST@dimen
\newbox\ST@pbox
\def\ST@tabularcr{%
{\ifnum0=`}\fi
\@ifstar{\ST@xtabularcr}{\ST@xtabularcr}}
\def\ST@xtabularcr{%
\@ifnextchar[{\ST@argtabularcr}{\ifnum0=`{\fi}\cr\ST@cr}}
\def\ST@argtabularcr[#1]{%
\ifnum0=`{\fi}%
\ifdim #1>\z@
\unskip\ST@xargarraycr{#1}
\else
\ST@yargarraycr{#1}%
\fi}
\def\ST@xargarraycr#1{%
\@tempdima #1\advance\@tempdima \dp \@arstrutbox
\vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr
\noalign{\global\ST@toadd=#1}\ST@cr}
\def\ST@yargarraycr#1{%
\cr\noalign{\vskip #1\global\ST@toadd=#1}\ST@cr}
\def\ST@startpbox#1{%
\setbox\ST@pbox\vtop\bgroup\hsize#1\@arrayparboxrestore}
\def\ST@astartpbox#1{%
\bgroup\hsize#1%
\setbox\ST@pbox\vtop\bgroup\hsize#1\@arrayparboxrestore}
\def\ST@endpbox{%
\@finalstrut\@arstrutbox\par\egroup
\ST@dimen=\ht\ST@pbox
\advance\ST@dimen by \dp\ST@pbox
\ifnum\ST@pboxht<\ST@dimen
\global\ST@pboxht=\ST@dimen
\fi
\ST@dimen=\z@
\box\ST@pbox\hfil}
\def\ST@aendpbox{%
\@finalstrut\@arstrutbox\par\egroup
\ST@dimen=\ht\ST@pbox
\advance\ST@dimen by \dp\ST@pbox
\ifnum\ST@pboxht<\ST@dimen
\global\ST@pboxht=\ST@dimen
\fi
\ST@dimen=\z@
\unvbox\ST@pbox\egroup\hfil}
\def\estimate@lineht{%
\ST@lineht=\arraystretch \baslineskp
\global\advance\ST@lineht by 1\p@
\ST@trace\tw@{Average line height:\the\ST@lineht}%
}
\def\@calfirstpageht{%
\ST@trace\tw@{Calculating height of tabular on first page}%
\global\ST@pagesofar\pagetotal
\global\ST@pageleft\@colroom
\ST@trace\tw@{Height of text = \the\pagetotal; \MessageBreak
Heigth of page = \the\ST@pageleft}%
\if@twocolumn
\ST@trace\tw@{two column mode}%
\if@firstcolumn
\ST@trace\tw@{First column}%
\ifnum\ST@pagesofar > \ST@pageleft
\global\ST@pageleft=2\ST@pageleft
\ifnum\ST@pagesofar > \ST@pageleft
\newpage\@calnextpageht
\ST@trace\tw@{starting new page}%
\else
\ST@trace\tw@{Second column}%
\global\advance\ST@pageleft -\ST@pagesofar
\global\advance\ST@pageleft -\@colroom
\fi
\fi
\fi
\else
\ST@trace\tw@{one column mode}%
\ifnum\ST@pagesofar > \ST@pageleft
\ST@trace\tw@{starting new page}%
\newpage\@calnextpageht
\else
\global\advance\ST@pageleft by -\ST@pagesofar
\global\ST@pagesofar\z@
\fi
\fi
\ST@trace\tw@{Available height: \the\ST@pageleft}%
\ifx\@@tablehead\@empty
\ST@headht=\z@
\else
\setbox\@tempboxa=\vbox{\@arrayparboxrestore
\ST@restore
\expandafter\tabular\expandafter{\ST@tableformat}%
\@@tablehead\endtabular}%
\ST@headht=\ht\@tempboxa\advance\ST@headht\dp\@tempboxa
\fi
\ST@trace\tw@{Height of head: \the\ST@headht}%
\ifx\@tabletail\@empty
\ST@tailht=\z@
\else
\setbox\@tempboxa=\vbox{\@arrayparboxrestore
\ST@restore
\expandafter\tabular\expandafter{\ST@tableformat}
\@tabletail\endtabular}
\ST@tailht=\ht\@tempboxa\advance\ST@tailht\dp\@tempboxa
\fi
\advance\ST@tailht by \ST@lineht
\ST@trace\tw@{Height of tail: \the\ST@tailht}%
\ST@trace\tw@{Maximum height of tabular: \the\ST@pageleft}%
\@tempdima\ST@headht
\advance\@tempdima\ST@lineht
\advance\@tempdima\ST@tailht
\ST@trace\tw@{Minimum height of tabular: \the\@tempdima}%
\ifnum\@tempdima>\ST@pageleft
\ST@trace\tw@{starting new page}%
\newpage\@calnextpageht
\fi
}
\def\@calnextpageht{%
\ST@trace\tw@{Calculating height of tabular on next page}%
\global\ST@pageleft\@colroom
\global\ST@pagesofar=\z@
\ST@trace\tw@{Maximum height of tabular: \the\ST@pageleft}%
}
\def\x@supertabular{%
\if@topcaption \@process@tablecaption \fi
\global\let\@oldcr=\\
\def\baslineskp{\baselineskip}%
\ifx\undefined\@classix
\let\@@tabularcr\@tabularcr
\let\@tabularcr\ST@tabularcr
\let\org@startpbox=\@startpbox
\let\org@endpbox=\@endpbox
\let\@@startpbox=\ST@startpbox
\let\@@endpbox=\ST@endpbox
\else
\let\@@tabularcr\@arraycr
\let\@arraycr\ST@tabularcr
\let\org@startpbox=\@startpbox
\let\org@endpbox=\@endpbox
\let\@startpbox=\ST@astartpbox
\let\@endpbox=\ST@aendpbox
\fi
\ifx\@table@first@head\undefined
\let\@@tablehead=\@tablehead
\else
\let\@@tablehead=\@table@first@head
\fi
\estimate@lineht
\@calfirstpageht
}
\def\supertabular{%
\@ifnextchar[{\@supertabular}%]
{\@supertabular[]}}
\def\@supertabular[#1]#2{%
\def\ST@tableformat{#2}%
\ST@trace\tw@{Starting a new supertabular}%
\global\ST@starfalse
\x@supertabular
\expandafter\tabular\expandafter{\ST@tableformat}%
\@@tablehead}
\@namedef{supertabular*}#1{%
\@ifnextchar[{\@nameuse{@supertabular*}{#1}}%
{\@nameuse{@supertabular*}{#1}[]}%]
}
\@namedef{@supertabular*}#1[#2]#3{%
\ST@trace\tw@{Starting a new supertabular*}%
\def\ST@tableformat{#3}%
\ST@wd=#1\relax
\global\ST@startrue
\x@supertabular
\expandafter\csname tabular*\expandafter\endcsname
\expandafter{\expandafter\ST@wd\expandafter}%
\expandafter{\ST@tableformat}%
\@@tablehead}%
\def\endsupertabular{%
\ifx\@table@last@tail\undefined
\@tabletail
\else
\@table@last@tail
\fi
\csname endtabular\ifST@star*\fi\endcsname
\ST@restore
\if@topcaption
\else
\@process@tablecaption
\@topcaptiontrue
\fi
\global\let\\\@oldcr
\let\@table@first@head\undefined
\let\@table@last@tail\undefined
\global\let\@process@tablecaption\relax
\ST@trace\tw@{Ended a supertabular\ifST@star*\fi}%
}
\expandafter\let\csname endsupertabular*\endcsname\endsupertabular
\def\ST@restore{%
\ifx\undefined\@classix
\let\@tabularcr\@@tabularcr
\let\@@startpbox\org@startpbox
\let\@@endpbox\org@endpbox
\else
\let\@arraycr\@@tabularcr
\let\@startpbox\org@startpbox
\let\@endpbox\org@endpbox
\fi
}
\def\ST@cr{%
\noalign{%
\ifnum\ST@pboxht<\ST@lineht
\global\advance\ST@pageleft -\ST@lineht
\else
\ST@trace\thr@@{Added par box with height \the\ST@pboxht}%
\global\advance\ST@pageleft -\ST@pboxht
\global\advance\ST@pageleft -0.1\ST@pboxht
\global\ST@pboxht\z@
\fi
\global\advance\ST@pageleft -\ST@toadd
\global\ST@toadd=\z@
\ST@trace\thr@@{Space left for tabular: \the\ST@pageleft}%
}
\ifnum\ST@pageleft<\ST@tailht
\ST@newpage
\else
\noalign{\global\let\ST@next\@empty}%
\fi\ST@next}
\def\ST@newpage{%
\noalign{\ST@trace\tw@{Starting new page, writing tail}}%
\@tabletail
\ifST@star
\csname endtabular*\endcsname
\else
\endtabular
\fi
\newpage\@calnextpageht
\let\ST@next\@tablehead
\ST@trace\tw@{writing head}%
\ifST@star
\expandafter\csname tabular*\expandafter\endcsname
\expandafter{\expandafter\ST@wd\expandafter}%
\expandafter{\ST@tableformat}%
\else
\expandafter\tabular\expandafter{\ST@tableformat}%
\fi}
\endinput
%%
%% End of file `supertabular.sty'.
|