[NTG-context] Position of MetaPost graphics

Tim Steenvoorden tim.steenvoorden at gmail.com
Mon Apr 4 01:22:37 CEST 2011


Thanks Peter! You are right it is easier to draw both the wave and the
line in Metapost. And the dx=-\cutspace is just what I needed for left
pages!

I striped the frames out of the code and placed just the graphics in
the layer with a reuseMPgraphic. Also, I pulled out the definition of
the wave into a MPinclusions. I have to do LoadPageState in each
graphic though.

%\showframe
\setuppapersize[A5][A5]
\setuppagenumbering[alternative=doublesided]

\startMPinclusions
numeric periods, width;
path wave;
periods := 3 + 1/4;
width   := periods * 2*pi;
wave    := origin for x=0 step 0.1 until width:
             .. (x,x*sin(x))
           endfor;
\stopMPinclusions

\startreusableMPgraphic{rightwave}
LoadPageState;
pickup pencircle scaled 1pt;
draw origin -- (TextWidth,0) -- wave xscaled (CutSpace/width) yscaled
(LineHeight/width) shifted (TextWidth,0);
%setbounds currentpicture to unitsquare xscaled (TextWidth+CutSpace);
\stopreusableMPgraphic

\startreusableMPgraphic{leftwave}
LoadPageState;
pickup pencircle scaled 1pt;
draw reverse wave xscaled (-1*CutSpace/width) yscaled
(LineHeight/width) -- (TextWidth,0);
\stopreusableMPgraphic

\definelayer[decorations][position=yes,option=test]
\setupbackgrounds[page][background=decorations]

\starttext

{\ss\bfc A chapter title}
\blank[small]
{\ss\bfx \date \hfill Author Name}
\setlayer[decorations][location=r]{\reuseMPgraphic{rightwave}}

\input knuth

\page

{\ss\bfc A very long chapter title on two or more lines}
\blank[small]
{\ss\bfx \date \hfill Author Name}
\setlayer[decorations][location=r,dx=-\cutspace]{\reuseMPgraphic{leftwave}}

\input knuth

\stoptext

Just one problem is left. The graphic occupies space in the text layer
as if the location was set to rb. If you place it with the position=no
option, it is properly placed in the background and it doesn't disturb
the text. Is this a bug or a feature?

I tried to play a bit with the bounding boxes, but I think I don't
understand them that well.

Regards,
Tim


2011/4/3 Hans Hagen <pragma at wxs.nl>:
> On 1-4-2011 11:39, Tim Steenvoorden wrote:
>>
>> Dear list,
>>
>> I'm trying to make some fancy chapter headers. With MetaPost I drew a
>> wave, which I'd like to place in the margin. I've read details.pdf and
>> metafun.pdf, but I don't manage to get the positioning right. The wave
>> should begin where the bottomframe ends and move on to the page
>> border. Also, the graphic is placed in the page background layer, but
>> nevertheless the text after the the graphic is shifted down.
>>
>> \startuniqueMPgraphic{wave}
>> numeric periods, width;
>> path wave;
>> periods := 3 + 1/4;
>> width   := periods * 2*pi;
>> wave    := origin for x=0 step 0.1 until width:
>>              -- (x,x*sin(x))
>>            endfor;
>> pickup pencircle scaled 1pt;
>> draw wave xscaled (OverlayWidth/width) yscaled (OverlayHeight/(2*width));
>> \stopuniqueMPgraphic
>>
>> \definelayer[decorations][position=yes,option=test,location=r]
>> \setupbackgrounds[page][background=decorations]
>> \defineoverlay[wave][\uniqueMPgraphic{wave}]
>>
>> \starttext
>>
>> {\ss\bfc A chapter title}
>> \blank[small]
>> \framed[frame=off,bottomframe=on,width=broad,rulethickness=1pt]
>>  {\ss\bfx \date \hfill Author Name}
>>
>> \setlayer[decorations]{\framed[background=wave,frame=off,width=\cutspace,height=2\lineheight]{}}
>>
>> \input knuth
>>
>> \stoptext
>>
>> What am I doing wrong? Is it a better idea to draw the bottomframe in
>> MetaPost too? How do I take care of positioning in that case? Absolute
>> positioning is not an option, because the length of the chapterheads
>> can be two lines. It should also work on other paper sizes (A5 in
>> particular).
>
> you probably need to set the boundingbopx of your picture to something
> reasonable (you can use the OverlayWidth and OverlayHeight variables)
>
> -----------------------------------------------------------------
>                                          Hans Hagen | PRAGMA ADE
>              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>    tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
>                                             | www.pragma-pod.nl
> -----------------------------------------------------------------
>


More information about the ntg-context mailing list