What alternative for scantokens( "btex " & texcommands & " etex")?
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
On 29/03/20 07:06, Gerben Wierda wrote:
I’m trying in METAPOST to build a command to pass on to ConTeXt using btex/etex.
picture p; p := scantokens( "btex " & texcommands & " etex”);
btex/etex is better replaced by textext(). Nevertheless, this does not change anything. Context intercepts and replaces textext() (and btex/etex) during processing. It does not return a picture but a text bounding box that gets substituted upon shipping out. You *can* save your text to a string, to be passed to textext() in your MP macros. -- Alan
participants (2)
-
Alan Braslau
-
Gerben Wierda