---
name: "fig2ps"
section: "1"
platform: "linux"
package: "fig2ps"
version: "1.5-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/fig2ps"
---

# fig2ps(1)

Convert xfig files in ps\|pdf, processing all the text marked as special with LaTeX.

## NAME

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

## SYNOPSIS

**fig2ps \[-h\|--help\]**

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

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

## DESCRIPTION

**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*

and

*fig2ps --bbox dvips file.fig*

are equivalent.

## EXAMPLES

To convert  *file.fig* to PS:

*fig2ps file.fig*

To convert it to PDF:

*fig2pdf file.fig*

or

*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*

## OPTIONS

- **--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.

- **--xpdf**

  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.

- **--viewer*=command***

  Runs  *command* rather than  **gv** on the produced files.

- **--keep**

  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.

- **--packages*=pack1,pack2,...***

  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.

- **--add*=pack1,pack2,...***

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

- **--bbox*=dvips\|gs\|a,b,c,d***

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

- **--input*=file***

  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.

- **--eps**

  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.

- **--manual-ps2pdf**

  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.

- **--ps2pdf-options**

  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.*

- **--keepps**

  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.

- **--dvips*=string***

  Passes  *string* as options for  **dvips**.

- **--fig2dev*=string***

  Passes  *string* as options for  **fig2dev**.

- **--preamble*=string***

  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.

## CONFIGURATION FILES

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:

- **PACKAGES*=pack1,pack2...***

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

- **ADD*=pack1,pack2***

  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.

- **DOC\_CLASS*=class***

  Sets the document class used by LaTeX.

- **DOC\_OPTIONS*=Ioptions***

  Sets the options for the document class.

- **FORCE\_SPECIAL*=0*\|*1***

  Sets the default for option **--forcespecial.**

- **GV*=0*\|*1***

  Sets the default for option **--gv.**

- **GV*=file***

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

- **PREAMBLE*=string***

  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.

- **KEEP\_PS*=0*\|*1***

  Sets the default for option **--keepps.**

## PREAMBLE

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:

- *\[option\]package*

  in which you can only specify one option;

- *option1:option2:...:package*

  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.**

## BOUNDING BOX

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:

- *dvips*

  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.

- *gs*

  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.

- *a,b,c,d*

  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).

## FILES

*/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* !

## SEE ALSO

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

The Sourceforge project page at:

*http://sourceforce.net/projects/fig2ps*

## AUTHOR

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...

## BUG REPORT AND FEATURE REQUESTS

Please use the tracker from the Sourceforge project page:

*https://sourceforge.net/tracker/?group\_id=125824*
