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.