@Section
   @Tag { backend }
   @Title { "@BackEnd" and the PlainText and PDF back ends }
@Begin
@PP
backend.sym @Index { @@BackEnd symbol }
The @@BackEnd symbol, which takes no parameters, has for its result a
string naming the back end currently in use.  Three back ends are available,
PostScript, PDF and PlainText.  The symbol is generally used like this:
@ID @Code {
"@BackEnd @Case {"
"    PlainText @Yield { ... }"
"    PostScript @Yield { ... }"
"    PDF @Yield { ... }"
"}"
}
to obtain different objects depending on the back end.  No @Code else
is required since these are the only possible values.
@PP
When a @Code "@Case" symbol has @Code "@BackEnd" for its left parameter
and the left parameter of each @Code "@Yield" symbol within it consists
of a sequence of one or more literal words (including {@Code else}), Lout
will optimize by evaluating the @Code "@Case" symbol at the time it is
read.  This optimization ensures that there is only a small once-only
performance penalty for multiple back ends, and it permits these
@Code "@Case" symbols (but no other symbols) to appear within the object
following @Code "@Include" and @Code "@PrependGraphic" symbols.
@PP
The PlainText back end differs from the PostScript one in two main
respects.  First, there is effectively just one font:  although all
the font commands work exactly as usual, they don't actually change
anything.  Each character in this font is taken to be one tenth
of one inch wide and 20 points high.  Second, the output is an
ordinary text file, not a PostScript file.
@PP
Clearly, with ordinary text output the possibility of advanced graphics
features such as rotation and scaling is curtailed.  Nevertheless, all
symbols have well-defined (possibly null) effects in the PlainText
back end, so there is no additional danger of crashing the system or
obtaining grossly unreasonable output by a change to PlainText.
@PP
The PlainText back end is obtained by the @Code "-p" option to Basser
Lout.  The character size can be changed by adding two lengths to
the @Code "-p" option, like this:
@ID @Code "lout -p0.1i12p ..."
which invokes the PlainText back end with each character being 0.1
inches wide and 12 points high.  However, experience suggests that
the best approach is to define all horizontal lengths as multiples of
the @Code "s" unit (the width of a space, hence the width of all
characters) and to define all vertical lengths as multiples of the
@Code "f" unit (the font size, equal to the height of every character),
and not to change the character size in the command line.
@PP
There is a @Code "-P" option which is identical with the @Code "-p"
option except that it inserts a form-feed character between each two
components of the output, but not before the first or after the last.
@PP
The PDF back end is obtained by typing {@Code "lout -Z"}.  It is similar
to PostScript but much more limited in functionality.  Consult a separate
document distributed with Lout for further information.
@End @Section
