On Sun, 5 Dec 2010, Li Yanrui (李延瑞) wrote:

Hi,

See the following example:

\starttext
\startMPcode
u = 1cm;
xmin = -2.6u;
xmax = 4u;
drawarrow (xmin,0)--(xmax,0);
\stopMPcode
\stoptext

It can be compiled rightly. But when I add the 'label' line into it, see:

\starttext
\startMPcode
u = 1cm;
xmin = -2.6u;
xmax = 4u;
drawarrow (xmin,0)--(xmax,0);
label.lft("hello",(0, 0));
\stopMPcode
\stoptext

Now it can not be compiled and luatex outputs:

mplib           : loading 'metafun.mp' (experimental metapost version two)
mplib           > mp terminal: ! Redundant equation.
<to be read again>
                  ;
<*> u = 1cm;
            xmin = -2.6u; xmax = 4u; drawarrow (xmin,0)--(xmax,0); label.lf...

! Redundant equation.
<to be read again>

Is this a bug or it always need to use 'save' macro to hold these
local variable in metafun?

When a label (or btex ... etex) is present, ConTeXt processes the MP code twice: once to typeset the labels and then to place to labels. You get a redundant equation in the second pass.

The easiest way to prevent this is to use := instead of =

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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to