123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- %%
- %% 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
|