eqn is a preprocessor designed to facilitate the typesetting of mathematical equations. Use neqn with nroff. eqn has the following command-line syntax:
eqn [options] [files]
The canonical reference for eqn is Typesetting Mathematics--User's Guide, by L.L. Cherry and B.W. Kernighan, in UNIX Programmer's Manual, Tenth Edition, Volume 2, AT&T Bell Laboratories, M.D. McIlroy and A.G. Hume editors, Holt Rinehart & Winston, 1990. This paper may be downloaded from http://cm.bell-labs.com/cm/cs/doc/74/eqn.ps.gz.
| .EQ | Start typesetting mathematics. |
| .EN | End typesetting mathematics. |
Use the checkeq command to check for unmatched macro pairs. (Not all systems have it, though.)
The character sequences below are recognized and translated as shown:
| Character | Translation | Character | Translation |
|---|---|---|---|
| >= | ![]() | approx | ![]() |
| <= | ![]() | nothing | |
| == | ![]() | cdot | . |
| != | ![]() | times | × |
| +- | ± | del | ![]() |
| -> | ![]() | grad | ![]() |
| <- | ![]() | ... | ... |
| << | ![]() | ,..., | ,..., |
| >> | ![]() | sum | ![]() |
| inf | ![]() | int | ![]() |
| partial | ![]() | prod | ![]() |
| half | ½ | union | ![]() |
| prime | ![]() | inter | ![]() |
Digits, parentheses, brackets, punctuation marks, and the following mathematical words are printed out in roman font:
| sin | cos | tan | arc |
| sinh | cosh | tanh | |
| and | if | for | det |
| max | min | lim | |
| log | ln | exp | |
| Re | Im |
Greek letters can be printed in uppercase or lowercase. To obtain Greek letters, simply spell them out. Some uppercase Greek letters are not supported because they can be specified by a roman equivalent (e.g, A for alpha, B for beta).
| Name | Character | Name | Character |
|---|---|---|---|
| alpha | ![]() | tau | ![]() |
| beta | ![]() | upsilon | ![]() |
| gamma | ![]() | phi | ![]() |
| delta | ![]() | chi | ![]() |
| epsilon | ![]() | psi | ![]() |
| zeta | ![]() | omega | ![]() |
| eta | ![]() | GAMMA | ![]() |
| theta | ![]() | DELTA | ![]() |
| iota | ![]() | THETA | ![]() |
| kappa | ![]() | LAMBDA | ![]() |
| lambda | ![]() | XI | ![]() |
| mu | ![]() | PI | ![]() |
| nu | ![]() | SIGMA | ![]() |
| xi | ![]() | UPSILON | ![]() |
| omicron | ![]() | PHI | ![]() |
| pi | ![]() | PSI | ![]() |
| rho | ![]() | OMEGA | ![]() |
| sigma | ![]() |
Several keywords are available to mark the tops of characters. eqn centers a mark at the correct height. bar and under span the necessary length.
| Character | Translation |
|---|---|
| x dot | ![]() |
| x dotdot | ![]() |
| x hat | ![]() |
| x tilde | ![]() |
| x vec | ![]() |
| x dyad | ![]() |
| x bar | ![]() |
| x under | ![]() |
In addition to character names and diacritical marks, eqn recognizes the following keywords.
| above | Separate the pieces of a pile or matrix column. |
| back n | Move backwards horizontally n 1/100s of an em. |
| bold | Change to bold font. |
| ccol | Center-align a column of a matrix. |
| cpile | Make a centered pile (same as pile). |
| define | Create a name for a frequently used string. |
| delim xy | Define two characters to mark the left and right ends of an eqn equation to be printed inline. Use delim off to turn off delimiters. |
| down n | Move down n 1/100s of an em. |
| fat | Widen the current font by overstriking it. |
| font x | Change to font x, where x is the name or number of a font. |
| from | Used in summations, integrals, and similar constructions to signify the lower limit. |
| fwd n | Move forward horizontally n 1/100s of an em. |
| gfont x | Set a global font x for all equations. |
| gsize n | Set a global size for all equations. |
| italic | Change to italic font. |
| lcol | Left-justify a column of a matrix. |
| left | Create big brackets, big braces, big bars, etc. |
| lineup | Line up marks in equations on different lines. |
| lpile | Left-justify the elements of a pile. |
| mark | Remember the horizontal position in an equation. Used with lineup. |
| matrix | Create a matrix. |
| ndefine | Create a definition that takes effect only when neqn is running. |
| over | Make a fraction. |
| pile | Make a vertical pile with elements centered above each other. |
| rcol | Right-adjust a column of a matrix. |
| right | Create big brackets, big braces, big bars, etc. Must have a matching left. |
| roman | Set following constant in roman. |
| rpile | Right-justify the elements of a pile. |
| size n | Change the size of the font to n. |
| sqrt | Take the square root of the following equation element. |
| sub | Start a subscript. |
| sup | Start a superscript. |
| tdefine | Make a definition that applies only to eqn. |
| to | Used in summations, integrals, and similar constructions to signify the upper limit. |
| up n | Move up n 1/100s of an em. |
| ~ | Force extra space into the output. |
| ^ | Force a space one-half the size of the space forced by ~. |
| { } | Force eqn to treat an element as a unit. |
| "..." | A string within quotes is not subject to alterations by eqn. |
If you don't use braces, eqn performs operations in the order shown in this list, reading from left to right.
| dyad | vec | under | bar |
| tilde | hat | dot | dotdot |
| fwd | back | down | up |
| fat | roman | italic | bold |
| size | sub | sup | sqrt |
| over | from | to |
These operations group to the left:
| over | sqrt | left | right |
All others group to the right.
eqn defines a language for writing mathematics. Thus, there is a grammar with rules about how to group and order items within the equation. See the Bell Labs memorandum for the full story.
Input:
.EQ
delim %%
.EN
%sum from i=0 to inf c sup i~=~lim from {m -> inf}
sum from i=0 to m c sup i%
.EQ
delim off
.EN
Result:

Input:
.EQ
x ~=~ left [ { -b ~+-~ sqrt {b sup 2 - ~4ac} }
over 2a right ]
.EN
Copyright © 2003 O'Reilly & Associates. All rights reserved.