How To Use GPPWith La Te X
XT -- A Bundle of Program Transformation Tools
Task
How to use pretty-printed documents in LaTeX.
Description
The back-end
abox2latex produces LaTeX code according to the formatting defined in a
Box term. In order to process this LaTeX code by latex, the `boxenv' style file is required.
The location of this style file depends on your
GPP installation but
abox2latex includes a comment section in the generated LaTeX code that tells you where to find the style file.
A generated LaTeX file can be incorporated in a larger LaTeX document as follows:
- Determine the location of the boxenv style file by inspecting the comments at the beginning of example.tex.
- Add this location to your TEXINPUTS environment variable.
- Add `\usepackage{boxenv}' to the preamble of main.tex.
- Import the generated LaTeX file using `\input'.
- Process the file by latex.
The paper
A LaTeX Style File For Formatting BOX Expressions
contains detailed information about the boxenv style file and its use.
Changing Fonts
You can change how text is displayed by LaTeX by redefining macros in a configuration file 'box-fonts.def'. The following macros can be defined:
- KWf:
- Defines how keywords are formatted (default '\textbf{...}')
- VARf:
- Defines how variables are formatted (default '\textit{...}')
- NUMf:
- Defines how numbers are formatted (default '\textrm{...}')
- MATHf:
- Defines how mathematical symbols are formatted (default '\ensuremath{...}')
- COMMF:
- Defines how to comments are formatted (default '\textrm{...}')
Changing Synbols
You can instruct
abox2latex to map symbols in an abox term to special LaTeX symbols. To that end, you create an abbreviations table containing mappings from
Box symbols to LaTeX symbols, and pass that table to
abox2latex with the '-t' switch. For example,
abox2latex uses the following default abbreviations table:
[
["->" , "\\ensuremath{\\rightarrow}"],
[ "\\/" , "\\ensuremath{\\vee}"],
[ "/\\" , "\\ensuremath{\\wedge}"],
[ "==" , "\\ensuremath{\\equiv}"],
[ "++" , "\\ensuremath{+\\kern-.4em+}"]
]
Examples
The location of boxenv.sty can be appended to your TEXINPUTS environment variable as follows:
For Bourne shells
# TEXINPUTS=<boxenv.sty location>:${TEXINPUTS}; export TEXINPUTS
For C shells
# set TEXINPUTS=<boxenv.sty location>:${TEXINPUTS}; setenv TEXINPUTS
Assuming that the generated LaTeX code is stored in the file example.tex, then a typical LaTeX document that includes the file example.tex looks like:
\documentstyle{article}
\usepackage{boxenv}
\begin{document}
\input{example.tex}
\enddocument}
Layout Preserving Pretty-Printing with GPP
Abox2latex can be used for layout preserving pretty-printing. To that end, you have to produce an abox term with
asfix2abox? and pass it the '-c' switch to preserve layout in the
Box expression. Then you use
abox2latex with the '--alltt' switch to produce a LaTeX alltt environment:
asfix2abox -c -i <your_file>.asfix \
abox2latex --alltt -o <your_file>.tex
Then you include the 'alltt' and 'boxenv' style files in your document, and input '<your_file>.tex:
\documentclass{article}
\usepackage{alltt}
\usepackage{boxenv}
\begin{document}
\input{<your_file>.tex}
\end{document}
See Also
GenericPrettyPrinter,
HowToPrettyPrintAGrammar,
AboxToLaTex