Hi, Say I’m writing a document containing many independent MetaPost figures. I don’t want to bother with enclosing each and every graphics in a ‘begingroup...endgroup’ with the appropriate ‘save’ statement. But I don’t want variables from previous graphics to leak into following ones either. Like this: % SOF \starttext Text about some topic. \startMPcode u=1cm; draw (-u, u)--origin--(u ,u); \stopMPcode Now on to another topic. \startMPcode u=2cm; % Triggers an error: Inconsistent equation (off by 28.34645) draw (-u, u)..origin..(u ,u); \stopMPcode \stoptext % EOF Is that achievable? Thanks, Vincent
On Thu, 20 Jan 2022, Vincent Hennebert via ntg-context wrote:
Hi,
Say I’m writing a document containing many independent MetaPost figures. I don’t want to bother with enclosing each and every graphics in a ‘begingroup...endgroup’ with the appropriate ‘save’ statement. But I don’t want variables from previous graphics to leak into following ones either.
Like this:
% SOF \starttext
Text about some topic.
\startMPcode u=1cm; draw (-u, u)--origin--(u ,u); \stopMPcode
Now on to another topic.
\startMPcode u=2cm; % Triggers an error: Inconsistent equation (off by 28.34645) draw (-u, u)..origin..(u ,u); \stopMPcode
\stoptext % EOF
Is that achievable?
AFAIK, there is no in-built support for this. I workaround this as follows. Instead of defining new variables using numeric u; pair p; path q; etc. use: newnumeric u; newpair p; newpath p; etc. which automatically does a save beforehand. The only place where the abstraction leaks is arrays. You cannot do, newpair p[]; but need save p; pair p[] instead. Another option is to use assignment rather than equality: u := 2cm; Aditya
On 1/20/2022 3:26 PM, Aditya Mahajan via ntg-context wrote:
AFAIK, there is no in-built support for this.
FYEO: \starttext \startMPcode u = 123; \stopMPcode \ctxlua{metapost.reset("metafun:1")} \startMPcode u = 123; \stopMPcode \stoptext (the instance is reported on the console) Hans ----------------------------------------------------------------- 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 Thu, 2022-01-20 at 15:47 +0100, Hans Hagen via ntg-context wrote:
On 1/20/2022 3:26 PM, Aditya Mahajan via ntg-context wrote:
AFAIK, there is no in-built support for this.
FYEO:
\starttext
\startMPcode u = 123; \stopMPcode
\ctxlua{metapost.reset("metafun:1")}
\startMPcode u = 123; \stopMPcode
\stoptext
(the instance is reported on the console)
Thanks Aditya and Hans! Glad to hear I wasn’t missing anything obvious. Vincent
On 1/20/2022 2:59 PM, Vincent Hennebert via ntg-context wrote:
Hi,
Say I’m writing a document containing many independent MetaPost figures. I don’t want to bother with enclosing each and every graphics in a ‘begingroup...endgroup’ with the appropriate ‘save’ statement. But I don’t want variables from previous graphics to leak into following ones either.
Like this:
% SOF \starttext
Text about some topic.
\startMPcode u=1cm; draw (-u, u)--origin--(u ,u); \stopMPcode
Now on to another topic.
\startMPcode u=2cm; % Triggers an error: Inconsistent equation (off by 28.34645) draw (-u, u)..origin..(u ,u); \stopMPcode
\stoptext % EOF
Is that achievable? you could do
save u; u = 1cm; or u := 1cm; or numeric u; u := 1cm; or you could use a dedicated instance (normally not needed) Hans ----------------------------------------------------------------- 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 1/20/2022 3:42 PM, Hans Hagen via ntg-context wrote: next upload: \resetMPinstance[metafun:1] but try to avoid this because reloading takes time Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (3)
-
Aditya Mahajan
-
Hans Hagen
-
Vincent Hennebert