|
1 %% |
|
2 %% This is file `tabulary.sty', |
|
3 %% generated with the docstrip utility. |
|
4 %% |
|
5 %% The original source files were: |
|
6 %% |
|
7 %% tabulary.dtx (with options: `package') |
|
8 %% DRAFT VERSION |
|
9 %% |
|
10 %% File `tabulary.dtx'. |
|
11 %% Copyright (C) 1995 1996 2003 David Carlisle |
|
12 %% This file may be distributed under the terms of the LPPL. |
|
13 %% See 00readme.txt for details. |
|
14 %% |
|
15 \NeedsTeXFormat{LaTeX2e} |
|
16 \ProvidesPackage{tabulary} |
|
17 [2007/10/02 v0.9 tabulary package (DPC)] |
|
18 \RequirePackage{array} |
|
19 \catcode`\Z=14 |
|
20 \DeclareOption{debugshow}{\catcode`\Z=9\relax} |
|
21 \ProcessOptions |
|
22 \def\arraybackslash{\let\\=\@arraycr} |
|
23 \def\@finalstrut#1{% |
|
24 \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1} |
|
25 \newcount\TY@count |
|
26 \def\tabulary{% |
|
27 \let\TY@final\tabular |
|
28 \let\endTY@final\endtabular |
|
29 \TY@tabular} |
|
30 \def\TY@tabular#1{% |
|
31 \edef\TY@{\@currenvir}% |
|
32 {\ifnum0=`}\fi |
|
33 \@ovxx\TY@linewidth |
|
34 \@ovyy\TY@tablewidth |
|
35 \count@\z@ |
|
36 \@tempswatrue |
|
37 \@whilesw\if@tempswa\fi{% |
|
38 \advance\count@\@ne |
|
39 \expandafter\ifx\csname TY@F\the\count@\endcsname\relax |
|
40 \@tempswafalse |
|
41 \else |
|
42 \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname |
|
43 \csname TY@F\the\count@\endcsname |
|
44 \global\expandafter\let\csname TY@F\the\count@\endcsname\relax |
|
45 \expandafter\let\csname TY@S\the\count@\expandafter\endcsname |
|
46 \csname TY@\the\count@\endcsname |
|
47 \fi}% |
|
48 \global\TY@count\@ne |
|
49 \TY@width\xdef{0pt}% |
|
50 \global\TY@tablewidth\z@ |
|
51 \global\TY@linewidth#1\relax |
|
52 Z\message{^^J^^JTable^^J% |
|
53 Z Target Width: \the\TY@linewidth^^J% |
|
54 Z \string\tabcolsep: \the\tabcolsep\space |
|
55 Z \string\arrayrulewidth: \the\arrayrulewidth\space |
|
56 Z \string\doublerulesep: \the\doublerulesep^^J% |
|
57 Z \string\tymin: \the\tymin\space |
|
58 Z \string\tymax: \the\tymax^^J}% |
|
59 \let\@classz\TY@classz |
|
60 \let\verb\TX@verb |
|
61 \toks@{}\TY@get@body} |
|
62 \let\TY@@mkpream\@mkpream |
|
63 \def\TY@mkpream{% |
|
64 \def\@addamp{% |
|
65 \if@firstamp \@firstampfalse \else |
|
66 \global\advance\TY@count\@ne |
|
67 \edef\@preamble{\@preamble &}\fi |
|
68 \TY@width\xdef{0pt}}% |
|
69 \def\@acol{% |
|
70 \TY@subwidth\col@sep |
|
71 \@addtopreamble{\hskip\col@sep}}% |
|
72 \let\@arrayrule\TY@arrayrule |
|
73 \let\@classvi\TY@classvi |
|
74 \def\@classv{\save@decl |
|
75 \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@ |
|
76 \sbox\z@{\d@llarbegin\@nextchar\d@llarend}% |
|
77 \TY@subwidth{\wd\z@}% |
|
78 \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}% |
|
79 \prepnext@tok}% |
|
80 \global\let\@mkpream\TY@@mkpream |
|
81 \TY@@mkpream} |
|
82 \def\TY@arrayrule{% |
|
83 \TY@subwidth\arrayrulewidth |
|
84 \@addtopreamble \vline} |
|
85 \def\TY@classvi{\ifcase \@lastchclass |
|
86 \@acol \or |
|
87 \TY@subwidth\doublerulesep |
|
88 \@addtopreamble{\hskip \doublerulesep}\or |
|
89 \@acol \or |
|
90 \@classvii |
|
91 \fi} |
|
92 \def\TY@tab{% |
|
93 \setbox\z@\hbox\bgroup |
|
94 \let\[$\let\]$% |
|
95 \let\equation$\let\endequation$% |
|
96 \col@sep\tabcolsep |
|
97 \let\d@llarbegin\begingroup\let\d@llarend\endgroup |
|
98 \let\@mkpream\TY@mkpream |
|
99 \def\multicolumn##1##2##3{\multispan##1\relax}% |
|
100 \CT@start\TY@tabarray} |
|
101 \def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}} |
|
102 \def\TY@array[#1]{\@array[t]} |
|
103 \def\TY@width#1{% |
|
104 \expandafter#1\csname TY@\the\TY@count\endcsname} |
|
105 \def\TY@subwidth#1{% |
|
106 \TY@width\dimen@ |
|
107 \advance\dimen@-#1\relax |
|
108 \TY@width\xdef{\the\dimen@}% |
|
109 \global\advance\TY@linewidth-#1\relax} |
|
110 \def\endtabulary{% |
|
111 \gdef\@halignto{}% |
|
112 \expandafter\TY@tab\the\toks@ |
|
113 \crcr\omit |
|
114 {\xdef\TY@save@row{}% |
|
115 \loop |
|
116 \advance\TY@count\m@ne |
|
117 \ifnum\TY@count>\z@ |
|
118 \xdef\TY@save@row{\TY@save@row&\omit}% |
|
119 \repeat}\TY@save@row |
|
120 \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1 |
|
121 \unskip\global\setbox1=\lastbox}\egroup |
|
122 \dimen@\TY@linewidth |
|
123 \divide\dimen@\TY@count |
|
124 \ifdim\dimen@<\tymin |
|
125 \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}% |
|
126 \tymin\dimen@ |
|
127 \fi |
|
128 \setbox\tw@=\hbox{\unhbox\@ne |
|
129 \loop |
|
130 \@tempdima=\lastskip |
|
131 \ifdim\@tempdima>\z@ |
|
132 Z \message{ecs=\the\@tempdima^^J}% |
|
133 \global\advance\TY@linewidth-\@tempdima |
|
134 \fi |
|
135 \unskip |
|
136 \setbox\tw@=\lastbox |
|
137 \ifhbox\tw@ |
|
138 Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}% |
|
139 \ifdim\wd\tw@>\tymax |
|
140 \wd\tw@\tymax |
|
141 Z \message{> max\space}% |
|
142 Z \else |
|
143 Z \message{ \@spaces\space}% |
|
144 \fi |
|
145 \TY@width\dimen@ |
|
146 Z \message{\the\dimen@\space}% |
|
147 \advance\dimen@\wd\tw@ |
|
148 Z \message{Final=\the\dimen@\space}% |
|
149 \TY@width\xdef{\the\dimen@}% |
|
150 \ifdim\dimen@<\tymin |
|
151 Z \message{< tymin}% |
|
152 \global\advance\TY@linewidth-\dimen@ |
|
153 \expandafter\xdef\csname TY@F\the\TY@count\endcsname |
|
154 {\the\dimen@}% |
|
155 \else |
|
156 \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@ |
|
157 Z \message{***}% |
|
158 \global\advance\TY@linewidth-\dimen@ |
|
159 \expandafter\xdef\csname TY@F\the\TY@count\endcsname |
|
160 {\the\dimen@}% |
|
161 \else |
|
162 Z \message{> tymin}% |
|
163 \global\advance\TY@tablewidth\dimen@ |
|
164 \global\expandafter\let\csname TY@F\the\TY@count\endcsname |
|
165 \maxdimen |
|
166 \fi\fi |
|
167 \advance\TY@count\m@ne |
|
168 \repeat}% |
|
169 \TY@checkmin |
|
170 \TY@checkmin |
|
171 \TY@checkmin |
|
172 \TY@checkmin |
|
173 \TY@count\z@ |
|
174 \let\TY@box\TY@box@v |
|
175 {\expandafter\TY@final\the\toks@\endTY@final}% |
|
176 \count@\z@ |
|
177 \@tempswatrue |
|
178 \@whilesw\if@tempswa\fi{% |
|
179 \advance\count@\@ne |
|
180 \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax |
|
181 \@tempswafalse |
|
182 \else |
|
183 \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname |
|
184 \csname TY@SF\the\count@\endcsname |
|
185 \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname |
|
186 \csname TY@S\the\count@\endcsname |
|
187 \fi}% |
|
188 \TY@linewidth\@ovxx |
|
189 \TY@tablewidth\@ovyy |
|
190 \ifnum0=`{\fi}} |
|
191 \def\TY@checkmin{% |
|
192 \let\TY@checkmin\relax |
|
193 \ifdim\TY@tablewidth>\z@ |
|
194 \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth |
|
195 \ifdim\TY@tablewidth <\linewidth |
|
196 \def\TY@ratio{1}% |
|
197 \fi |
|
198 \else |
|
199 \TY@warn{No suitable columns!}% |
|
200 \def\TY@ratio{1}% |
|
201 \fi |
|
202 \count@\z@ |
|
203 Z \message{^^JLine Width: \the\TY@linewidth, |
|
204 Z Natural Width: \the\TY@tablewidth, |
|
205 Z Ratio: \TY@ratio^^J}% |
|
206 \@tempdima\z@ |
|
207 \loop |
|
208 \ifnum\count@<\TY@count |
|
209 \advance\count@\@ne |
|
210 \ifdim\csname TY@F\the\count@\endcsname>\tymin |
|
211 \dimen@\csname TY@\the\count@\endcsname |
|
212 \dimen@\TY@ratio\dimen@ |
|
213 \ifdim\dimen@<\tymin |
|
214 Z \message{Column \the\count@\space ->}% |
|
215 \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin |
|
216 \global\advance\TY@linewidth-\tymin |
|
217 \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname |
|
218 \let\TY@checkmin\TY@@checkmin |
|
219 \else |
|
220 \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}% |
|
221 \advance\@tempdima\csname TY@F\the\count@\endcsname |
|
222 \fi |
|
223 \fi |
|
224 Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }% |
|
225 \repeat |
|
226 Z \message{^^JTotal:\the\@tempdima^^J}% |
|
227 } |
|
228 \let\TY@@checkmin\TY@checkmin |
|
229 \newdimen\TY@linewidth |
|
230 \def\tyformat{\everypar{{\nobreak\hskip\z@skip}}} |
|
231 \newdimen\tymin |
|
232 \tymin=10pt |
|
233 \newdimen\tymax |
|
234 \tymax=2\textwidth |
|
235 \def\@testpach{\@chclass |
|
236 \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else |
|
237 \ifnum \@lastchclass=7 5 \else |
|
238 \ifnum \@lastchclass=8 \tw@ \else |
|
239 \ifnum \@lastchclass=9 \thr@@ |
|
240 \else \z@ |
|
241 \ifnum \@lastchclass = 10 \else |
|
242 \edef\@nextchar{\expandafter\string\@nextchar}% |
|
243 \@chnum |
|
244 \if \@nextchar c\z@ \else |
|
245 \if \@nextchar l\@ne \else |
|
246 \if \@nextchar r\tw@ \else |
|
247 \if \@nextchar C7 \else |
|
248 \if \@nextchar L8 \else |
|
249 \if \@nextchar R9 \else |
|
250 \if \@nextchar J10 \else |
|
251 \z@ \@chclass |
|
252 \if\@nextchar |\@ne \else |
|
253 \if \@nextchar !6 \else |
|
254 \if \@nextchar @7 \else |
|
255 \if \@nextchar <8 \else |
|
256 \if \@nextchar >9 \else |
|
257 10 |
|
258 \@chnum |
|
259 \if \@nextchar m\thr@@\else |
|
260 \if \@nextchar p4 \else |
|
261 \if \@nextchar b5 \else |
|
262 \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi |
|
263 \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi} |
|
264 \def\TY@classz{% |
|
265 \@classx |
|
266 \@tempcnta\count@ |
|
267 \ifx\TY@box\TY@box@v |
|
268 \global\advance\TY@count\@ne |
|
269 \fi |
|
270 \let\centering c% |
|
271 \let\raggedright\noindent |
|
272 \let\raggedleft\indent |
|
273 \let\arraybackslash\relax |
|
274 \prepnext@tok |
|
275 \ifnum\@chnum<4 |
|
276 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ |
|
277 \fi |
|
278 \ifnum\@chnum=6 |
|
279 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ |
|
280 \fi |
|
281 \@addtopreamble{% |
|
282 \ifcase\@chnum |
|
283 \hfil \d@llarbegin\insert@column\d@llarend \hfil \or |
|
284 \kern\z@ |
|
285 \d@llarbegin \insert@column \d@llarend \hfil \or |
|
286 \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or |
|
287 $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or |
|
288 \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or |
|
289 \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or |
|
290 \d@llarbegin \insert@column \d@llarend \or% dubious "s" case |
|
291 \TY@box\centering\or |
|
292 \TY@box\raggedright\or |
|
293 \TY@box\raggedleft\or |
|
294 \TY@box\relax |
|
295 \fi}\prepnext@tok} |
|
296 \def\TY@box#1{% |
|
297 \ifx\centering#1% |
|
298 \hfil \d@llarbegin\insert@column\d@llarend \hfil \else |
|
299 \ifx\raggedright#1% |
|
300 \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
|
301 \d@llarbegin \insert@column \d@llarend \hfil \else |
|
302 \ifx\raggedleft#1% |
|
303 \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else |
|
304 \ifx\relax#1% |
|
305 \d@llarbegin \insert@column \d@llarend |
|
306 \fi \fi \fi \fi} |
|
307 \def\TY@box@v#1{% |
|
308 \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}% |
|
309 #1\arraybackslash\tyformat |
|
310 \insert@column\@endpbox} |
|
311 \newdimen\TY@tablewidth |
|
312 \def\Gscale@div#1#2#3{% |
|
313 \setlength\dimen@{#3}% |
|
314 \ifdim\dimen@=\z@ |
|
315 \PackageError{graphics}{Division by 0}\@eha |
|
316 \dimen@#2% |
|
317 \fi |
|
318 \edef\@tempd{\the\dimen@}% |
|
319 \setlength\dimen@{#2}% |
|
320 \count@65536\relax |
|
321 \ifdim\dimen@<\z@ |
|
322 \dimen@-\dimen@ |
|
323 \count@-\count@ |
|
324 \fi |
|
325 \loop |
|
326 \ifdim\dimen@<8192\p@ |
|
327 \dimen@\tw@\dimen@ |
|
328 \divide\count@\tw@ |
|
329 \repeat |
|
330 \dimen@ii=\@tempd\relax |
|
331 \divide\dimen@ii\count@ |
|
332 \divide\dimen@\dimen@ii |
|
333 \edef#1{\strip@pt\dimen@}} |
|
334 \long\def\TY@get@body#1\end |
|
335 {\toks@\expandafter{\the\toks@#1}\TY@find@end} |
|
336 \def\TY@find@end#1{% |
|
337 \def\@tempa{#1}% |
|
338 \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa |
|
339 \else\toks@\expandafter |
|
340 {\the\toks@\end{#1}}\expandafter\TY@get@body\fi} |
|
341 \def\TY@warn{% |
|
342 \PackageWarning{tabulary}} |
|
343 \catcode`\Z=11 |
|
344 \AtBeginDocument{ |
|
345 \@ifpackageloaded{colortbl}{% |
|
346 \expandafter\def\expandafter\@mkpream\expandafter#\expandafter1% |
|
347 \expandafter{% |
|
348 \expandafter\let\expandafter\CT@setup\expandafter\relax |
|
349 \expandafter\let\expandafter\CT@color\expandafter\relax |
|
350 \expandafter\let\expandafter\CT@do@color\expandafter\relax |
|
351 \expandafter\let\expandafter\color\expandafter\relax |
|
352 \expandafter\let\expandafter\CT@column@color\expandafter\relax |
|
353 \expandafter\let\expandafter\CT@row@color\expandafter\relax |
|
354 \@mkpream{#1}} |
|
355 \let\TY@@mkpream\@mkpream |
|
356 \def\TY@classz{% |
|
357 \@classx |
|
358 \@tempcnta\count@ |
|
359 \ifx\TY@box\TY@box@v |
|
360 \global\advance\TY@count\@ne |
|
361 \fi |
|
362 \let\centering c% |
|
363 \let\raggedright\noindent |
|
364 \let\raggedleft\indent |
|
365 \let\arraybackslash\relax |
|
366 \prepnext@tok |
|
367 \expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil |
|
368 \ifnum\@chnum<4 |
|
369 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ |
|
370 \fi |
|
371 \ifnum\@chnum=6 |
|
372 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ |
|
373 \fi |
|
374 \@addtopreamble{% |
|
375 \setbox\z@\hbox\bgroup\bgroup |
|
376 \ifcase\@chnum |
|
377 \hskip\stretch{.5}\kern\z@ |
|
378 \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or |
|
379 \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<< |
|
380 \d@llarbegin \insert@column \d@llarend \hfill \or |
|
381 \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or |
|
382 $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or |
|
383 \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or |
|
384 \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or |
|
385 \d@llarbegin \insert@column \d@llarend \or% dubious s case |
|
386 \TY@box\centering\or |
|
387 \TY@box\raggedright\or |
|
388 \TY@box\raggedleft\or |
|
389 \TY@box\relax |
|
390 \fi |
|
391 \egroup\egroup |
|
392 \begingroup |
|
393 \CT@setup |
|
394 \CT@column@color |
|
395 \CT@row@color |
|
396 \CT@do@color |
|
397 \endgroup |
|
398 \@tempdima\ht\z@ |
|
399 \advance\@tempdima\minrowclearance |
|
400 \vrule\@height\@tempdima\@width\z@ |
|
401 \unhbox\z@ |
|
402 }\prepnext@tok}% |
|
403 \def\TY@arrayrule{% |
|
404 \TY@subwidth\arrayrulewidth |
|
405 \@addtopreamble{{\CT@arc@\vline}}}% |
|
406 \def\TY@classvi{\ifcase \@lastchclass |
|
407 \@acol \or |
|
408 \TY@subwidth\doublerulesep |
|
409 \ifx\CT@drsc@\relax |
|
410 \@addtopreamble{\hskip\doublerulesep}% |
|
411 \else |
|
412 \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}% |
|
413 \fi\or |
|
414 \@acol \or |
|
415 \@classvii |
|
416 \fi}% |
|
417 }{% |
|
418 \let\CT@start\relax |
|
419 } |
|
420 } |
|
421 {\uccode`\*=`\ % |
|
422 \uppercase{\gdef\TX@verb{% |
|
423 \leavevmode\null\TX@vwarn |
|
424 {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces |
|
425 \@ifstar{\let~*\TX@vb}{\TX@vb}}}} |
|
426 \def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}% |
|
427 \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!} |
|
428 \def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= } |
|
429 \begingroup |
|
430 \catcode`\*=\catcode`\# |
|
431 \catcode`\#=12 |
|
432 \gdef\TX@vfirst{% |
|
433 \if\@tempa#% |
|
434 \def\@tempb{\TX@v@#}% |
|
435 \else |
|
436 \let\@tempb\TX@v@ |
|
437 \if\@tempa\space~\else\@tempa\fi |
|
438 \fi |
|
439 \@tempb} |
|
440 \gdef\TX@v@*1 *2{% |
|
441 \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2} |
|
442 \gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2} |
|
443 \endgroup |
|
444 \def\TX@vwarn{% |
|
445 \@warning{\noexpand\verb may be unreliable inside tabularx/y}% |
|
446 \global\let\TX@vwarn\@empty} |
|
447 \endinput |
|
448 %% |
|
449 %% End of file `tabulary.sty'. |