[NTG-context] Table width trouble
Hans Hagen
pragma at wxs.nl
Sun Apr 23 18:28:20 CEST 2006
nico wrote:
> Hello,
>
> I come back with that damn table test case. With release 2006.04.22:
>
> - it works fine when the column width is passed as table option,
> - it's wrong when the width is passed via a column setup only,
> - it works ok when both table and column option are passed, and it's the
> column option that is used (which is the expected behaviour).
> - it's ok when no width specified at all.
>
> \starttext
>
> \startbuffer
> \bTR \bTD[nc=2] A \eTD\bTD x \eTD \bTD[nc=2] B \eTD \eTR
> \bTR \bTD X \eTD \bTD[nc=3] C \eTD \bTD x \eTD \eTR
> \bTR \bTD[nc=2] D \eTD \bTD x \eTD \bTD[nc=2] E \eTD \eTR
> \stopbuffer
>
> % ok
> \bTABLE[frame=on,width=3em]
> \getbuffer
> \eTABLE
>
> % nok, messy table
> \bTABLE[frame=on]
> \setupTABLE[c][each][width=3em]
> \getbuffer
> \eTABLE
>
> % ok, width=3em for each column
> \bTABLE[frame=on,width=0.1pt]
> \setupTABLE[c][each][width=3em]
> \getbuffer
> \eTABLE
>
> % ok
> \bTABLE[frame=on]
> \getbuffer
> \eTABLE
>
> \stoptext
>
>
\long\def\dohandleTBLcellA#1#2[#3]#4%
{\bgroup
\setupTBLcell{#1}{#2}%
\setbox\scratchbox\hbox
{\scratchdimen\tbltbldistance\relax
\ifdim\scratchdimen>\gettbldis{#2}\relax
\settbldis{#2}{\the\scratchdimen}%
\fi
\localframed
[\@@tbl\@@tbl]
[#3,\c!background=,\c!frame=\v!off]% 25% faster
{\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL\inTBLcell{#1}{#2}}}%
\scratchdimen\gettblwid\colTBL\relax
\ifdim\wd\scratchbox>\scratchdimen
\ifsqueezeTBLspan
\ifautosqueezeTBLspan
\doifinsetelse\tbltblwidth{\v!fit,\v!fixed,\v!broad,\v!local}
\donetrue \donefalse
\else
\donetrue
\fi
\ifdone
\ifnum0\number\gettblcol{#1}{#2}>1\relax \settblspn\colTBL \fi
\fi
\fi
\doifelsetblspn\colTBL
\donothing
{\ifdim\gettblwid\colTBL<\wd\scratchbox
\settblwid\colTBL{\the\wd\scratchbox}%
\fi}% auto set
\fi
\let\rowTBLx\rowTBL\increment\rowTBLx
\scratchdimen\gettblhei\rowTBLx\relax
\ifdim\ht\scratchbox<\scratchdimen
\settblhei\rowTBLx{\the\ht\scratchbox}% auto set
\fi
\settblht{#1}{#2}{\the\ht\scratchbox}%
\settblwd{#1}{#2}{\the\wd\scratchbox}%
\ifautoTBLcheckwidth
\ifdim\wd\scratchbox<.75\hsize
\ifdim\ht\scratchbox>2\openlineheight % honor width since this
\scratchdimen\gettblaut\colTBL\relax % can be a figure or so
\ifdim\scratchdimen=\zeropoint
% side effect: when width is set to 0pt,
% we can force a span that fits the sum of spans widths
\settblaut\colTBL{\the\scratchdimen}%
\else\ifdim\wd\scratchbox>\scratchdimen
% unless span
\settblaut\colTBL{\the\wd\scratchbox}%
% to be translated
\writestatus\m!TABLE
{no auto width in (\number#1,\number#2)\space\the\wd\scratchbox/\the\hsize}%
\fi\fi
\fi
\fi
\fi
\setbox2\null
\wd2\wd\scratchbox \ht2\ht\scratchbox \dp2\dp\scratchbox
\box2
\egroup}
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
| www.pragma-pod.nl
-----------------------------------------------------------------
More information about the ntg-context
mailing list