%% %% This is file ltablex.sty (v1.1, August 2014) %% %% Patches to solves the caption issue: %% Rolf Niepraschk (Rolf.Niepraschk@gmx.de), 2014/08/13 %% %% %% (C) Author: Anil K. Goel (akgoel@uwaterloo.ca) %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives %% in directory macros/latex/base/lppl.txt. %% %% 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}[2014/08/13 v1.1 Modified tabularx]% RN, 2014/08/13 \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 } \newcommand*\TX@cap@gobble[2][]{\\}% RN, 2014/08/13 \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/13 \@ifstar\TX@cap@gobble\TX@cap@gobble } \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