Calling \followtokens from with in metapost
Hello list, How can I call the \followtokens macro (or a similar solution) from within metapost? Specifically, I want to integrate text between the semi-circle arcs in a rainbow-like structure (with the text placed inbetween the arcs, that should alsó be drawn). The text should not be stretched but center on the top, flowing evenly distributed on each side. This link will give you an idea: http://www.heilsuefling.is/heilsuefling/upload/images/whp_in_general/determi... How can this achieved? Regards, Magnus
On 10/13/2013 9:59 AM, Magnus J wrote:
Hello list,
How can I call the \followtokens macro (or a similar solution) from within metapost? Specifically, I want to integrate text between the semi-circle arcs in a rainbow-like structure (with the text placed inbetween the arcs, that should alsó be drawn). The text should not be stretched but center on the top, flowing evenly distributed on each side. This link will give you an idea:
http://www.heilsuefling.is/heilsuefling/upload/images/whp_in_general/determi...
How can this achieved?
a bit clumsy but workable \starttext \useMPlibrary[txt] \startsetups text-a \startuseMPgraphic{followtokens} path RotPath ; RotPath := reverse halfcircle xyscaled 5cm ; draw RotPath ; \stopuseMPgraphic \followtokens{some text but not that long{\hskip1em}} \stopsetups \startsetups text-b \startuseMPgraphic{followtokens} path RotPath ; RotPath := reverse halfcircle xyscaled 3cm ; draw RotPath ; \stopuseMPgraphic \followtokens{{\hskip1em}some text{\hskip1em}} \stopsetups \startMPpage draw textext("\setups{text-a}") ; draw textext("\setups{text-b}") shifted (0,-.5cm); \stopMPpage \stoptext ----------------------------------------------------------------- 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 -----------------------------------------------------------------
On 2013–10–13 Hans Hagen wrote:
inbetween the arcs, that should alsó be drawn). The text should not be stretched but center on the top, flowing evenly distributed on each side. This link will give you an idea:
http://www.heilsuefling.is/heilsuefling/upload/images/whp_in_general/determi...
How can this achieved?
a bit clumsy but workable
\starttext
\useMPlibrary[txt]
\startsetups text-a \startuseMPgraphic{followtokens} path RotPath ; RotPath := reverse halfcircle xyscaled 5cm ; draw RotPath ; \stopuseMPgraphic \followtokens{some text but not that long{\hskip1em}} \stopsetups
\startsetups text-b \startuseMPgraphic{followtokens} path RotPath ; RotPath := reverse halfcircle xyscaled 3cm ; draw RotPath ; \stopuseMPgraphic \followtokens{{\hskip1em}some text{\hskip1em}} \stopsetups
\startMPpage draw textext("\setups{text-a}") ; draw textext("\setups{text-b}") shifted (0,-.5cm); \stopMPpage
\stoptext
This stretches the text. One has to use \hskip to squeeze the text back to its normal inter character space, but I assume that's what you meant by clumsy. I assume the OP wanted a solution which keeps the natural spacing (whatever that means when text is aligned to a path). Marco
On 2013–10–14 Marco Patzer wrote:
On 2013–10–13 Hans Hagen wrote:
inbetween the arcs, that should alsó be drawn). The text should not be stretched but center on the top, flowing evenly distributed on each side. This link will give you an idea:
http://www.heilsuefling.is/heilsuefling/upload/images/whp_in_general/determi...
How can this achieved?
Here is a slightly modified version of the \followtokens macro with
centres the text without stretching it to the path size.
\useMPlibrary [txt]
\unexpanded\def\followtokenscentred#1%%
{\vbox\bgroup
\forgetall
\dontcomplain
\startMPenvironment
\doifundefined{RotFont}{\definefont[RotFont][RegularBold]}
\stopMPenvironment
\MPtoks\emptytoks
\resetMPdrawing
\startMPdrawing
\includeMPgraphic{followtokenscentred} ;
picture pic[] ; numeric len[], n ; n := 0 ;
\stopMPdrawing
\handletokens#1\with\processfollowingtoken
\startMPdrawing
if unknown RotPath : path RotPath ; RotPath := origin ; fi ;
if unknown RotColor : color RotColor ; RotColor := black ; fi ;
if unknown TraceRot : boolean TraceRot ; TraceRot := false ; fi ;
if unknown ExtraRot : numeric ExtraRot ; ExtraRot := 0 ; fi ;
numeric al, at, pl, wid, pos ; pair ap, ad ;
al := arclength RotPath ;
if al=0 :
al := len[n] + ExtraRot ;
RotPath := origin -- (al,0) ;
fi ;
if al
On 10/15/2013 12:27 AM, Marco Patzer wrote:
On 2013–10–14 Marco Patzer wrote:
On 2013–10–13 Hans Hagen wrote:
inbetween the arcs, that should alsó be drawn). The text should not be stretched but center on the top, flowing evenly distributed on each side. This link will give you an idea:
http://www.heilsuefling.is/heilsuefling/upload/images/whp_in_general/determi...
How can this achieved?
Here is a slightly modified version of the \followtokens macro with centres the text without stretching it to the path size.
I figured out the differnces (next time put a % MP after the lines) and made it a variant in the txt file. You can check it in the beta. I'm probably rewrite that code in a more mkiv way ... when I'm bored on a raining day or so. Hans ----------------------------------------------------------------- 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 -----------------------------------------------------------------
participants (3)
-
Hans Hagen
-
Magnus J
-
Marco Patzer