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