On Fri, 9 Aug 2013, Sanjoy Mahajan wrote:

Try adding
     prologues := 2;
     prologues := 3;
in your mp file.

Good thought, which I tried, though neither setting resolved the

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

 ... mp code ..

% Other figures in separate buffer


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


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.


If your question is of interest to others as well, please add an entry to the 

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