I’m trying in METAPOST to build a command to pass on to ConTeXt using btex/etex.

picture p; p := scantokens( "btex " & texcommands & " etex”);

with texcommands a variable that holds a string of TeX commands doesn’t work. The METAPOST parser complains about not finding etex.

I’m using MetaFun actually.

An example string in texcommands would in the end be something like

string texcommands;
texcommands := "\type-{Hello}, [World]!-";

Minimum example of my vardef that fails (the outcommented alternative to the scantokens line works and typesets “{Hello}, [World]!”):

vardef makeTeXLabel( expr w, h, name) =
  show "NAME:", name;
  save p; picture p ;
  save s; string s;
  s := "btex " & name & " etex";
  show "SCAN:", s;
  p := scantokens s;
  %p := btex   p := btex \type-{Hello}, [World]!- etex;
  p
enddef;

Log:

metapost log    > >> "NAME:"
metapost log    > >> "My Application (Component)"
metapost log    > >> "SCAN:"
metapost log    > >> "btex My Application (Component) etex"
metapost log    > ! No matching 'etex' for 'btex'..
metapost log    > <to be read again> 
metapost log    >                    ;
metapost log    > makeTeXLabel->...x";show"SCAN:",s;p:=scantokens.s;
metapost log    >                                                   save.b;path.b;b:=boundingb...
metapost log    > <argument> ...(53),("My Application (Component)"))

Thanks in advance,

G