Poster of Linux kernelThe best gift for a Linux geek


Section: Conversion from XFig to PS/EPS/PDF (1) Updated: 2009-01-01
Local index Up



fig2ps, fig2eps,fig2pdf - Convert xfig files in ps|pdf, processing all the text marked as special with LaTeX.



fig2ps [-h|--help]

fig2ps [ options ] file1.fig [file2.fig ...]

fig2pdf [ options ] file1.fig [file2.fig ...]



fig2ps converts figures produced by XFig into postscript or PDF, processing the text with LaTeX. It takes advantage of the pstex and pstext_t export formats of fig2dev.

fig2ps converts successively all the files given as arguments. It's behaviour is governed by quite a few options. In all the options, the = sign is optional, so that

fig2ps --bbox=dvips file.fig


fig2ps --bbox dvips file.fig

are equivalent.



To convert file.fig to PS:

fig2ps file.fig

To convert it to PDF:

fig2pdf file.fig


fig2ps --pdf file.fig

If the XFig file you want to convert to PDF contains included images, you might want to try:

fig2pdf --manual-ps2pdf file.fig



--gv, --nogv
If on, fig2ps runs gv on every file just after they are produced. On by default if fig2ps thinks it is talking to a terminal (ie not from a pipe). You might want to switch that off when processing lots of files.

Views produced files with xpdf rather than gv. Obviously, that won't be really useful if you are producing PS files, you've been warned.

Runs command rather than gv on the produced files.

Tells fig2ps to keep the temporary directory in which temporary files are created. Useful for debugging. If this option is on, fig2ps prints the name of the directory when it has finished its job, so you know where to look.

Sets the package list to be used to pack1,pack2,.... Resets any package given by the --add command-line option. For more information about packages, see the section PREAMBLE below.

Adds pack1,pack2,... to the existing list of packages. See the section PREAMBLE below. This option is cumulative.

Chooses the method to determine the bounding box of the files. See the section BOUNDING BOX below for more information.

Uses file as a template for the LaTeX file. More information about that can be found in the section PREAMBLE below. This option was written for a private use, though you can of course profit from it. However, most of the times, what you really want is --add=file. file will be looked for using kpsewhich.

--pdf, --nopdf
Whether the final output of fig2ps will be PDF or postscript. This option is automatically when called as fig2pdf. Note that in any case, fig2ps has to go through Postscript output to produce a PDF file.

Change the output default extension from .ps to .eps. This is on by default when the program is called as fig2eps. It has no other effects.

When producing PDF files, fig2ps uses epstopdf to perform the conversion. This may lead to bad quality output with embedded pictures. The use of this option disables PDF production by epstopdf and lets ps2pdf produce the final output PDF (but after tweaking the PS file using epstopdf). In general, this produces much better results.

When --manual-ps2pdf does not produce output of decent quality, you can use this option to manually feed options to ps2pdf. The use of this option implies --manual-ps2pdf.

When producing a PDF file, asks fig2ps to keep the intermediary Postscript file.

--forcespecial, --noforcespecial
fig2ps only processes with LaTeX text which is marked as special in the Fig file. When this option is on, all text is treated as if it was marked with the special flag.

Passes string as options for dvips.

Passes string as options for fig2dev.

Adds string in the preamble of the LaTeX file generated, just before the \begin{document} stanza. Effects are cumulative.

-V, --version
Prints the version of fig2ps and exits.



Many of the command-line options can be set in either the system-wide (in /etc) or the user configuration file (in the user's home directory). Some more details can be configured in the configuration files. Global configuration is overridden by users' configuration which in turn is overridden by the command line options. Here is a list of the variables you can define:

Defines the basic list of packages. See the PREAMBLE section.

Has the same effect as the --add command-line option. Does not make too much sense in the global configuration file, but you might want to use it in a personal one.

Sets the document class used by LaTeX.

Sets the options for the document class.

Sets the default for option --forcespecial.

Sets the default for option --gv.

Has the same effect as the --input command-line option.

Identical to the --preamble option, with the slight difference that the in configuration files, it is not cumulative: the last assignment seen is the only taken into account.

Sets the default for option --keepps.



The preamble of the LaTeX file is built as such:

if a --input file is specified, it will be used directly with a \input statement. A \documentclass statement will be added if the input file does not contain any.
else, a preamble is made based on the values of DOC_CLASS, DOC_OPTIONS, and PACKAGES (the latter is overridden by the --packages command-line option). See below for the format of the package variables.

Then, the packages specified using the ADD variable and the --add command-line options are added to the preamble, followed by the geometry package that deals with setting the size of the output (tweaked for fig2ps's purposes) and finally the contents of the PREAMBLE variable and the --preamble command-line options.

The --packages and --add options, and the corresponding variables, take a comma separated list of packages. Options for the packages can be specified in two ways:

in which you can only specify one option;
in which you can specify an arbitrary number of options, as long as you don't need a comma inside an option. Should the need arise, use --preamble.



One of the delicate jobs of fig2ps is to set the bounding box of the produced file, that is the rectangle that holds the figure. There are basically three ways for fig2ps to get them:

In this mode, fig2ps runs dvips with the -E option. It works reasonably fine most of the time, but it will produce incorrect results if you have rotated text near the edge of the graph.

Asks gs to tell the bounding box of the figure. It used to produce systematically perfect results, but the quality has degraded somehow recently. It still works in most of the cases, and that is why it is the default. It fails on very large pictures.

Specify your bounding box by hand.

The benefits of using the last two methods is that fig2ps tells you how big the picture is (in centimeters).



/etc/fig2ps/fig2ps.rc, $HOME/.fig2ps.rc

The examples/ directory in the source tarball contains some examples. Check fig2ps on them to see if it works fine, but keep in mind that fig2ps will choke on examples/Large-example.fig !



xfig(1), fig2dev(1), latex(1), gv(1), gs(1), kpsewhich(1)

The Sourceforge project page at:



This script was written by Vincent Fourmond, from an original idea of Seb Desreux (the first script is for private use, and used the eepic export of xfig, which is severely limitated), improved by a few others...



Please use the tracker from the Sourceforge project page:




This document was created by man2html, using the manual pages.
Time: 21:12:48 GMT, April 16, 2011