[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