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

Stephan Hennig mailing_list at arcor.de
Wed Sep 19 21:03:05 CEST 2007

[Forgot to copy this mail to the list.]

> I'm dreadfully sorry, I would love to understand the ins and outs of
> MetaPost, but I'm just not at this stage.  The very thing I want to do
> is something like that :
>
> for i := 1 upto 2:
>   beginfig(i)
>     string phantom;
>     phantom := if i = 1: "\phantom" else: "" fi;
>     label (TEX("This is a " & phantom & "{funny} thing"));
>   endfig;
> endfor;
>
> That is to say, enable some part of TeX text according to the picture
> number (as you can imagine, it's for a presentation).  I hope we've not
> misunderstand this.

I guess you're looking for the latexmp package.  That provides a textext
macro that takes its argument as string (as TEX() does) and so you can
dynamically decide what to process by LaTeX.

input latexmp
setupLaTeXMP(class="article",options="12pt",fontencoding="T1");
prologues := 2;
for i := 1 upto 2:
beginfig(i)
string phantom;
phantom := if i = 1: "\phantom" else: "" fi;
label (textext("This is a " & phantom & "{funny} thing"), origin);
endfig;
endfor;
end

Compile this two times with

mpost -latex file.mp

The package provides various set-up options, e.g., in general, I prefer
to provide an external preamble file (via option preamblefile).

> And BTW, you're giving time to help me with this, so I want to give you
> some of my time in return :-) Question is, as I'm an Emacs developer, do
> you need any fix/fanciness on the Meta* mode of Emacs ?

Accidentally, just a few days ago I asked Lennart Borgman if it were
possible to add support for MetaPost and (La)TeX to his mumamo-mode.
I've attached my original mail.  I think Lennart is working on the
feature, but as I understand he doesn't know much about meta-mode and
tex-mode.  So, if you could have a look at that, it would be great.

Best regards,
Stephan Hennig

> Hi Lennart,
>
> would it be possible to add support for the combination
> metapost-mode/LaTeX-mode/latex-mode/tex-mode to mumamo.el?
>
> In short the following cases should be recognized in metapost-mode:
>
> (i) Text between identifiers "verbatimtex" and "etex" should be
> highlighted according to a TeX mode's rules as in
>
> verbatimtex
> \documentclass{article}
> \usepackage[ngerman]{babel}
> \usepackage{mathptmx}
> \begin{document}
> etex
>
>
> (ii)  Text between identifiers "btex" and "etex" should be highlighted
> according to a TeX mode's rules as in
>
> label(btex Brief"|inhalt etex, origin);
>
> Currently "| (from package babel: break ligatures) breaks font-locking
> completely.  The rest of the mp file is seen as belonging to a
> MetaPost-string, where in fact there is no string at all.
>
>
> (iii)  Text between double quotes should be highlighted according to
> (AUC)TeX mode rules if it is an argument to the following commands:
>
> TeX() or textext()
>
> As in
>
> textext("\emph{Briefinhalt}")  or
> TEX("\emph{Briefinhalt}")
>
> Additionally, multiple string can be concatenated as in
>
> textext("$n_{" & decimal(i) & "}$")
> TEX("$n_{" & decimal(i) & "}$")
>
> All strings ("$n_{" and "}$") should be highlighted according to a TeX
> mode's rules.  (I hope for the best, that AUCTeX will still be able to
> recognize both $'s as belonging to the same math environment.) > > I've attached a small example that contains all the cases (but doesn't > compile). > > Thanks, > Stephan Hennig > > > verbatimtex > \documentclass{article} > \usepackage[ngerman]{babel} > \usepackage{mathptmx} > \begin{document} > etex > beginfig(1); > label(textext("Brief\/inhalt"), origin); > label(TEX("Brief\/inhalt"), origin); > label(textext("$n_{" & decimal(i) & "}$"), (5mm*i,0)); or > label(TEX("$n_{" & decimal(i) & "}\$"), (5mm*i,0));.
>   label(btex Brief"|inhalt etex, origin);
> endfig;
> end