On Sat, 22 Jan 2011, Stefan Müller wrote: > So its either using text or using metaobj? Too bad, metaobj is quite fun... I > still hope you guys can fix this, but it's not urgent (to me). > > Anyway, what does the [+] after > \startMPinclusions? I did not find documentation for that on the wiki. \startMPinclusions path a ; \stopMPinclusions \startMPinclusions a := (0,0) -- (1cm,0) ; \stopMPinclusions will fail, because the second inclusions overwrites the first. If you use [+], then the second inclusions in appended after the first. > Just as a wild guess I tested the example below today, trying to make use of > the things Aditya said, but to no avail. The trick is to ensure that the offending code (assignObj) is not run twice. \startMPinclusions[+] input metaobj; boolean flag; flag := false; \stopMPinclusions \startMPdefinitions vardef newSegment@\#= if not flag : assignObj(@\#,"Segment"); ObjPoint a,b; ObjCode "@\#b-@\#a=(1cm,2cm)"; fi ; enddef; def drawSegment(suffix n)= draw n.a--n.b; draw btex \tt \overbar{E} etex shifted n.a; % 1 enddef; \stopMPdefinitions \starttext \startMPpage newSegment.s; ObjLabel.s(btex hello! etex) "labpoint(a)"; % 2 s.a=origin; drawObj(s); flag := true ; \stopMPpage \stoptext @Hans, can we have a `trialtypesetting` for MP code? Aditya