eqn(1) - Plan 9 from User Space

| EQN(1) | EQN(1)
| delim $$
NAME
| eqn – typeset mathematics
SYNOPSIS
| `eqn` [ option ... ] [ file ... ]
DESCRIPTION
| Eqn is a troff(1) preprocessor for typesetting mathematics on a typesetter. Usage is almost always
| `eqn file ... | troff
`
If no files are specified, eqn reads from the standard input. Eqn prepares output for the typesetter named in the `−T`dest option (default `−Tutf`; see troff(1)). When run with other preprocessor filters, eqn usually comes last.
A line beginning with `.EQ` marks the start of an equation; the end of an equation is marked by a line beginning with `.EN`. Neither of these lines is altered, so they may be defined in macro packages to get centering, numbering, etc. It is also possible to set two characters as ‘delimiters’; text between delimiters is also eqn input. Delimiters may be set to characters x and y with the option `−d`xy or (more commonly) with `delim` xy between `.EQ` and `.EN`. Left and right delimiters may be identical. (They are customarily taken to be $font L "$$" )$. Delimiters are turned off by `delim off`. All text that is neither between delimiters nor between `.EQ` and `.EN` is passed through untouched.
Tokens within eqn are separated by spaces, tabs, newlines, braces, double quotes, tildes or circumflexes. Braces {} are used for grouping; generally speaking, anywhere a single character like `x` could appear, a complicated construction enclosed in braces may be used instead. Tilde `~` represents a full space in the output, circumflex `^` half as much.
Subscripts and superscripts are produced with the keywords `sub` and `sup`. Thus `x sub i` makes $x sub i$, `a sub i sup 2` produces $a sub i sup 2$, and `e sup {x sup 2 + y sup 2}` gives $e sup {x sup 2 + y sup 2}$.
`Over` makes fractions: `a over b` yields $a over b$.
`Sqrt` produces square roots: `1 over sqrt {ax sup 2 +bx+c}` results in $1 over sqrt {ax sup 2 +bx+c}$ .
The keywords `from` and `to` introduce lower and upper limits on arbitrary things: $lim from {n -> inf} sum from 0 to n x sub i$ is made with `lim from {n −> inf} sum from 0 to n x sub i`.
Left and right brackets, braces, etc., of the right height are made with `left` and `right`: `left [ x sup 2 + y sup 2 over alpha right ] ~=~1` produces $left [ x sup 2 + y sup 2 over alpha right ] ~=~1$. The `right` clause is optional. Legal characters after `left` and `right` are braces, brackets, bars, `c` and `f` for ceiling and floor, and `""` for nothing at all (useful for a right-side-only bracket).
Vertical piles of things are made with `pile`, `lpile`, `cpile`, and `rpile`: `pile {a above b above c}` produces $pile {a above b above c}$. There can be an arbitrary number of elements in a pile. `lpile` left-justifies, `pile` and `cpile` center, with different vertical spacing, and `rpile` right justifies.
Matrices are made with `matrix`: `matrix { lcol { x sub i above y sub 2 } ccol { 1 above 2 } }` produces $matrix { lcol { x sub i above y sub 2 } ccol { 1 above 2 } }$. In addition, there is `rcol` for a right-justified column.
Diacritical marks are made with `prime`, `dot`, `dotdot`, `hat`, `tilde`, `bar`, `under`, `vec`, `dyad`, and `under`: `x sub 0 sup prime = f(t) bar + g(t) under` is $x sub 0 sup prime = f(t) bar + g(t) under$, and `x vec = y dyad` is $x vec = y dyad$.
Sizes and fonts can be changed with prefix operators `size` n, `size ±`n, `fat`, `roman`, `italic`, `bold`, or `font` n. Size and fonts can be changed globally in a document by `gsize` n and `gfont` n, or by the command-line arguments `−s`n and `−f`n.
Normally subscripts and superscripts are reduced by 3 point sizes from the previous size; this may be changed by the command-line argument `−p`n.
Successive display arguments can be lined up. Place `mark` before the desired lineup point in the first equation; place `lineup` at the place that is to line up vertically in subsequent equations.
Shorthands may be defined or existing keywords redefined with `define`: `define` thing `%` replacement `%` defines a new token called thing which will be replaced by replacement whenever it appears thereafter. The `%` may be any character that does not occur in `replacement`.
Keywords like `sum` ( sum ), `int` ( int ), `inf` ( inf ), and shorthands like `>=` (>=), `−>` (->), and `!=` ( != ) are recognized. Greek letters are spelled out in the desired case, as in `alpha` or `GAMMA`. Mathematical words like `sin`, `cos`, `log` are made Roman automatically. Troff(1) four-character escapes like `\(lh` (<=) can be used anywhere. Strings enclosed in double quotes " " are passed through untouched; this permits keywords to be entered as text, and can be used to communicate with troff when all else fails.
FILES
| `/sys/lib/troff/font/devutf` font descriptions for PostScript
SOURCE
| `/usr/lib/plan9/src/cmd/eqn`
SEE ALSO
| troff(1), tbl(1) J. F. Ossanna and B. W. Kernighan, “Troff User’s Manual”. B. W. Kernighan and L. L. Cherry, “Typesetting Mathematics--User’s Guide”, Unix Research System Programmer’s Manual, Tenth Edition, Volume 2.
BUGS
| To embolden digits, parens, etc., it is necessary to quote them, as in `bold "12.3"`. delim off