[NTG-context] Reset environment between MetaPost graphics?

Aditya Mahajan adityam at umich.edu
Thu Jan 20 15:26:42 CET 2022


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


More information about the ntg-context mailing list