summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tabularew
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-06-01 23:38:37 +0000
committerKarl Berry <karl@freefriends.org>2009-06-01 23:38:37 +0000
commita8d496072399303044632adc3815973fe69ff748 (patch)
treee0fc4b1514698b9e690f8907486fdf3d23fcd81a /Master/texmf-dist/tex/latex/tabularew
parent034ae1e9007df18141ca110694c9c3594d9e2f48 (diff)
new latex package tabularew (1jun09)
git-svn-id: svn://tug.org/texlive/trunk@13567 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tabularew')
-rw-r--r--Master/texmf-dist/tex/latex/tabularew/tabularew.sty226
1 files changed, 226 insertions, 0 deletions
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'.