An alternative approach to complexity management, particularly when
constructing tables, setting mathematics, or drawing diagrams, lies in
preprocessing. A preprocessor employs a domian-specific language
to ease the generation of tables, equations, and so forth in terms that
are convenient for human entry. Each preprocessor reads a document and
translates the parts of it that apply to it into GNU troff input.
Command-line options to groff tell it which preprocessors to
use.
groff provides preprocessors for laying out tables
(gtbl), typesetting equations (geqn), drawing
diagrams (gpic and ggrn), inserting bibliographic
references (grefer), and drawing chemical structures
(gchem). An associated program that is useful when dealing
with preprocessors is gsoelim.1
groff also supports grap, a preprocessor for drawing
graphs. A free implementation of it can be obtained separately.
Unique to groff is the preconv preprocessor that enables
groff to handle documents in a variety of input encodings.
Other preprocessors exist, but no free implementations
are known. An example is ideal, which draws diagrams using a
mathematical constraint language.