What do people use for modifying figures?

One solution is to export your graphics to a LaTeX-friendly format such as TikZ.

If you use MATLAB, there is a project that aims to export MATLAB figures to TikZ code:

http://github.com/nicki/matlab2tikz

If you are using R, I am the co-author of a graphics device that produces TikZ code- it is available on CRAN. Development releases may be downloaded from R-Forge and bleeding-edge source code can be found on GitHub.

Inkscape can be used along with a plugin that exports to TikZ for general graphics conversion tasks.

The advantage of exporting graphics to a format like TikZ is that there are no discontinuities in font usage or typesetting since LaTeX handles all the text. In the case of the R graphics device the user is also allowed to use the full range of LaTeX commands and packages to typeset arbitrary mathematical notation.

Response to Question Update

One nice thing about TikZ is that graphics can be externalized. This means that the code used to create the graphic is separated and used to compile a stand-alone figure. On subsequent runs the stand alone file is included as an image. Using this system you can leverage the full power of TikZ and then provide your document and a handful of static image files to the Journal minimal changes to your TeX source (basically flipping a switch on or off).

See Automagically externalising pdftricks and TikZ pictures and Script to automate externalizing tikz graphics.


I use the overpic package, which essentially combines the abilities of the \includegraphics command and the picture environment. It is used very similarly to the picture environment to place arrows, text, math, circles, etc. as if you were drawing a figure manually in LaTeX, but it also accepts an image file as a parameter which it uses as the background on which to place these elements.

So what I do is generate my graphics externally (e.g. with Matlab or Mathematica) in such a way that they don't include any labels or text. I then use those images as the background and place LaTeX-generated labels and other features on top of them.

One particular advantage of this package is that with the [grid] option specified it generates a numbered grid over the background image to help you figure out where to place your elements. Once they're all in the right place, just remove the [grid] option.


I also use Matlab to create my graphs as well but I use matlabfrag to export psfrag versions of the EPS graphics instead of Laprint.

My solution to the "journal problem" is a little more generic, however. Haven't written any portable code for it yet because it's not easily generalisable, but the outline is:

  • Use endfloat to send all figures to the end of the document

  • Hide the captions with \renewcommand\@makecaption[2]{}

  • Create a new document that only contains the pages with figures (that should now be blank except for the graphics themselves); e.g., using pdfpages or pdftk

  • Use pdfcrop to trim each page down to the exact size of the graphic

I then have some other macros to use these pregenerated figures in subsequent document compilations, but that's only useful if the journal is actually going to use your TeX source.