On Fri, 9 Aug 2013, Sanjoy Mahajan wrote:
Try adding prologues := 2; or prologues := 3; in your mp file.
Good thought, which I tried, though neither setting resolved the problem.
Any particular reason that you are compiling metapost files using mp and then including them in ConTeXt rather than directly using any one of the inbuilt ConTeXt environments for handling mp (\startMPcode, \useMPgraphic, \processMPbuffer, etc.)
Mostly conservatism. I cannot quite figure out the canonical replacement for btex ... etex (textext, sometext?), and then I get confused by the many possible environments.
What do you recommend as the best btex...etex replacement
Nothing. Just leave them as it is and MkIV is smart enough to process them [^1]. If you used the TEX macros (to build strings with metapost variables), use textext("...") instead of TEX("....").
and the best environment for replacing a standalong metapost figure (that I would otherwise just include with \externalfigure)?
I use the following: \startcomponent figures \startbuffer[system-1] ... mp code .. \stopbuffer % Other figures in separate buffer \stopcomponent and then use \processMPbuffer[list of buffers] to typeset them [^2]. With this approach you loose some of the features of \externalfigure (scaling, backgrounds, etc.) For scaling, you can use \scale[....]{\processMPbuffer[...]} and if you really need a background, you can use \framed. Another option is to use \startMPcode .... \stopMPcode environment, but I usually like my figures to be separate files. [^1]: To process btex ... etex, the content of each metapost environment is processed twice. This can sometimes lead to unexpected results. Basically you have to careful with := vs =, otherwise you'll get inconsistent equations. [^2]: You also need to keep in mind that all metapost graphics are processed in a single run (think of a single mp file with multiple beginfigs). So you have to be careful with initializing and resetting variables (\startMPinclusions, \startMPinitializations, \startMPdefinitions, see wiki for difference) or adding bgroup ... egroup at appropriate location to limit scope. Another way to avoid interference is to use separate MPinstances, but in my opinion that feature is more useful to module writers than normal users. Aditya