Thanks Hans and Wolfgang. @Wolfgang: your solution is clearer, but unfortunately it works only for this MWE. In the real case the triangle extends over 2 rows, but the table has more than 2 rows. I tried grouping the first two rows in a \bTABLEbody[background=triangle], but it doesn't work. @both: \setupoverlay[hoffset=...,voffset=...]? \setupframed[backgroundhoffset=...,backgroundvoffset=...] (\bTD inherits from \framed)? Or maybe a method in MP to set the bounding box of the resulting overlay? \setupframed has already a backgroundoffset option, whose value can be: - a DIMENSION (an offset that is both horizontal and vertical) - a "frame": what does it mean? (I looked into pack-rul.mkiv, with no results) Massi Il 11/04/20 20:11, Wolfgang Schuster ha scritto:
Hans Hagen schrieb am 11.04.2020 um 19:41:
On 4/11/2020 4:15 PM, mf wrote:
Hello list, this MWE is a simplified version of a real case:
\startuseMPgraphic{cell:triangle} path p ; p := unittriangle rotated 90 xscaled 2.5 OverlayWidth yscaled 2.5 OverlayHeight ; draw p withcolor red ; \stopuseMPgraphic \defineoverlay[triangle][{\uniqueMPgraphic{cell:triangle}}] \starttext \bTABLE[frame=off] \bTR \bTD[nx=2,background=triangle,align=middle] \dontleavehmode a\crlf text \eTD \eTR \bTR[toffset=1mm] \bTD left \eTD \bTD right \eTD \eTR \eTABLE \stoptext here's a very ugly solution
\startuseMPgraphic{cell:triangle} fill llcorner OverlayBox -- lrcorner OverlayBox -- (center bottomboundary OverlayBox shifted (0,\MPy{foo:2}-\MPh{foo:2}+\MPd{foo:2}-\MPy{foo:1})) -- cycle withcolor red ; setbounds currentpicture to OverlayBox ; \stopuseMPgraphic
\defineoverlay[triangle][{\uniqueMPgraphic{cell:triangle}}]
\starttext
\bTABLE[frame=off] \bTR \bTD[nx=2,align=middle,height=0pt,background=triangle]\xypos{foo:1}\eTD \eTR \bTR \bTD[nx=2,align=middle] \dontleavehmode a\crlf text \eTD \eTR \bTR[toffset=1mm] \bTD \hpos{foo:2}{\strut} left \eTD \bTD right \eTD \eTR \eTABLE
\stoptext
it is probably possible to get some info otherwise (more efficient) if really needed (if we add some helpers)
Simpler, put the table in a frame.
\startuseMPgraphic{cell:triangle} draw llcorner OverlayBox -- lrcorner OverlayBox -- center topboundary OverlayBox -- cycle withcolor red ; \stopuseMPgraphic
\defineoverlay[triangle][{\uniqueMPgraphic{cell:triangle}}]
\starttext
\startframed[frame=off,offset=1ex,loffset=2ex,roffset=2ex,toffset=2ex,background=triangle]
\bTABLE[frame=off] \bTR \bTD[nx=2,align=middle] a\crlf text \eTD \eTR \bTR[toffset=1mm] \bTD left \eTD \bTD right \eTD \eTR \eTABLE \stopframed
\stoptext
Wolfgang