Following the conversion of a YODL text, most target-languages require an
additional operation, called `post-processing'. Post-processing is required
for various reasons: to split the output in separate files (HTML, XML); to
fixup the locations of labels, that are referred to earlier than the labels
are defined (virtually all target language except LaTeX); tables of contents
are available only after the conversion, but will have to be inserted at the
beginning of the document; etc. etc..

Starting with YODL V. 2.00 there is only one post-processor, handling all
the conversions for all target languages. Program maintenance of just one
program is certainly easier than maintenance of as many programs as there are
target-languages, at the expense of only a slightly larger program: after all,
the one post-processor contains the conversion procedures for all target
languages. It turns out that this is a very minimal drawback. See section
ref(POSTPROCESSOR) for the technical details of post-processor program
maintenance. 

The post-processor that is distributed since YODL V. 2.00 does em(not) use the
tt(.YODLTAGSTART.) and tt(.YODLTAGEND.) tags anymore. Instead, the conversion
process produces a em(index file) in which comparable information is
written. The advantage of using an index file is that the postprocessor
doesn't have to parse the output file generated by YODL twice (once to
determine the tags, once to process the tags), which by itself accelerates the
conversion process; and (albeit of a somewhat limited practical importance)
that the tags are no longer em(reserved words): authors may put
tt(.YODLTAGSTART.) and tt(.YODLTAGEND.) into their texts as often as they
want. 

Authors should be aware of some caveats with respect to some target languages:
    description(
    dit(man- and ms- conversions) all dots are converted by the active
character conversion table to tt(\&.). Commands in these languages always
start with a dot as the first character on a line. In order to insert these
commands the tt(roffcmd()) (see section tt(MACROLIST)) should be used.
    dit(plain text conversions) As stated before, the ASCII converter
basically only strips macronames from its input. This converter is so basic,
that it should only be used as a last
resort, when no other target language is available for the job.
        nl()
    With the plain text converer, the layout of the input file is very
important, as the output is basically the same as the input. The only
exception to this rule are multiple empty lines, which normally are consumed
by the post-processor, to be replaced by one single empty line.
    dit(sgml conversions) the SGML converter was implemented for historic
reasons. It is by no means complete, and can at best be considered an `initial
starting point'. Currently, the SGML converter only supports the tt(article)
document type, having tt(sect) as its top-level sectioning command.
    dit(xml conversions) The XML converter was implemented to allow me
(Frank) to produce XML text as defined by the so-called `webplatform' of the
University of Groningen. A completely pathological implementation of XML,
crippling its users to the level of the `double click brigade'. Well, so be
it. The net result of this is that YODL now offers some sort of XML
conversion, which will surely require modifications in the near future. Much
XML handling is based on frame-files which are literally inserted into the
converted text. Hopefully that will be useful when constructing XML
conversions for other environments than the `webplatform'.
    )
