[NTG-context] offset for background overlay

Wolfgang Schuster wolfgang.schuster.lists at gmail.com
Sat Apr 11 20:11:13 CEST 2020


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