In metafun, a colored dotlabel fails. A fix is included below.
Here is a minimal test file:
beginfig(1)
dotlabel(btex etex, origin) withcolor green;
endfig;
end
It produces this error:
$ mpost -mem=metafun t
This is MetaPost, Version 0.993 (Web2C 7.5.6)
(t.mp
! Extra tokens will be flushed.
<to be read again>
withcolor
l.2 dotlabel(btex etex, origin) withcolor
green;
?
[I'm using the metafun that was built from context 2007.04.17.]
Metapost used to have this problem, for which John Hobby sent the
following updated definition of dotlabel():
vardef dotlabel@#(expr s,z) text t_ =
label@#(s,z) t_;
interim linecap:=rounded;
draw z withpen pencircle scaled dotlabeldiam t_;
enddef;
It is part of the current plain.mp (mpost 0.993). But the metafun.mp
format-generation file includes mp-base.mp, which has the old definition
of dotlabel:
vardef dotlabel@#(expr s,z) =
label@#(s,z);
interim linecap:=rounded;
draw z withpen pencircle scaled dotlabeldiam;
enddef;
The patch below fixes the minimal test case above as well as the
larger real file that I started with:
--- a/metapost/context/base/mp-base.mp 2007-07-25 00:19:15.379198092 -0400
+++ b/metapost/context/base/mp-base.mp 2007-07-25 00:19:37.072411646 -0400
@@ -477,10 +477,10 @@
def label = draw thelabel enddef;
newinternal dotlabeldiam; dotlabeldiam:=3bp;
-vardef dotlabel@#(expr s,z) =
- label@#(s,z);
+vardef dotlabel@#(expr s,z) text t_ =
+ label@#(s,z) t_;
interim linecap:=rounded;
- draw z withpen pencircle scaled dotlabeldiam;
+ draw z withpen pencircle scaled dotlabeldiam t_;
enddef;
def makelabel = dotlabel enddef;