Although `groff' provides most functions needed to format a document,
some operations would be unwieldy (e.g. to draw pictures). Therefore,
programs called "preprocessors" were written which understand their own
language and produce the necessary `groff' operations. These
preprocessors are able to differentiate their own input from the rest
of the document via markers.
To use a preprocessor, UNIX pipes are used to feed the output from
the preprocessor into `groff'. Any number of preprocessors may be used
on a given document; in this case, the preprocessors are linked
together into one pipeline. However, with `groff', the user does not
need to construct the pipe, but only tell `groff' what preprocessors to
`groff' currently has preprocessors for producing tables (`tbl'),
typesetting equations (`eqn'), drawing pictures (`pic' and `grn'), and
for processing bibliographies (`refer'). An associated program which
is useful when dealing with preprocessors is `soelim'.
A free implementation of `grap', a preprocessor for drawing graphs,
can be obtained as an extra package; `groff' can use `grap' also.
There are other preprocessors in existence, but, unfortunately, no
free implementations are available. Among them are preprocessors for
drawing mathematical pictures (`ideal') and chemical structures
automatically generated by info2www version 220.127.116.11