Dear Hans, please consider the following example in MKII: \setupcolors[state=start] \starttext \startMPextensions a := \abc; color b; b := \MPcolor{currentcolor}; \stopMPextensions \startuseMPgraphic{bla} fill fullcircle scaled a withcolor b; \stopuseMPgraphic \def\abc{3cm}\color[blue]{\useMPgraphic{bla}} % Nice small black circle \def\abc{1cm}\useMPgraphic{bla} \stoptext I still don't know how to reproduce this in MKIV. I tried with MPdefinitions as you suggested, but this only works the first time when it is used. The following example creates two equal circles instead of two different ones: \starttext \startMPdefinitions a := \abc; color b; b := \MPcolor{currentcolor}; \stopMPdefinitions \startuseMPgraphic{bla} fill fullcircle scaled a withcolor b; \stopuseMPgraphic \def\abc{3cm}\color[blue]{\useMPgraphic{bla}} % I want a black 1cm circle here \def\abc{1cm}\useMPgraphic{bla} \stoptext Unless MKII is more powerful than MKIV: how can I achieve the same functionality in MKIV as I did in MKII? Thank you, Mojca On Tue, Feb 19, 2013 at 10:36 AM, Hans Hagen wrote:
On 2/19/2013 1:37 AM, Mojca Miklavec wrote:
On Mon, Feb 18, 2013 at 5:40 PM, Marco Patzer wrote:
Hi Mojca et al.
todays beta broke the gnuplot module. This is probably due to the changes in the MP inclusion mechanism.
\usemodule [gnuplot] \starttext \stoptext
Here's an almost minimal example:
\def\abc{1cm}
\startMPextensions a := \abc; color b; b := \MPcolor{currentcolor}; \stopMPextensions
\def\abc{3cm}
\starttext \startcolor[blue] \startMPcode fill fullcircle scaled a withcolor b; \stopMPcode \stopcolor \stoptext
The old ConTeXt draws a blue circle with diameter 3cm and the new ConTeXt draws a black circle with diameter 1cm. Which one is right? From a recent message by Hans:
- add mp functionality (immediate expansion)
It seems that ConTeXt now parses everything inside MPextensions earlier than it did before and I don't have the slightest idea how to account for this in the module without a major rewrite. In case that Hans wants to keep the new functionality, I either need [quite some] help with the module or I'll simply stick to TeX Live 2012 for the foreseeable future ;)
For the (not texlive) module use:
\defineMPinstance[gnuplot] [format=metafun, extensions=yes, initializations=yes, method=double]
\startMPdefinitions[gnuplot] ...
and then use the gnuplot instance. This not only isolates the code, but also gives you floats. It also means that if someone crashes the gnuplot instance, the rest still keeps running.
Definitions are per instance and are delayed i.e. passed via the tex end when they get expanded.
The reason for extensions being immediate (at least for now) is that it was more easy to implement as extensions meant for mp extensions and can be for all instances of specific (sets) of instances.
Sorry for the changes but as we have multiple instances, scale vs double and maybe more coming it's probably worth the trouble.
Hans