On 9/17/2020 9:41 PM, Geert Verhaag wrote:
Hi ConTeXt users,
That's indeed magic and it works! Hans, thanks for your prompt answer!
But I would like to take this a step further, by introducing a macro
within the start/stopuseMPgraphic structure like so:
\startuseMPgraphic{name}{s::lbl}
def mymacro (text lb) =
pair a ; a := (3cm,3cm) ;label.top("String: " & str lb,a) ;
enddef ;
mymacro(\MPvariable{lbl}) ;
\stopuseMPgraphic
and this works too, but what if I introduce another text argument like:
\startuseMPgraphic{name}{s::lbl,s::label}
def mymacro (text lb,lbx) =
pair a ; a := (3cm,3cm) ;label.top("String: " & str lb & ", " & str
lbx,a) ;
enddef ;
mymacro(\MPvariable{lbl},\MPvariable{label}) ;
\stopuseMPgraphic
However this doesn't work! It gives the following error:
! Missing argument to mymacro.
Isn't that weird? But perhaps it has to do with me not understanding
argument passing properly within METAPOST macros!
Can someone please explain why this 2 argument example doesn't work?
(But maybe this isn't the proper list to ask questions like these. If
so, I'm sorry for bothering you!)
Regards,
Gerard
On 16-09-2020 16:32, Geert Verhaag wrote:
Hi,
I'm trying to pass a string argument value to an MPgraphic but it
doesn't seem to work:
Tried the following:
\startuseMPgraphic{name}{lbl}
pair a ; a := (3cm,3cm) ;label.top("\MPvariable{lbl}",a) ;
\stopuseMPgraphic
\starttext
\useMPgraphic{name}{lbl=1}
\stoptext
The above works as expected!
But the following doesn't:
\startuseMPgraphic{name}{lbl}
pair a ; a := (3cm,3cm) ;label.top("\MPvariable{lbl}",a) ;
\stopuseMPgraphic
\starttext
\useMPgraphic{name}{lbl=abc}
\stoptext
It yields:
1 \startuseMPgraphic{name}{lbl}
2 pair a ; a := (3cm,3cm) ;label.top("\MPvariable{lbl}",a) ;
3 \stopuseMPgraphic
4
5 %\startuseMPgraphic{name}fill fullcircle scaled 200pt withcolor
.625yellow ;\stopuseMPgraphic
6
7 \starttext
8 Example:
9 >> \useMPgraphic{name}{lbl=abc}
10 \stoptext
11
<to be read again>
a
\m_meta_current_variable a-a
bc
<argument> ... \hbox {\scratchdimen \m_meta_current_variable
sp}\ifzeropt \wd
\b_meta_v...
\secondoftwoarguments #1#2b-#2
\9>>1 #1,2-\meta_prepare_instance_variable {#1}
\syst_helpers_do_process_comm...
\syst_helpers_do_process_comma_list ...rgument #1,
]\relax \global
\advance \...
...
l.9 \useMPgraphic{name}{lbl=abc}
So it seems that only numbers can be passed not character strings! Why
is that? Is there a possibility to achieve this functionality?
\startuseMPgraphic{name}{s::lbl,s::label}
def mymacro(expr a, b) =
label.top("str:(" & a & "," & b & ")",(3cm,3cm)) ;
enddef ;
mymacro("\MPvariable{lbl}","\MPvariable{label}")
\stopuseMPgraphic
\starttext
\useMPgraphic{name}{lbl=abc,label=pqr}
\useMPgraphic{name}{lbl=def,label=xyz}
\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
-----------------------------------------------------------------
___________________________________________________________________________________
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
___________________________________________________________________________________