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
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to