lgrind(1) | General Commands Manual | lgrind(1) |
lgrind - grind nice program listings using LaTeX
This man page is not yet much outdated, but might be soon except somebody asks me to work on it. Consider the LaTeX docs the real docs.
lgrind [ -e ] [ -i ] [ - ] [ -n ] [ -c ] [ -t <width> ] [ -h <header> ] [ -d <description file> ] [ -l<language> ] [ -s ] <name> ...
LGrind formats program sources in a nice style using LaTeX(1). Comments are placed in roman, keywords in bold face, variables in italics, and strings in typewriter font. Source file line numbers appear in the right margin (every 10 lines).
LGrind processes its input file(s) and writes the result to standard output. This output can be saved for later editing, inclusion in a larger document, etc.
The options are:
If LGrind is called without parameters, a help screen will be shown. If neither -e nor -i are specified, a complete LaTeX file is produced. When no language is specified, LGrind tries to find out the language used itself; C is used when this fails.
For example, to include a C file named foo.c into your LaTeX document, first give the command:
This will generate foo.tex, which will have the pretty-printed version of foo.c with a lot of LaTeX commands.
Then include lgrind.sty as you include any other style, namely with the \usepackage{lgrind} line at the beginning of your LaTeX document. Having done this, within the document you can include foo.tex using one of the following commands:
To produce a standalone LaTeX file from, say, a Yacc file:
For a more detailed explanation of these commands, refer to /usr/TeX/texmf/doc/latex/lgrind.dvi.
(From Jerry Leichter's notes.)
Within the text of your LaTeX file, you mark groups of lines as either text- or display-style program code:
Text style:
The expression | |
%( | |
a + 3 | |
%) | |
produces 10. |
The same effect can be achieved with inline @'s.
The expression @a + 3@ produces 10. |
Display style:
The statement | |
%[ | |
a += 3; | |
%] | |
is an example of an incrementing operator. |
The statement | |
a += 3; | |
is an example of an incrementing operator. |
Important rules:
You can insert your own code by using a line starting with %= in the program text. Whatever you enter after that is left in the output, exactly as you typed it. It will be executed in a strange environment, so doing anything fancy is very tricky. A macro, \Line, is provided to help you do simple things. For example,
%[ |
%=\Line{________\vdots} |
a = 1; |
%] |
. |
. |
. |
a = 1; |
(Within the program text, _ is active and expands to a fixed-width space. A whole bunch of macros are also defined. If you understand how LGrind sets lines up, you can replace the 8 _'s with a call to \Tab — but I'll let you hang yourself on that one.)
The output of LGrind always contains exactly one output line for each input line. Hence, you can look up line numbers in TeX error messages in your original file, rather than in the lgrind'ed (lground?) file. (Of course, if the problem is in the LGrind output....)
Many things are controllable by re-defining various macros. You can change what fonts LGrind will use for various kinds of things, how much it indents the output, whether it adds line numbers, and if so at what interval it prints them and whether it sticks them on the left or right, and so on. This stuff is all described in lgrind.dvi, though probably not very well. The default settings produce output that looks reasonable to me, though I can't say I'm ecstatic about it. Doing a really good job would require defining some special fonts.
Van Jacobson, Lawrence Berkeley Laboratory (based on "vgrind" by Dave Presotto & William Joy of UC Berkeley), wrote it for TeX.
Jerry Leichter of Yale University modified it for LaTeX.
George V. Reilly of Brown University changed the name to lgrind, fixed up the man page, and added the program-text-within-comments and @-within-LaTeX features.
Michael Piefel of Humboldt-University Berlin adapted it to LaTeX2e and wrote decent documentation.
latex(1), tex(1), vgrind(1), lgrindef(5)
25 May 1999 | TeX/LaTeX |