[NTG-context] offset for background overlay

mf massifr at fastwebnet.it
Sat Apr 11 23:59:38 CEST 2020


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


More information about the ntg-context mailing list