[NTG-context] offset for background overlay
mf
massifr at fastwebnet.it
Sat Apr 11 16:15:05 CEST 2020
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
The triangle is used as background of the 2-column wide cell of the
first row.
I want the triangle to go around the second row too, as if it were a
frame for all the 3 cells. It means that it should be shifted down a bit.
So I tried this:
\startuseMPgraphic{cell:triangle}
path p ; p := unittriangle rotated 90 xscaled 2.5 OverlayWidth
yscaled 2.5 OverlayHeight ;
draw p shifted (0,-3mm) withcolor red ;
\stopuseMPgraphic
...
but it does not work, because the content of the background is centered
on the cell, so "shifted (0,-3mm)" has no effect.
The only solution I found is drawing something above the triangle with a
neutral color, so that the whole background is centered in the cell and
the red triangle goes down:
\startuseMPgraphic{cell:triangle}
path p ; p := unittriangle rotated 90 xscaled 2.5 OverlayWidth
yscaled 2.5 OverlayHeight ;
fill p shifted (0,6mm) withcolor white ; % only to move the next one down
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
It's a dirty trick. I'm sure there's a cleaner way.
Does anybody know it?
Thanks,
Massi
More information about the ntg-context
mailing list