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
___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to