I created an image in Mathematica with some labels that, for some reason, refuse to be substituted when using PSFrag.

Specifically, the Mathematica code

image = Plot[Sin[x], {x, 0, 2 π}, PlotLabel-> "label"]

will create the image

enter image description here

The following PSFrag code should, in principle, substitute the label label with a nicely formatted $\sin(x)$:





Indeed, a very similar version will work on the example.eps image provided by the PSFrag package in its documentation. However, the label is not replaced by my dvips driver. What is going wrong?

  • this looks kind of interesting, but for truly beautiful graphics you might look at pgfplots or PSTricks
    – cmhughes
    Mar 5 '14 at 21:19
  • @cmhughes Those are nice, but they cannot do the heavy numerical integrations required by my thesis work. Every tool has its place.
    – E.P.
    Mar 5 '14 at 21:22
  • but you can still export the heavy numerical integration results to a text file that you can then read with pgfplots or pstricks.
    – pluton
    Mar 6 '14 at 2:55
  • Following your example directly within Mathematica 8.0, I receive as output the entire label (label).
    – Werner
    Mar 6 '14 at 5:04
  • @Werner I'm running Mathematica 9.0.1 over Ubuntu 12.04. I'm not sure at all what different versions or OSs will do.
    – E.P.
    Mar 6 '14 at 10:26

This turns out to be the fault of Mathematica's export protocol to EPS. If you inspect such a file directly in a text editor, the code corresponding to the label has been split up into single letters:

(l) N
3 10.5 m
(a) N
7.797 10.5 m
(b) N
13.203 10.5 m
(e) N
18 10.5 m
(l) N

That is, the string (label), which is what PSFrag hunts for, has been split into the five different single-character strings (l), (a), (b), (e) and (l).

To fix this, simply change the quoted code above with the proper (label), or change your labels to single characters.


You may also like to try MathPSFrag, which I've had lots of success with in the past.

It automatically creates (customisable) psfrag labels for every string in the image.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.