[metapost] Can't get write/scantokens to work.

Mojca Miklavec mojca.miklavec.lists at gmail.com
Tue Sep 18 16:59:47 CEST 2007

On 9/18/07, Michaël Cadilhac wrote:
> Hi list!
> But my very problem is that I can't get it to work.  See the following
> file:
> verbatimtex
> %&latex
> \documentclass{article}
> \usepackage[T1]{fontenc}
> \usepackage[nice]{nicefrac}
> \begin{document}
> etex;
> vardef TEX primary s =
>  write "verbatimtex"                    to "mptextmp.mp";
>  write "%&latex"                        to "mptextmp.mp";
>  write "\documentclass{article}"        to "mptextmp.mp";
>  write "\usepackage[T1]{fontenc}"       to "mptextmp.mp";
>  write "\usepackage[nice]{nicefrac}"    to "mptextmp.mp";
>  write "\begin{document}"               to "mptextmp.mp";
>  write "etex"                           to "mptextmp.mp";
>  write "btex "&s&" etex"                to "mptextmp.mp";
>  write EOF                              to "mptextmp.mp";
>  scantokens "input mptextmp"
> enddef;
> prologues := 2;
> beginfig(1)
>  label (TEX("abc"), (0,0));
>  label (btex b etex, (2cm, 2cm));
>  label (TEX("def$\nicefrac{1}{2}$"), (4cm, 4cm));
> endfig;
> end.
> So, question is, am I searching for a feature beyond MP capacities?

Can you try to compile the following document with "texexec yourfile.tex"?

% yourfile.txt should look like:
  label(\sometxt{b}, (2c,2cm));
  label(textext("def\vulgarfraction{1}{2}"), (4cm,4cm));
  label(textext("abc"), (0,0));
There is a way to get a different fraction, but please tell first if
this method works OK for you.

You can pass any string to textext(), but note that \sometxt is *much*
more efficient, so you should use \sometxt whenever possible.

There also seems to be a little bug if you put the last label in front
of the rest. I will check.


More information about the metapost mailing list