The pic language provides an easy way to write procedural box-and-arrow diagrams to be included in troff documents. 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 these descriptions are procedural and object-based, they are both compact and easy to modify.
The phrase “GNU pic” may refer to either of two pic implementations distributed by the Free Software Foundation and intended to accept the same input language. The gpic(1) implementation is for use with the groff(1) implementation of troff. The pic2plot(1) implementation runs standalone and is part of the plotutils package. Because both implementations are widely available in source form for free, they are good bets for writing very portable documentation.
The original 1984 pre-ditroff(1) version of pic is long obsolete. The rewritten 1991 version is still available as part of the Documenter’s Work Bench module of System V.
Where differences between Documenter’s Work Bench (1991) pic and GNU pic need to be described, original pic is referred to as “DWB pic”. Details on the history of the program are given at the end of this document.
The pic2plot program does not require the rest of the groff(1) toolchain to render graphics. It can display pic diagrams in a X window, or generate output plots in a large number of other formats. These formats include: PNG, PBM, PGM, PPM, GIF, SVG, Adobe Illustrator format, idraw-editable Postscript, the WebCGM format for Web-based vector graphics, the format used by the xfig drawing editor, the Hewlett-Packard PCL 5 printer language, the Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS (remote graphics instruction set) format developed by DEC, Tektronix format, and device-independent GNU graphics metafile format.
In this document, gpic(1) and pic2plot(1) extensions are marked as such.