From a8d496072399303044632adc3815973fe69ff748 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 1 Jun 2009 23:38:37 +0000 Subject: new latex package tabularew (1jun09) git-svn-id: svn://tug.org/texlive/trunk@13567 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/tabularew/tabularew.sty | 226 +++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/tabularew/tabularew.sty (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/tabularew/tabularew.sty b/Master/texmf-dist/tex/latex/tabularew/tabularew.sty new file mode 100644 index 00000000000..c5bf95e7d31 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tabularew/tabularew.sty @@ -0,0 +1,226 @@ +%% +%% This is file `tabularew.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabularew.dtx (with options: `package') +%% DRAFT VERSION +%% +%% File `tabularew.dtx'. +%% Copyright (C) 2009 Diego Saba +%% This file may be distributed under the terms of the LPPL. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tabularew} + [2009/05/23 v0.1 tabularew package (DPC)] +\RequirePackage{array} +\catcode`\Z=14 +\DeclareOption{debugshow}{\catcode`\Z=9\relax} +\ProcessOptions +\newdimen\ExcessWidth +\newcount\CurrentColumn +\newcount\NumberOfColumns +\def\tabularew{% + \edef\TEW@{\@currenvir}% + {\ifnum0=`}\fi + \TEW@setup + \toks@{}\TEW@get@body} + +\long\def\TEW@get@body#1\end + {\toks@\expandafter{\the\toks@#1}\TEW@find@end} + +\def\TEW@find@end#1{% + \def\@tempa{#1}% + \ifx\@tempa\TEW@\def\@tempa{\end{#1}}\expandafter\@tempa + \else\toks@\expandafter + {\the\toks@\end{#1}}\expandafter\TEW@get@body\fi} + +\def\endtabularew{% +Z \message{^^J^^JEW Table - first pass^^J}% + \TEW@firstpass +Z \message{\@spaces\@spaces\space - second pass^^J}% + \TEW@secondpass +Z \message{\@spaces\@spaces\space - last pass^^J}% + \TEW@lastpass + \TEW@cleanup + \ifnum0=`{\fi}} + +\def\TEW@setup{% + \edef\@restorecounters{% + \global\NumberOfColumns\the\NumberOfColumns + \global\CurrentColumn\the\NumberOfColumns\relax}% + \count@\z@ + \@tempswatrue + \@whilesw\if@tempswa\fi{% + \advance\count@\@ne + \expandafter\ifx\csname TEW@\the\count@\endcsname\relax + \@tempswafalse + \else + \expandafter\let\csname TEW@S\the\count@ + \expandafter\endcsname\csname TEW@\the\count@\endcsname + \fi}% + \let\@arraycr\TEW@arraycr + \let\multicolumn\TEW@multicolumn + \ExcessWidth\z@ + \let\spew\TEW@spew + } + +\def\TEW@cleanup{% + \count@\z@ + \@tempswatrue + \@whilesw\if@tempswa\fi{% + \advance\count@\@ne + \expandafter\ifx\csname TEW@S\the\count@\endcsname\relax + \@tempswafalse + \else + \global\expandafter\let\csname TEW@\the\count@ + \expandafter\endcsname\csname TEW@S\the\count@\endcsname + \fi}% + \@restorecounters + } + +\def\TEW@firstpass{% + \let\multicolumn\TEW@multicolumnempty + \TEW@tabsample + \let\multicolumn\TEW@multicolumn + \let\@computation\TEW@firstcomp + \TEW@measure + } + +\def\TEW@secondpass{% + \TEW@tabsample + \let\@computation\TEW@secondcomp + \TEW@measure + } + +\def\TEW@lastpass{% + \TEW@tabfinal + } + +\def\TEW@tabsample{% + \let\GetExcessWidth\@GetExcessWidthz@ + \let\@mkpream\TEW@mkpream + \setbox\z@\hbox{% + \gdef\@halignto{}% + \col@sep\tabcolsep + \let\d@llarbegin\begingroup\let\d@llarend\endgroup + \expandafter\TEW@tabarray\the\toks@ + \crcr\omit + {\count@\NumberOfColumns + \xdef\TEW@save@row{}% + \loop + \advance\count@\m@ne + \ifnum\count@>\z@ + \xdef\TEW@save@row{\TEW@save@row&\omit}% + \repeat}% + \TEW@save@row + \endarray + \global\setbox\@ne\lastbox + }% + } + +\def\TEW@tabfinal{% + \leavevmode + \let\GetExcessWidth\@GetExcessWidth + \let\@mkpream\TEW@mkpream + \gdef\@halignto{}% + \col@sep\tabcolsep + \let\d@llarbegin\begingroup\let\d@llarend\endgroup + \expandafter\TEW@tabarray\the\toks@\endarray} + +\def\TEW@tabarray{\@ifnextchar[{\TEW@array}{\@array[t]}} + +\def\TEW@array[#1]{\@array[t]} + +\let\TEW@@mkpream\@mkpream +\let\TEW@@arraycr\@arraycr +\let\TEW@@multicolumn\multicolumn + +\def\TEW@mkpream{% + \global\NumberOfColumns\@ne + \global\CurrentColumn\@ne + \let\@addamp\TEW@addamp + \global\let\@mkpream\TEW@@mkpream % needed! + \TEW@@mkpream} + +\def\TEW@arraycr{% + \global\CurrentColumn\@ne + \TEW@@arraycr + } + +\long\def\TEW@multicolumn#1#2#3{% + % Can't place anything before \omit + \TEW@@multicolumn{#1}{#2}{\global\advance\CurrentColumn\@ne#3}% + \global\advance\CurrentColumn#1% + \global\advance\CurrentColumn\m@ne + \ignorespaces} + +\long\def\TEW@multicolumnempty#1#2#3{\multispan#1\relax} + +\def\TEW@addamp{% + \if@firstamp\@firstampfalse + \else + \global\advance\NumberOfColumns\@ne + \expandafter\def\expandafter\@preamble\expandafter{\@preamble + &\global\advance\CurrentColumn\@ne}% + \fi + }% + +\def\TEW@measure{% + \setbox\z@\vbox{\unvbox\@ne\unskip\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{% + \count@\NumberOfColumns + \unhbox\@ne + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \@computation{\wd\tw@}% + \advance\count@\m@ne + \repeat + }% + } + +\def\TEW@firstcomp#1{% +Z \message{Col \the\count@: Intrinsic Width=\the#1^^J}% + \TEW@width\xdef{\the#1}} + +\def\TEW@secondcomp#1{% + \TEW@width\dimen@ + \advance\dimen@-#1% + \multiply\dimen@\m@ne +Z \message{Col \the\count@: Excess width=\the\dimen@^^J}% + \TEW@width\xdef{\the\dimen@}} + +\def\TEW@width#1{% + \expandafter#1\csname TEW@\the\count@\endcsname} + +\def\@GetExcessWidth#1{% + \count@\CurrentColumn + \@ifnextchar+{\advance\count@}{% + \@ifnextchar-{\advance\count@}{\count@}}#1\relax + \@tempswafalse + \ifnum\count@>\z@ + \ifnum\count@>\NumberOfColumns + \else\@tempswatrue + \fi\fi + \if@tempswa\TEW@width\ExcessWidth + \else\ExcessWidth\z@ + \TEW@warn{nonexistent column \the\count@, assuming EW=0pt}% + \fi +Z \message{EW in col. \the\CurrentColumn\space references +Z col. \the\count@: \the\ExcessWidth^^J}% + } + +\def\@GetExcessWidthz@#1{\ExcessWidth\z@} + +\def\TEW@spew#1#2{\GetExcessWidth{#2}\hspace{#1\ExcessWidth}} + +\def\TEW@warn{% + \PackageWarning{tabularew}} + +\catcode`\Z=11 +\endinput +%% +%% End of file `tabularew.sty'. -- cgit v1.2.3