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