groff: Preprocessor Intro
1.5 Preprocessors
=================
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 that 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 use.
'groff' currently has preprocessors for producing tables ('tbl'),
typesetting equations ('eqn'), drawing pictures ('pic' and 'grn'),
processing bibliographies ('refer'), and drawing chemical structures
('chem'). An associated program that 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.
Unique to 'groff' is the 'preconv' preprocessor that enables 'groff'
to handle documents in various input encodings.
There are other preprocessors in existence, but, unfortunately, no
free implementations are available. Among them is a preprocessor for
drawing mathematical pictures ('ideal').