Natural Tables, backgroundcolor, and frames
Hi, I actually posted this last summer, but never got a reply and did not have a chance to follow up. When using natural tables, a cell with backgroundcolor enabled will overwrite the topframe/rightframe from the cell to the left/above. A workaround could be to always use topframe/leftframe. However this workaround is not possible with tables with split=repeat that span multiple pages, since you cannot know which rows on pages beyond the first for which you should set topframe=on. The below code demonstrates the problem for color w/ bottomframe specified for the header -- \setupcolors[state=start] \definecolor[ice][r=0.867, g=0.945, b=0.973, s=0.9] \starttext \bTABLE[split=repeat,frame=off,background=color] \bTABLEhead \bTR[bottomframe=on] \bTH A \eTH \bTH B \eTH \eTR \eTABLEhead \bTABLEbody \dorecurse{25}{\bTR[backgroundcolor=ice] \bTD a \eTD \bTD b \eTD \eTR \bTR \bTD a \eTD \bTD b \eTD \eTR} eTABLEbody \eTABLE \stoptext I tested this at http://live.contextgarden.net. Does anyone have a solution? One thought I had was to insert a very thin row (with height set to rulethickness) at the bottom of the header, but with split=repeat it appears that the table forces a minimum height to a row, so it is too tall. Thanks, Brian
On Sun, May 4, 2008 at 11:22 PM, Brian R. Landy
Hi,
I actually posted this last summer, but never got a reply and did not have a chance to follow up. When using natural tables, a cell with backgroundcolor enabled will overwrite the topframe/rightframe from the cell to the left/above. A workaround could be to always use topframe/leftframe. However this workaround is not possible with tables with split=repeat that span multiple pages, since you cannot know which rows on pages beyond the first for which you should set topframe=on.
The below code demonstrates the problem for color w/ bottomframe specified for the header --
\setupcolors[state=start] \definecolor[ice][r=0.867, g=0.945, b=0.973, s=0.9]
\startuseMPgraphic{headerrule} linecap := butt ; draw (-1.5*\the\linewidth,0)--(OverlayWidth+1.5*\the\linewidth,0) ; setbounds currentpicture to unitsquare xyscaled (OverlayWidth,OverlayHeight) ; \stopuseMPgraphic \defineoverlay[headerrule][\useMPgraphic{headerrule}]
\starttext \bTABLE[split=repeat,frame=off,background=color] \bTABLEhead \bTR[bottomframe=on]
\bTR[background=headerrule,backgroundoffset=-\linewidth]
\bTH A \eTH \bTH B \eTH \eTR \eTABLEhead \bTABLEbody \dorecurse{25}{\bTR[backgroundcolor=ice] \bTD a \eTD \bTD b \eTD \eTR \bTR \bTD a \eTD \bTD b \eTD \eTR} eTABLEbody \eTABLE \stoptext
I tested this at http://live.contextgarden.net. Does anyone have a solution? One thought I had was to insert a very thin row (with height set to rulethickness) at the bottom of the header, but with split=repeat it appears that the table forces a minimum height to a row, so it is too tall.
Wolfgang
participants (2)
-
Brian R. Landy
-
Wolfgang Schuster