238 lines
5.9 KiB
TeX
238 lines
5.9 KiB
TeX
%%
|
|
%% This is file ltablex.sty (v1.0, November 1995)
|
|
%%
|
|
%%
|
|
%% Author: Anil K. Goel (akgoel@uwaterloo.ca)
|
|
%%
|
|
%%
|
|
%% Copyright (C) QNX Software Systems Ltd. 1995
|
|
%% All rights reserved.
|
|
%% Please send any comments/suggetions to: latex@qnx.com
|
|
%%
|
|
%% This system is distributed in the hope that it will be useful
|
|
%% to others, but WITHOUT ANY WARRANTY; without even the implied
|
|
%% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
%%
|
|
%%
|
|
%% The file modifies the tabularx environment to
|
|
%% combine the features of the tabularx package
|
|
%% (auto-sized columns in a fixed width table)
|
|
%% with those of the longtable package
|
|
%% (multi-page tables).
|
|
%%
|
|
%% The tables are typeset using the tabularx environment
|
|
%% and the longtable environment is used internally to
|
|
%% handle multi-page tables. The \setlongtables feature
|
|
%% is used, and, therefore, the document should be
|
|
%% run through latex twice.
|
|
%%
|
|
%% Another feature that has been added is to treat the X
|
|
%% columns like 'l' columns if the table contents would allow
|
|
%% that to happen without exceeding the specified width of
|
|
%% the table. In other words, the specified width is
|
|
%% treated as the maximum allowed and not the exact width
|
|
%% of the table. This feature is the default but can be
|
|
%% disabled (or enabled) with \keepXColumns (or \convertXColumns).
|
|
%%
|
|
%% Caveats:
|
|
%% . The document needs to be latexed a couple times in general.
|
|
%% . In general, it is necessary to remove the .aux file before
|
|
%% the first latex run on the document.
|
|
%% . The table should not be larger than TeX's memory capacity
|
|
%%
|
|
%%
|
|
%% Here is a a simple usage example:
|
|
%%
|
|
%%
|
|
%% \documentclass{article}
|
|
%%
|
|
%% \usepackage{ltablex}
|
|
%%
|
|
%% \textheight=4in
|
|
%%
|
|
%% \begin{document}
|
|
%%
|
|
%% % we want a table that is \textwidth long, has 4 columns, columns 1
|
|
%% % and 3 are auto sized with the 3rd columns being 3 times wider than
|
|
%% % the first column.
|
|
%% %
|
|
%%
|
|
%%
|
|
%% \begin{tabularx}{\linewidth}%
|
|
%% {|>{\setlength{\hsize}{.5\hsize}\raggedright\arraybackslash}X| % col 1; auto-sized ragged right
|
|
%% c| % col 2; default centered
|
|
%% >{\setlength{\hsize}{1.5\hsize}\raggedleft\arraybackslash}X|% col 3; auto-sized ragged left
|
|
%% l|} % col 4; default left-justified
|
|
%%
|
|
%% \caption*{The Table Caption}\\
|
|
%% \hline
|
|
%% F-Head1 & F-Head2 & F-Head3 & F-Head4\\
|
|
%% \hline
|
|
%% \hline
|
|
%% \endfirsthead
|
|
%% \hline
|
|
%% Head1 & Head2 & Head3 & Head4\\
|
|
%% \hline
|
|
%% \hline
|
|
%% \endhead
|
|
%%
|
|
%% \hline
|
|
%% \hline
|
|
%% Foot1 & Foot2 & Foot3 & Foot4\\
|
|
%% \hline
|
|
%% \endfoot
|
|
%%
|
|
%%
|
|
%% \hline
|
|
%% \hline
|
|
%% L-Foot1 & L-Foot2 & L-Foot3 & L-Foot4\\
|
|
%% \hline
|
|
%% \endlastfoot
|
|
%%
|
|
%% This is a very long sentence not likely to fit&
|
|
%% not too long&
|
|
%% This is another very long sentence not likely to fit&
|
|
%% not long\\
|
|
%%
|
|
%% \hline
|
|
%% filler & filler & filler & filler\\
|
|
%%
|
|
%% \hline
|
|
%% This is a very long sentence not likely to fit&
|
|
%% not too long&
|
|
%% This is another very long sentence not likely to fit&
|
|
%% not long\\
|
|
%%
|
|
%% \hline
|
|
%% This is a very long sentence not likely to fit&
|
|
%% not too long&
|
|
%% This is another very long sentence not likely to fit&
|
|
%% not long\\
|
|
%%
|
|
%% \hline
|
|
%% This is a very long sentence not likely to fit&
|
|
%% not too long&
|
|
%% This is another very long sentence not likely to fit&
|
|
%% not long\\
|
|
%%
|
|
%% \end{tabularx}
|
|
%%
|
|
%% \begin{tabularx}{\linewidth}{|c|X|c|}
|
|
%% \hline
|
|
%% a &convert X to l & b\\
|
|
%% \hline
|
|
%% \end{tabularx}
|
|
%%
|
|
%% \keepXColumns
|
|
%% \begin{tabularx}{\linewidth}{|c|X|c|}
|
|
%% \hline
|
|
%% a &retain X & b\\
|
|
%% \hline
|
|
%% \end{tabularx}
|
|
%%
|
|
%% \convertXColumns
|
|
%% \begin{tabularx}{\linewidth}{|c|X|c|}
|
|
%% \hline
|
|
%% a &convert X to l & b\\
|
|
%% \hline
|
|
%% \end{tabularx}
|
|
%%
|
|
%%
|
|
%% \end{document}
|
|
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesPackage{ltablex}[1995/11/06 v1.0 Modified tabularx]
|
|
|
|
\RequirePackage{longtable}[1994/12/08]
|
|
\RequirePackage{tabularx}[1994/02/03]
|
|
|
|
\newif\ifTX@convertX@
|
|
\TX@convertX@true
|
|
|
|
\newcommand\keepXColumns{
|
|
\TX@convertX@false
|
|
}
|
|
|
|
\newcommand\convertXColumns{
|
|
\TX@convertX@true
|
|
}
|
|
|
|
\renewcommand\TX@endtabularx{%
|
|
\expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}%
|
|
\let\verb\TX@verb
|
|
\def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
|
|
\edef\TX@ckpt{\cl@@ckpt}%
|
|
\let\@elt\relax
|
|
\TX@old@table=\maxdimen
|
|
\TX@col@width=\TX@target
|
|
\global\TX@cols=\@ne
|
|
\TX@typeout@
|
|
{\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
|
|
|
|
%
|
|
% define \endhead, etc. to be \\ so that in this part
|
|
% of the process they are just rows
|
|
%
|
|
\let\savecaption\caption
|
|
\def\caption{\\}
|
|
\let\saveendhead\endhead
|
|
\def\endhead{\\}
|
|
\let\saveendfirsthead\endfirsthead
|
|
\def\endfirsthead{\\}
|
|
\let\saveendfoot\endfoot
|
|
\def\endfoot{\\}
|
|
\let\saveendlastfoot\endlastfoot
|
|
\def\endlastfoot{\\}
|
|
%
|
|
%
|
|
\ifTX@convertX@
|
|
\TX@trial{\def\NC@rewrite@X{\NC@find l}}
|
|
\ifdim\wd\@tempboxa<\TX@target
|
|
\TX@newcol{l}
|
|
\else
|
|
\TX@convertX@false
|
|
\fi
|
|
\fi
|
|
|
|
\ifTX@convertX@
|
|
\relax
|
|
\else
|
|
\TX@trial{\def\NC@rewrite@X{%
|
|
\global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
|
|
\loop
|
|
\TX@arith
|
|
\ifTX@
|
|
\TX@trial{}%
|
|
\repeat
|
|
\fi
|
|
{\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext
|
|
% we may as well set \LTchunksize to be \maxdimen as the whole
|
|
% thing is already in memory anyway so we may as well do it in one
|
|
% chunk. if it is too big for one chunk we are already dead..
|
|
\LTchunksize\maxdimen
|
|
%
|
|
% restore \endhead, etc.
|
|
%
|
|
\let\caption\savecaption
|
|
\let\endhead\saveendhead
|
|
\let\endfirsthead\saveendfirsthead
|
|
\let\endfoot\saveendfoot
|
|
\let\endlastfoot\saveendlastfoot
|
|
%
|
|
\expandafter\longtable
|
|
\the\toks@
|
|
\endlongtable
|
|
}%
|
|
\global\TX@ftn\expandafter{\expandafter}\the\TX@ftn
|
|
\ifnum0=`{\fi}%
|
|
\end{tabularx}
|
|
}
|
|
|
|
|
|
%
|
|
% activate column width reading from the .aux file
|
|
%
|
|
|
|
|
|
\setlongtables
|