Hi,
Why does (1) compile, whereas (2) doesn't? I can't understand why can MPinclusions store path and not pairs.
%%%%%%%%%%%% (1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setuppapersize[A4,landscape]
\startMPinclusions u:=1mm ; %fond path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; \stopMPinclusions
\startreusableMPgraphic{test} draw p ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test} \stoptext
%%%%%%%%%%%% (1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setuppapersize[A4,landscape]
\startMPinclusions u:=1mm ; %fond path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; \stopMPinclusions
\startreusableMPgraphic{test} draw p ; for i=0 step 1 until 3 : drawdot x[i] ; endfor ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test}
More generaly, which kind of variables cannot be stored in \startMPinclusions ?
Thanks,
Damien Thiriet
On 2/21/2019 10:03 AM, Damien Thiriet wrote:
Hi,
Why does (1) compile, whereas (2) doesn't? I can't understand why can MPinclusions store path and not pairs.
%%%%%%%%%%%% (1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setuppapersize[A4,landscape]
\startMPinclusions u:=1mm ; %fond path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; \stopMPinclusions
\startreusableMPgraphic{test} draw p ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test} \stoptext
%%%%%%%%%%%% (1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setuppapersize[A4,landscape]
\startMPinclusions u:=1mm ; %fond path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; \stopMPinclusions
\startreusableMPgraphic{test} draw p ; for i=0 step 1 until 3 : drawdot x[i] ; endfor ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test}
More generaly, which kind of variables cannot be stored in \startMPinclusions ?
those that are likely to clash later
\startMPinclusions vardef MyStuff = numeric u; u:=1mm ; path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; enddef ; \stopMPinclusions
\startreusableMPgraphic{test} save p, u, x ; MyStuff ; draw p ; for i=0 step 1 until 3 : drawdot x[i] ; endfor ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test} \stoptext
but in your case you could as well put the inclusions in the test graphic itself
\startreusableMPgraphic{test} save p, u, x ; numeric u; u:=1mm ; path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; draw p ; for i=0 step 1 until 3 : drawdot x[i] ; endfor ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test} \stoptext
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 21 Feb 2019, at 10:03, Damien Thiriet damien@thiriet.web4me.fr wrote:
Hi,
Why does (1) compile, whereas (2) doesn’t?
For me, both compile. However (2) does not work.
1. Variable names x and y are special and cleared before every graphic. This is related to the fact that “z" is defined as a shortcut for "(x,y)”. Both of these are traditional.
Every metapost graphic does at least this at its start:
save x,y; currentpicture := nullpicture; currentpen:=defaultpen;
so pair xx[]; would have worked just fine.
In general, I would advice to stay away from single-letter variable names inside MPinclusions, and use CamelCase to avoid clashes with metafun internals.
2. You need a bigger pen to actually see the dots even if you change the variable name. :)
Best wishes, Taco
I can't understand why can MPinclusions store path and not pairs.
%%%%%%%%%%%% (1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setuppapersize[A4,landscape]
\startMPinclusions u:=1mm ; %fond path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; \stopMPinclusions
\startreusableMPgraphic{test} draw p ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test} \stoptext
%%%%%%%%%%%% (1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setuppapersize[A4,landscape]
\startMPinclusions u:=1mm ; %fond path p ; p:= (0,0) -- (150u,0) -- (150u,95u) -- (0,95u) -- cycle ; pair x[] ; x[0]:= (20u,90u) ; x[1]:= (40u,90u) ; x[2]:= (90u,90u) ; x[3]:= (140u,90u) ; \stopMPinclusions
\startreusableMPgraphic{test} draw p ; for i=0 step 1 until 3 : drawdot x[i] ; endfor ; \stopreusableMPgraphic
\starttext \reuseMPgraphic{test}
More generaly, which kind of variables cannot be stored in \startMPinclusions ?
Thanks,
Damien Thiriet ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
Taco Hoekwater Elvenkind BV