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