1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
%% LaTeX2e file `ltxtable.sty'
%% generated by the `filecontents' environment
%% from source `ltxtable' on 2010/05/14.
%%
%
%% ltxtable package (C) 1995 David Carlisle
%%
%% This file may be distributed under the terms of the LPPL.
%% See 00readme.txt for details.
%
% User documentation is in the file ltxtable.tex
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ltxtable}
[1995/12/11 v0.2 longtable/tabularx merge (DPC)]
% \end{macrocode}
%
% May as get these in, going to need them...
% \begin{macrocode}
\RequirePackage{tabularx,longtable}
% \end{macrocode}
%
% \begin{macrocode}
\def\LTXtable#1#2{%
\begingroup
\TX@target#1\relax
\expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}%
\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}%
% \end{macrocode}
% Need to modify |\TX@trial| so that |longtable| functions are
% Subverted to do the measuring that |tabularx| normally does.
% Also during the trial runs each `chunk' is not unboxed so it just
% gets thrown away when the next chunk starts.
% \begin{macrocode}
\def\TX@trial##1{%
\setbox\@tempboxa=\hbox{%
% \end{macrocode}
% |\multicolum| A sad tale, For now just stop |longtable| messing with
% it, so that |tabularx| can mess with it.
% \begin{macrocode}
\let\LTmulticolumn\multicolumn
% \end{macrocode}
%
% \begin{macrocode}
\def\endlongtable{%
\LT@echunk
\global\setbox\@ne\hbox{\unhbox\@ne}%
\kern\wd\@ne
\LT@get@widths%
\endgroup}%
% \end{macrocode}
%
% \begin{macrocode}
\def\LT@ntabularcr{%
\ifnum0=`{}\fi
\LT@echunk
\LT@get@widths
\LT@bchunk}%
% \end{macrocode}
%
% \begin{macrocode}
\def\LT@argtabularcr[####1]{%
\ifnum0=`{}\fi
\ifdim ####1>\z@
\unskip\@xargarraycr{####1}\else \@yargarraycr{####1}\fi
\LT@echunk
\LT@get@widths
\LT@bchunk}%
% \end{macrocode}
%
% \begin{macrocode}
% Any extra commands. This is used on the first run to count the number
% of {\ttfamily X} columns.
% \begin{macrocode}
##1\relax
% \end{macrocode}
% Added at v1.05: dissable "\write"s during a trial run. This trick is
% from the \TeX{}Book.
% \begin{macrocode}
\let\immediate=\relax\def\write####1####{{\afterassignment}\toks@=}%
% \end{macrocode}
% Turn off warnings (see appendix D). Also prevent them being turned
% back on by setting the parameter names to be registers.
% \begin{macrocode}
\hbadness=\@M\hfuzz=\maxdimen
\let\hbadness=\@tempcnta\let\hfuzz=\@tempdima
% \end{macrocode}
% Make the table, and finish the hbox.
% Since v1.06, "\toks@" contains the preamble specification,
% and possible optional argument, as well as the table body.
% Well it does in |tabularx|, here the body is in an external file so
% just input it.
% \begin{macrocode}
\input{#2}\unskip}%
% \end{macrocode}
% Since v1.05 reset all \LaTeX\ counters, by executing "\TX@ckpt".
% \begin{macrocode}
\TX@ckpt
% \end{macrocode}
% Print some statistics.
% Added "\TX@align" in v1.05, to line up the columns.
% \begin{macrocode}
\TX@typeout@{\@spaces
\expandafter\TX@align
\the\wd\@tempboxa\space\space\space\space\space\@@
\expandafter\TX@align
\the\TX@col@width\space\space\space\space\space\@@
\@spaces\the\TX@cols}}%
% \end{macrocode}
% \end{macro}
\TX@trial{\def\NC@rewrite@X{%
\global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
\let\LT@make@row\LT@blank@row
\loop
\TX@arith
\ifTX@
\TX@trial{}%
\repeat
% \end{macrocode}
% On the last run, may as well run with |\setlongtables|.
% \begin{macrocode}
\let\LT@make@row\relax
\input{#2}%
\endgroup}
% \end{macrocode}
|