Manual Reference Pages  - PIC2GRAPH (1)


pic2graph - convert a PIC diagram into a cropped image




pic2graph [ -unsafe ] [ -format fmt ] [ -eqn delim ]


Reads a PIC program as input; produces an image file (by default in Portable Network Graphics format) suitable for the Web as output. Also translates eqn(1) constructs, so it can be used for generating images of mathematical formulae.

PIC is a rather expressive graphics minilanguage suitable for producing box-and-arrow diagrams of the kind frequently used in technical papers and textbooks. The language is sufficiently flexible to be quite useful for state charts, Petri-net diagrams, flow charts, simple circuit schematics, jumper layouts, and other kinds of illustration involving repetitive uses of simple geometric forms and splines. Because PIC descriptions are procedural and object-based, they are both compact and easy to modify.

The PIC language is fully documented in Making Pictures With GNU PIC, a document which is part of the groff(1) distribution.

Your input PIC code should not be wrapped with the .PS and .PE macros that normally guard it within groff(1) macros.

The output image will be clipped to the smallest possible bounding box that contains all the black pixels. Older versions of  convert(1) will produce a black-on-white graphic; newer ones may produce a black-on-transparent graphic. By specifying command-line options to be passed to  convert(1) you can give it a border, force the background transparent, set the image’s pixel density, or perform other useful transformations.

This program uses pic(1), eqn(1), groff(1), gs(1), and the ImageMagick  convert(1) program. These programs must be installed on your system and accessible on your $PATH for pic2graph to work.


-unsafe Run pic(1) and groff(1) in the ‘unsafe’ mode enabling the PIC macro sh to execute arbitrary commands. The default is to forbid this.
-format fmt
  Specify an output format; the default is PNG (Portable Network Graphics). Any format that  convert(1) can emit is supported.
-eqn delim
  Change the fencepost characters that delimit eqn(1) directives ($ and $, by default). This option requires an argument, but an empty string is accepted as a directive to disable eqn(1) processing.
Command-line switches and arguments not listed above are passed to  convert(1).


/usr/share/groff/1.21/tmac/eqnrc The eqn(1) initialization file.


GROFF_TMPDIR The directory in which temporary files will be created. If this is not set pic2graph searches the environment variables  TMPDIR, TMP, and TEMP (in that order). Otherwise, temporary files will be created in /tmp.


Due to changes in the behavior of ImageMagick  convert(1) that are both forward and backward-incompatible, mismatches between your pic2graph and  convert(1) versions may produce zero-sized or untrimmed output images. For this version of pic2graph you will need a version of  convert(1) that supports the -trim option; older versions of pic2graph used -crop~0x0, which no longer has trimming behavior.


eqn2graph(1), grap2graph(1), pic(1), eqn(1), groff(1), gs(1),  convert(1).


Eric S. Raymond <>, based on a recipe by W. Richard Stevens.

Groff Version 1.21 PIC2GRAPH (1) 31 December 2010
blog comments powered by Disqus