-.\" $Id: eqn.7,v 1.17 2011/07/22 14:55:07 kristaps Exp $
+.\" $Id: eqn.7,v 1.29 2013/07/13 19:41:16 schwarze Exp $
.\"
.\" Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
.\"
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: July 22 2011 $
+.Dd $Mdocdate: July 13 2013 $
.Dt EQN 7
.Os
.Sh NAME
.Sh DESCRIPTION
The
.Nm eqn
-language is a equation-formatting language.
+language is an equation-formatting language.
It is used within
.Xr mdoc 7
and
.Xr man 7
.Ux
manual pages.
-This manual describes the subset of the
+It describes the
+.Em structure
+of an equation, not its mathematical meaning.
+This manual describes the
.Nm
language accepted by the
.Xr mandoc 1
-utility.
+utility, which corresponds to the Second Edition eqn specification (see
+.Sx SEE ALSO
+for references).
.Pp
Equations within
.Xr mdoc 7
.Bd -literal -offset indent
eqn : box | eqn box
box : text
- | "{" eqn "}"
- | "define" text text
- | "gsize" text
- | "set" text text
- | "undef" text
+ | \*q{\*q eqn \*q}\*q
+ | \*qdefine\*q text text
+ | \*qndefine\*q text text
+ | \*qtdefine\*q text text
+ | \*qgfont\*q text
+ | \*qgsize\*q text
+ | \*qset\*q text text
+ | \*qundef\*q text
| box pos box
| box mark
- | pile "{" list "}"
+ | \*qmatrix\*q \*q{\*q [col \*q{\*q list \*q}\*q ]*
+ | pile \*q{\*q list \*q}\*q
| font box
- | "size" text box
- | "left" text eqn ["right" text]
-text : TEXT
-pile : "lpile" | "cpile" | "rpile"
-pos : "over" | "sup" | "sub" | "to" | "from"
-mark : "dot" | "dotdot" | "hat" | "tilde" | "vec"
- | "dyad" | "bar" | "under"
-font : "roman" | "italic" | "bold"
-list : eqn
- | list "above" eqn
+ | \*qsize\*q text box
+ | \*qleft\*q text eqn [\*qright\*q text]
+col : \*qlcol\*q | \*qrcol\*q | \*qccol\*q | \*qcol\*q
+text : [^space\e\*q]+ | \e\*q.*\e\*q
+pile : \*qlpile\*q | \*qcpile\*q | \*qrpile\*q | \*qpile\*q
+pos : \*qover\*q | \*qsup\*q | \*qsub\*q | \*qto\*q | \*qfrom\*q
+mark : \*qdot\*q | \*qdotdot\*q | \*qhat\*q | \*qtilde\*q | \*qvec\*q
+ | \*qdyad\*q | \*qbar\*q | \*qunder\*q
+font : \*qroman\*q | \*qitalic\*q | \*qbold\*q | \*qfat\*q
+list : eqn
+ | list \*qabove\*q eqn
+space : [\e^~ \et]
.Ed
.Pp
-Data in TEXT form is a non-empty sequence of non-space characters or a
-non-empty quoted string.
-Unless within a quoted string, white-space (and enclosing literal quote
-pairs) is thrown away.
-Quoted strings are not scanned for replacement definitions.
+White-space consists of the space, tab, circumflex, and tilde
+characters.
+If within a quoted string, these space characters are retained.
+Quoted strings are also not scanned for replacement definitions.
.Pp
-The following TEXT terms are translated into a rendered glyph, if
+The following text terms are translated into a rendered glyph, if
available: alpha, beta, chi, delta, epsilon, eta, gamma, iota, kappa,
lambda, mu, nu, omega, omicron, phi, pi, psi, rho, sigma, tau, theta,
upsilon, xi, zeta, DELTA, GAMMA, LAMBDA, OMEGA, PHI, PI, PSI, SIGMA,
The following control statements are available:
.Bl -tag -width Ds
.It Cm define
-Replace all occurances of a key with a value.
+Replace all occurrences of a key with a value.
Its syntax is as follows:
.Pp
.D1 define Ar key cvalc
.D1 define Ar foo cbar bazc
.Pp
It is an error to have an empty
-.Ar key or
+.Ar key
+or
.Ar val .
Note that a quoted
.Ar key
.Ed
.Pp
Self-referencing definitions will raise an error.
+The
+.Cm ndefine
+statement is a synonym for
+.Cm define ,
+while
+.Cm tdefine
+is discarded.
+.It Cm gfont
+Set the default font of subsequent output.
+Its syntax is as follows:
+.Pp
+.D1 gfont Ar font
+.Pp
+In mandoc, this value is discarded.
.It Cm gsize
Set the default size of subsequent output.
Its syntax is as follows:
.Pp
-.D1 define Ar size
+.D1 gsize Ar size
.Pp
The
.Ar size
value should be an integer.
.It Cm set
Set an equation mode.
-Both arguments are thrown away.
+In mandoc, both arguments are thrown away.
Its syntax is as follows:
.Pp
.D1 set Ar key val
and
.Ar val
are not expanded for replacements.
+This statement is a GNU extension.
.It Cm undef
Unset a previously-defined key.
Its syntax is as follows:
The
.Ar key
is not expanded for replacements.
+This statement is a GNU extension.
.El
.Sh COMPATIBILITY
This section documents the compatibility of mandoc
.Sq \e\*q
is interpreted as a literal quote in troff.
In mandoc, this is interpreted as a comment.
+.It
+In troff, The circumflex and tilde white-space symbols map to
+fixed-width spaces.
+In mandoc, these characters are synonyms for the space character.
+.It
+The troff implementation of
+.Nm
+allows for equation alignment with the
+.Cm mark
+and
+.Cm lineup
+tokens.
+mandoc discards these tokens.
+The
+.Cm back Ar n ,
+.Cm fwd Ar n ,
+.Cm up Ar n ,
+and
+.Cm down Ar n
+commands are also ignored.
.El
.Sh SEE ALSO
.Xr mandoc 1 ,
This
.Nm
reference was written by
-.An Kristaps Dzonsons Aq kristaps@bsd.lv .
+.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .