Skip to content
Snippets Groups Projects
Commit 854bd8ab authored by Rolf Niepraschk's avatar Rolf Niepraschk
Browse files

"ltablex2.sty"

parent 426d362d
No related branches found
No related tags found
No related merge requests found
%%
%% This is file ltablex.sty (v1.0, November 1995)
%%
%%
%% Author: Anil K. Goel (akgoel@uwaterloo.ca)
%%
%% Patches to solves the caption issues:
%% Rolf Niepraschk, Rolf.Niepraschk@gmx.de, 2014-08-11
%%
%%
%% 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]
\ProvidesPackage{ltablex2}[2014/08/11 v1.1 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
}
\def\TX@c@p{% RN, 2014-08-11
\@ifnextchar[\TX@c@@p{\TX@c@@p[]}%
}
\def\TX@c@@p[#1]#2{\\}% RN, 2014-08-11
\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{% RN, 2014-08-11
\@ifstar\TX@c@p\TX@c@p
}
\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
\endinput
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\TX@endtabularx}% <cmd>
{\def\caption}% <search>
{\def\caption{\caption@withoptargs\TX@caption}%
\def\TX@caption##1##2}% <replace>
{}{}% <success><failure>
\makeatother
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment