1 .\" Id: eqn.7,v 1.29 2013/07/13 19:41:16 schwarze Exp
3 .\" Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 .Nd eqn language reference for mandoc
26 language is an equation-formatting language.
35 of an equation, not its mathematical meaning.
36 This manual describes the
38 language accepted by the
40 utility, which corresponds to the Second Edition eqn specification (see
48 documents are enclosed by the standalone
53 Equations are multi-line blocks consisting of formulas and control
55 .Sh EQUATION STRUCTURE
56 Each equation is bracketed by
62 these are not the same as
64 macros, and may only be invoked as
67 The equation grammar is as follows, where quoted strings are
68 case-sensitive literals in the input:
69 .Bd -literal -offset indent
73 | \*qdefine\*q text text
74 | \*qndefine\*q text text
75 | \*qtdefine\*q text text
82 | \*qmatrix\*q \*q{\*q [col \*q{\*q list \*q}\*q ]*
83 | pile \*q{\*q list \*q}\*q
86 | \*qleft\*q text eqn [\*qright\*q text]
87 col : \*qlcol\*q | \*qrcol\*q | \*qccol\*q | \*qcol\*q
88 text : [^space\e\*q]+ | \e\*q.*\e\*q
89 pile : \*qlpile\*q | \*qcpile\*q | \*qrpile\*q | \*qpile\*q
90 pos : \*qover\*q | \*qsup\*q | \*qsub\*q | \*qto\*q | \*qfrom\*q
91 mark : \*qdot\*q | \*qdotdot\*q | \*qhat\*q | \*qtilde\*q | \*qvec\*q
92 | \*qdyad\*q | \*qbar\*q | \*qunder\*q
93 font : \*qroman\*q | \*qitalic\*q | \*qbold\*q | \*qfat\*q
95 | list \*qabove\*q eqn
99 White-space consists of the space, tab, circumflex, and tilde
101 If within a quoted string, these space characters are retained.
102 Quoted strings are also not scanned for replacement definitions.
104 The following text terms are translated into a rendered glyph, if
105 available: alpha, beta, chi, delta, epsilon, eta, gamma, iota, kappa,
106 lambda, mu, nu, omega, omicron, phi, pi, psi, rho, sigma, tau, theta,
107 upsilon, xi, zeta, DELTA, GAMMA, LAMBDA, OMEGA, PHI, PI, PSI, SIGMA,
108 THETA, UPSILON, XI, inter (intersection), union (union), prod (product),
109 int (integral), sum (summation), grad (gradient), del (vector
110 differential), times (multiply), cdot (centre-dot), nothing (zero-width
111 space), approx (approximately equals), prime (prime), half (one-half),
112 partial (partial differential), inf (infinity), >> (much greater), <<
113 (much less), \-> (left arrow), <\- (right arrow), += (plus-minus), !=
114 (not equal), == (equivalence), <= (less-than-equal), and >=
117 The following control statements are available:
120 Replace all occurrences of a key with a value.
121 Its syntax is as follows:
123 .D1 define Ar key cvalc
125 The first character of the value string,
127 is used as the delimiter for the value
129 This allows for arbitrary enclosure of terms (not just quotes), such as
131 .D1 define Ar foo 'bar baz'
132 .D1 define Ar foo cbar bazc
134 It is an error to have an empty
140 causes errors in some
142 implementations and should not be considered portable.
143 It is not expanded for replacements.
144 Definitions may refer to other definitions; these are evaluated
145 recursively when text replacement occurs and not when the definition is
148 Definitions can create arbitrary strings, for example, the following is
149 a legal construction.
150 .Bd -literal -offset indent
155 Self-referencing definitions will raise an error.
158 statement is a synonym for
164 Set the default font of subsequent output.
165 Its syntax is as follows:
169 In mandoc, this value is discarded.
171 Set the default size of subsequent output.
172 Its syntax is as follows:
178 value should be an integer.
180 Set an equation mode.
181 In mandoc, both arguments are thrown away.
182 Its syntax is as follows:
190 are not expanded for replacements.
191 This statement is a GNU extension.
193 Unset a previously-defined key.
194 Its syntax is as follows:
198 Once invoked, the definition for
203 is not expanded for replacements.
204 This statement is a GNU extension.
207 This section documents the compatibility of mandoc
211 implementation (including GNU troff).
217 is interpreted as a literal quote in troff.
218 In mandoc, this is interpreted as a comment.
220 In troff, The circumflex and tilde white-space symbols map to
222 In mandoc, these characters are synonyms for the space character.
224 The troff implementation of
226 allows for equation alignment with the
231 mandoc discards these tokens.
238 commands are also ignored.
247 .%A Brian W. Kernighan
248 .%A Lorinda L. Cherry
249 .%T System for Typesetting Mathematics
250 .%J Communications of the ACM
256 .%A Brian W. Kernighan
257 .%A Lorinda L. Cherry
258 .%T Typesetting Mathematics, User's Guide
262 .%A Brian W. Kernighan
263 .%A Lorinda L. Cherry
264 .%T Typesetting Mathematics, User's Guide (Second Edition)
268 The eqn utility, a preprocessor for troff, was originally written by
269 Brian W. Kernighan and Lorinda L. Cherry in 1975.
270 The GNU reimplementation of eqn, part of the GNU troff package, was
271 released in 1989 by James Clark.
278 reference was written by
279 .An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .