xref: /freebsd/contrib/mandoc/eqn.7 (revision 6d38604fc532a3fc060788e3ce40464b46047eaf)
1*6d38604fSBaptiste Daroussin.\"	$Id: eqn.7,v 1.39 2020/01/10 11:55:04 schwarze Exp $
261d06d6bSBaptiste Daroussin.\"
361d06d6bSBaptiste Daroussin.\" Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
461d06d6bSBaptiste Daroussin.\" Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
561d06d6bSBaptiste Daroussin.\"
661d06d6bSBaptiste Daroussin.\" Permission to use, copy, modify, and distribute this software for any
761d06d6bSBaptiste Daroussin.\" purpose with or without fee is hereby granted, provided that the above
861d06d6bSBaptiste Daroussin.\" copyright notice and this permission notice appear in all copies.
961d06d6bSBaptiste Daroussin.\"
1061d06d6bSBaptiste Daroussin.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1161d06d6bSBaptiste Daroussin.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1261d06d6bSBaptiste Daroussin.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1361d06d6bSBaptiste Daroussin.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1461d06d6bSBaptiste Daroussin.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1561d06d6bSBaptiste Daroussin.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1661d06d6bSBaptiste Daroussin.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1761d06d6bSBaptiste Daroussin.\"
18*6d38604fSBaptiste Daroussin.Dd $Mdocdate: January 10 2020 $
1961d06d6bSBaptiste Daroussin.Dt EQN 7
2061d06d6bSBaptiste Daroussin.Os
2161d06d6bSBaptiste Daroussin.Sh NAME
2261d06d6bSBaptiste Daroussin.Nm eqn
2361d06d6bSBaptiste Daroussin.Nd eqn language reference for mandoc
2461d06d6bSBaptiste Daroussin.Sh DESCRIPTION
2561d06d6bSBaptiste DaroussinThe
2661d06d6bSBaptiste Daroussin.Nm eqn
2761d06d6bSBaptiste Daroussinlanguage is an equation-formatting language.
2861d06d6bSBaptiste DaroussinIt is used within
2961d06d6bSBaptiste Daroussin.Xr mdoc 7
3061d06d6bSBaptiste Daroussinand
3161d06d6bSBaptiste Daroussin.Xr man 7
3261d06d6bSBaptiste Daroussin.Ux
3361d06d6bSBaptiste Daroussinmanual pages.
3461d06d6bSBaptiste DaroussinIt describes the
3561d06d6bSBaptiste Daroussin.Em structure
3661d06d6bSBaptiste Daroussinof an equation, not its mathematical meaning.
3761d06d6bSBaptiste DaroussinThis manual describes the
3861d06d6bSBaptiste Daroussin.Nm
3961d06d6bSBaptiste Daroussinlanguage accepted by the
4061d06d6bSBaptiste Daroussin.Xr mandoc 1
4161d06d6bSBaptiste Daroussinutility, which corresponds to the Second Edition
4261d06d6bSBaptiste Daroussin.Nm
4361d06d6bSBaptiste Daroussinspecification (see
4461d06d6bSBaptiste Daroussin.Sx SEE ALSO
4561d06d6bSBaptiste Daroussinfor references).
4661d06d6bSBaptiste Daroussin.Pp
47*6d38604fSBaptiste DaroussinAn equation starts with an input line containing exactly the characters
48*6d38604fSBaptiste Daroussin.Sq \&.EQ ,
49*6d38604fSBaptiste Daroussinmay contain multiple input lines, and ends with an input line
50*6d38604fSBaptiste Daroussincontaining exactly the characters
51*6d38604fSBaptiste Daroussin.Sq \&.EN .
52*6d38604fSBaptiste DaroussinEquivalently, an equation can be given in the middle of a single
53*6d38604fSBaptiste Daroussintext input line by surrounding it with the equation delimiters
54*6d38604fSBaptiste Daroussindefined with the
55*6d38604fSBaptiste Daroussin.Cm delim
56*6d38604fSBaptiste Daroussinstatement.
5761d06d6bSBaptiste Daroussin.Pp
5861d06d6bSBaptiste DaroussinThe equation grammar is as follows, where quoted strings are
5961d06d6bSBaptiste Daroussincase-sensitive literals in the input:
6061d06d6bSBaptiste Daroussin.Bd -literal -offset indent
6161d06d6bSBaptiste Daroussineqn     : box | eqn box
6261d06d6bSBaptiste Daroussinbox     : text
6361d06d6bSBaptiste Daroussin        | \(dq{\(dq eqn \(dq}\(dq
6461d06d6bSBaptiste Daroussin        | \(dqdefine\(dq text text
6561d06d6bSBaptiste Daroussin        | \(dqndefine\(dq text text
6661d06d6bSBaptiste Daroussin        | \(dqtdefine\(dq text text
6761d06d6bSBaptiste Daroussin        | \(dqgfont\(dq text
6861d06d6bSBaptiste Daroussin        | \(dqgsize\(dq text
6961d06d6bSBaptiste Daroussin        | \(dqset\(dq text text
7061d06d6bSBaptiste Daroussin        | \(dqundef\(dq text
7161d06d6bSBaptiste Daroussin        | \(dqsqrt\(dq box
7261d06d6bSBaptiste Daroussin        | box pos box
7361d06d6bSBaptiste Daroussin        | box mark
7461d06d6bSBaptiste Daroussin        | \(dqmatrix\(dq \(dq{\(dq [col \(dq{\(dq list \(dq}\(dq]* \(dq}\(dq
7561d06d6bSBaptiste Daroussin        | pile \(dq{\(dq list \(dq}\(dq
7661d06d6bSBaptiste Daroussin        | font box
7761d06d6bSBaptiste Daroussin        | \(dqsize\(dq text box
7861d06d6bSBaptiste Daroussin        | \(dqleft\(dq text eqn [\(dqright\(dq text]
7961d06d6bSBaptiste Daroussincol     : \(dqlcol\(dq | \(dqrcol\(dq | \(dqccol\(dq | \(dqcol\(dq
8061d06d6bSBaptiste Daroussintext    : [^space\e\(dq]+ | \e\(dq.*\e\(dq
8161d06d6bSBaptiste Daroussinpile    : \(dqlpile\(dq | \(dqcpile\(dq | \(dqrpile\(dq | \(dqpile\(dq
8261d06d6bSBaptiste Daroussinpos     : \(dqover\(dq | \(dqsup\(dq | \(dqsub\(dq | \(dqto\(dq | \(dqfrom\(dq
8361d06d6bSBaptiste Daroussinmark	: \(dqdot\(dq | \(dqdotdot\(dq | \(dqhat\(dq | \(dqtilde\(dq | \(dqvec\(dq
8461d06d6bSBaptiste Daroussin        | \(dqdyad\(dq | \(dqbar\(dq | \(dqunder\(dq
8561d06d6bSBaptiste Daroussinfont    : \(dqroman\(dq | \(dqitalic\(dq | \(dqbold\(dq | \(dqfat\(dq
8661d06d6bSBaptiste Daroussinlist    : eqn
8761d06d6bSBaptiste Daroussin        | list \(dqabove\(dq eqn
8861d06d6bSBaptiste Daroussinspace   : [\e^~ \et]
8961d06d6bSBaptiste Daroussin.Ed
9061d06d6bSBaptiste Daroussin.Pp
9161d06d6bSBaptiste DaroussinWhite-space consists of the space, tab, circumflex, and tilde
9261d06d6bSBaptiste Daroussincharacters.
9361d06d6bSBaptiste DaroussinIt is required to delimit tokens consisting of alphabetic characters
9461d06d6bSBaptiste Daroussinand it is ignored at other places.
9561d06d6bSBaptiste DaroussinBraces and quotes also delimit tokens.
9661d06d6bSBaptiste DaroussinIf within a quoted string, these space characters are retained.
9761d06d6bSBaptiste DaroussinQuoted strings are also not scanned for keywords, glyph names,
9861d06d6bSBaptiste Daroussinand expansion of definitions.
9961d06d6bSBaptiste DaroussinTo print a literal quote character, it can be prepended with a
10061d06d6bSBaptiste Daroussinbackslash or expressed with the \e(dq escape sequence.
10161d06d6bSBaptiste Daroussin.Pp
10261d06d6bSBaptiste DaroussinSubequations can be enclosed in braces to pass them as arguments
10361d06d6bSBaptiste Daroussinto operation keywords, overriding standard operation precedence.
10461d06d6bSBaptiste DaroussinBraces can be nested.
10561d06d6bSBaptiste DaroussinTo set a brace verbatim, it needs to be enclosed in quotes.
10661d06d6bSBaptiste Daroussin.Pp
10761d06d6bSBaptiste DaroussinThe following text terms are translated into a rendered glyph, if
10861d06d6bSBaptiste Daroussinavailable: alpha, beta, chi, delta, epsilon, eta, gamma, iota, kappa,
10961d06d6bSBaptiste Daroussinlambda, mu, nu, omega, omicron, phi, pi, psi, rho, sigma, tau, theta,
11061d06d6bSBaptiste Daroussinupsilon, xi, zeta, DELTA, GAMMA, LAMBDA, OMEGA, PHI, PI, PSI, SIGMA,
11161d06d6bSBaptiste DaroussinTHETA, UPSILON, XI, inter (intersection), union (union), prod (product),
11261d06d6bSBaptiste Daroussinint (integral), sum (summation), grad (gradient), del (vector
11361d06d6bSBaptiste Daroussindifferential), times (multiply), cdot (center-dot), nothing (zero-width
11461d06d6bSBaptiste Daroussinspace), approx (approximately equals), prime (prime), half (one-half),
11561d06d6bSBaptiste Daroussinpartial (partial differential), inf (infinity), >> (much greater), <<
11661d06d6bSBaptiste Daroussin(much less), <\- (left arrow), \-> (right arrow), +\- (plus-minus), !=
11761d06d6bSBaptiste Daroussin(not equal), == (equivalence), <= (less-than-equal), and >=
11861d06d6bSBaptiste Daroussin(more-than-equal).
11961d06d6bSBaptiste DaroussinThe character escape sequences documented in
12061d06d6bSBaptiste Daroussin.Xr mandoc_char 7
12161d06d6bSBaptiste Daroussincan be used, too.
12261d06d6bSBaptiste Daroussin.Pp
12361d06d6bSBaptiste DaroussinThe following control statements are available:
12461d06d6bSBaptiste Daroussin.Bl -tag -width Ds
12561d06d6bSBaptiste Daroussin.It Cm define
12661d06d6bSBaptiste DaroussinReplace all occurrences of a key with a value.
12761d06d6bSBaptiste DaroussinIts syntax is as follows:
12861d06d6bSBaptiste Daroussin.Pp
12961d06d6bSBaptiste Daroussin.D1 Cm define Ar key cvalc
13061d06d6bSBaptiste Daroussin.Pp
13161d06d6bSBaptiste DaroussinThe first character of the value string,
13261d06d6bSBaptiste Daroussin.Ar c ,
13361d06d6bSBaptiste Daroussinis used as the delimiter for the value
13461d06d6bSBaptiste Daroussin.Ar val .
13561d06d6bSBaptiste DaroussinThis allows for arbitrary enclosure of terms (not just quotes), such as
13661d06d6bSBaptiste Daroussin.Pp
13761d06d6bSBaptiste Daroussin.D1 Cm define Ar foo \(aqbar baz\(aq
13861d06d6bSBaptiste Daroussin.D1 Cm define Ar foo cbar bazc
13961d06d6bSBaptiste Daroussin.Pp
14061d06d6bSBaptiste DaroussinIt is an error to have an empty
14161d06d6bSBaptiste Daroussin.Ar key
14261d06d6bSBaptiste Daroussinor
14361d06d6bSBaptiste Daroussin.Ar val .
14461d06d6bSBaptiste DaroussinNote that a quoted
14561d06d6bSBaptiste Daroussin.Ar key
14661d06d6bSBaptiste Daroussincauses errors in some
14761d06d6bSBaptiste Daroussin.Nm
14861d06d6bSBaptiste Daroussinimplementations and should not be considered portable.
14961d06d6bSBaptiste DaroussinIt is not expanded for replacements.
15061d06d6bSBaptiste DaroussinDefinitions may refer to other definitions; these are evaluated
15161d06d6bSBaptiste Daroussinrecursively when text replacement occurs and not when the definition is
15261d06d6bSBaptiste Daroussincreated.
15361d06d6bSBaptiste Daroussin.Pp
15461d06d6bSBaptiste DaroussinDefinitions can create arbitrary strings, for example, the following is
15561d06d6bSBaptiste Daroussina legal construction.
15661d06d6bSBaptiste Daroussin.Bd -literal -offset indent
15761d06d6bSBaptiste Daroussindefine foo \(aqdefine\(aq
15861d06d6bSBaptiste Daroussinfoo bar \(aqbaz\(aq
15961d06d6bSBaptiste Daroussin.Ed
16061d06d6bSBaptiste Daroussin.Pp
16161d06d6bSBaptiste DaroussinSelf-referencing definitions will raise an error.
16261d06d6bSBaptiste DaroussinThe
16361d06d6bSBaptiste Daroussin.Cm ndefine
16461d06d6bSBaptiste Daroussinstatement is a synonym for
16561d06d6bSBaptiste Daroussin.Cm define ,
16661d06d6bSBaptiste Daroussinwhile
16761d06d6bSBaptiste Daroussin.Cm tdefine
16861d06d6bSBaptiste Daroussinis discarded.
169*6d38604fSBaptiste Daroussin.It Cm delim
170*6d38604fSBaptiste DaroussinThis statement takes a string argument consisting of two bytes,
171*6d38604fSBaptiste Daroussinto be used as the opening and closing delimiters for equations
172*6d38604fSBaptiste Daroussinin the middle of text input lines.
173*6d38604fSBaptiste DaroussinConventionally, the dollar sign is used for both delimiters,
174*6d38604fSBaptiste Daroussinas follows:
175*6d38604fSBaptiste Daroussin.Bd -literal -offset indent
176*6d38604fSBaptiste Daroussin\&.EQ
177*6d38604fSBaptiste Daroussindelim $$
178*6d38604fSBaptiste Daroussin\&.EN
179*6d38604fSBaptiste DaroussinAn equation like $sin pi = 0$ can now be entered
180*6d38604fSBaptiste Daroussinin the middle of a text input line.
181*6d38604fSBaptiste Daroussin.Ed
182*6d38604fSBaptiste Daroussin.Pp
183*6d38604fSBaptiste DaroussinThe special statement
184*6d38604fSBaptiste Daroussin.Cm delim off
185*6d38604fSBaptiste Daroussintemporarily disables previously declared delimiters and
186*6d38604fSBaptiste Daroussin.Cm delim on
187*6d38604fSBaptiste Daroussinreenables them.
18861d06d6bSBaptiste Daroussin.It Cm gfont
18961d06d6bSBaptiste DaroussinSet the default font of subsequent output.
19061d06d6bSBaptiste DaroussinIts syntax is as follows:
19161d06d6bSBaptiste Daroussin.Pp
19261d06d6bSBaptiste Daroussin.D1 Cm gfont Ar font
19361d06d6bSBaptiste Daroussin.Pp
19461d06d6bSBaptiste DaroussinIn mandoc, this value is discarded.
19561d06d6bSBaptiste Daroussin.It Cm gsize
19661d06d6bSBaptiste DaroussinSet the default size of subsequent output.
19761d06d6bSBaptiste DaroussinIts syntax is as follows:
19861d06d6bSBaptiste Daroussin.Pp
19961d06d6bSBaptiste Daroussin.D1 Cm gsize Oo +|\- Oc Ns Ar size
20061d06d6bSBaptiste Daroussin.Pp
20161d06d6bSBaptiste DaroussinThe
20261d06d6bSBaptiste Daroussin.Ar size
20361d06d6bSBaptiste Daroussinvalue should be an integer.
20461d06d6bSBaptiste DaroussinIf prepended by a sign,
20561d06d6bSBaptiste Daroussinthe font size is changed relative to the current size.
20661d06d6bSBaptiste Daroussin.It Cm set
20761d06d6bSBaptiste DaroussinSet an equation mode.
20861d06d6bSBaptiste DaroussinIn mandoc, both arguments are thrown away.
20961d06d6bSBaptiste DaroussinIts syntax is as follows:
21061d06d6bSBaptiste Daroussin.Pp
21161d06d6bSBaptiste Daroussin.D1 Cm set Ar key val
21261d06d6bSBaptiste Daroussin.Pp
21361d06d6bSBaptiste DaroussinThe
21461d06d6bSBaptiste Daroussin.Ar key
21561d06d6bSBaptiste Daroussinand
21661d06d6bSBaptiste Daroussin.Ar val
21761d06d6bSBaptiste Daroussinare not expanded for replacements.
21861d06d6bSBaptiste DaroussinThis statement is a GNU extension.
21961d06d6bSBaptiste Daroussin.It Cm undef
22061d06d6bSBaptiste DaroussinUnset a previously-defined key.
22161d06d6bSBaptiste DaroussinIts syntax is as follows:
22261d06d6bSBaptiste Daroussin.Pp
22361d06d6bSBaptiste Daroussin.D1 Cm define Ar key
22461d06d6bSBaptiste Daroussin.Pp
22561d06d6bSBaptiste DaroussinOnce invoked, the definition for
22661d06d6bSBaptiste Daroussin.Ar key
22761d06d6bSBaptiste Daroussinis discarded.
22861d06d6bSBaptiste DaroussinThe
22961d06d6bSBaptiste Daroussin.Ar key
23061d06d6bSBaptiste Daroussinis not expanded for replacements.
23161d06d6bSBaptiste DaroussinThis statement is a GNU extension.
23261d06d6bSBaptiste Daroussin.El
23361d06d6bSBaptiste Daroussin.Pp
23461d06d6bSBaptiste DaroussinOperation keywords have the following semantics:
23561d06d6bSBaptiste Daroussin.Bl -tag -width Ds
23661d06d6bSBaptiste Daroussin.It Cm above
23761d06d6bSBaptiste DaroussinSee
23861d06d6bSBaptiste Daroussin.Cm pile .
23961d06d6bSBaptiste Daroussin.It Cm bar
24061d06d6bSBaptiste DaroussinDraw a line over the preceding box.
24161d06d6bSBaptiste Daroussin.It Cm bold
24261d06d6bSBaptiste DaroussinSet the following box using bold font.
24361d06d6bSBaptiste Daroussin.It Cm ccol
24461d06d6bSBaptiste DaroussinLike
24561d06d6bSBaptiste Daroussin.Cm cpile ,
24661d06d6bSBaptiste Daroussinbut for use in
24761d06d6bSBaptiste Daroussin.Cm matrix .
24861d06d6bSBaptiste Daroussin.It Cm cpile
24961d06d6bSBaptiste DaroussinLike
25061d06d6bSBaptiste Daroussin.Cm pile ,
25161d06d6bSBaptiste Daroussinbut with slightly increased vertical spacing.
25261d06d6bSBaptiste Daroussin.It Cm dot
25361d06d6bSBaptiste DaroussinSet a single dot over the preceding box.
25461d06d6bSBaptiste Daroussin.It Cm dotdot
25561d06d6bSBaptiste DaroussinSet two dots (dieresis) over the preceding box.
25661d06d6bSBaptiste Daroussin.It Cm dyad
25761d06d6bSBaptiste DaroussinSet a dyad symbol (left-right arrow) over the preceding box.
25861d06d6bSBaptiste Daroussin.It Cm fat
25961d06d6bSBaptiste DaroussinA synonym for
26061d06d6bSBaptiste Daroussin.Cm bold .
26161d06d6bSBaptiste Daroussin.It Cm font
26261d06d6bSBaptiste DaroussinSet the second argument using the font specified by the first argument;
26361d06d6bSBaptiste Daroussincurrently not recognized by the
26461d06d6bSBaptiste Daroussin.Xr mandoc 1
26561d06d6bSBaptiste Daroussin.Nm
26661d06d6bSBaptiste Daroussinparser.
26761d06d6bSBaptiste Daroussin.It Cm from
26861d06d6bSBaptiste DaroussinSet the following box below the preceding box,
26961d06d6bSBaptiste Daroussinusing a slightly smaller font.
27061d06d6bSBaptiste DaroussinUsed for sums, integrals, limits, and the like.
27161d06d6bSBaptiste Daroussin.It Cm hat
27261d06d6bSBaptiste DaroussinSet a hat (circumflex) over the preceding box.
27361d06d6bSBaptiste Daroussin.It Cm italic
27461d06d6bSBaptiste DaroussinSet the following box using italic font.
27561d06d6bSBaptiste Daroussin.It Cm lcol
27661d06d6bSBaptiste DaroussinLike
27761d06d6bSBaptiste Daroussin.Cm lpile ,
27861d06d6bSBaptiste Daroussinbut for use in
27961d06d6bSBaptiste Daroussin.Cm matrix .
28061d06d6bSBaptiste Daroussin.It Cm left
28161d06d6bSBaptiste DaroussinSet the first argument as a big left delimiter before the second argument.
28261d06d6bSBaptiste DaroussinAs an optional third argument,
28361d06d6bSBaptiste Daroussin.Cm right
28461d06d6bSBaptiste Daroussincan follow.
28561d06d6bSBaptiste DaroussinIn that case, the fourth argument is set as a big right delimiter after
28661d06d6bSBaptiste Daroussinthe second argument.
28761d06d6bSBaptiste Daroussin.It Cm lpile
28861d06d6bSBaptiste DaroussinLike
28961d06d6bSBaptiste Daroussin.Cm cpile ,
29061d06d6bSBaptiste Daroussinbut subequations are left-justified.
29161d06d6bSBaptiste Daroussin.It Cm matrix
29261d06d6bSBaptiste DaroussinFollowed by a list of columns enclosed in braces.
29361d06d6bSBaptiste DaroussinAll columns need to have the same number of subequations.
29461d06d6bSBaptiste DaroussinThe columns are set as a matrix.
29561d06d6bSBaptiste DaroussinThe difference compared to multiple subsequent
29661d06d6bSBaptiste Daroussin.Cm pile
29761d06d6bSBaptiste Daroussinoperators is that in a
29861d06d6bSBaptiste Daroussin.Cm matrix ,
29961d06d6bSBaptiste Daroussincorresponding subequations in all columns line up horizontally,
30061d06d6bSBaptiste Daroussinwhile each
30161d06d6bSBaptiste Daroussin.Cm pile
30261d06d6bSBaptiste Daroussindoes vertical spacing independently.
30361d06d6bSBaptiste Daroussin.It Cm over
30461d06d6bSBaptiste DaroussinSet a fraction.
30561d06d6bSBaptiste DaroussinThe preceding box is the numerator, the following box is the denominator.
30661d06d6bSBaptiste Daroussin.It Cm pile
30761d06d6bSBaptiste DaroussinFollowed by a list of subequations enclosed in braces,
30861d06d6bSBaptiste Daroussinthe subequations being separated by
30961d06d6bSBaptiste Daroussin.Cm above
31061d06d6bSBaptiste Daroussinkeywords.
31161d06d6bSBaptiste DaroussinSets the subequations one above the other, each of them centered.
31261d06d6bSBaptiste DaroussinTypically used to represent vectors in coordinate representation.
31361d06d6bSBaptiste Daroussin.It Cm rcol
31461d06d6bSBaptiste DaroussinLike
31561d06d6bSBaptiste Daroussin.Cm rpile ,
31661d06d6bSBaptiste Daroussinbut for use in
31761d06d6bSBaptiste Daroussin.Cm matrix .
31861d06d6bSBaptiste Daroussin.It Cm right
31961d06d6bSBaptiste DaroussinSee
32061d06d6bSBaptiste Daroussin.Cm left ;
32161d06d6bSBaptiste Daroussin.Cm right
32261d06d6bSBaptiste Daroussincannot be used without
32361d06d6bSBaptiste Daroussin.Cm left .
32461d06d6bSBaptiste DaroussinTo set a big right delimiter without a big left delimiter, the following
32561d06d6bSBaptiste Daroussinconstruction can be used:
32661d06d6bSBaptiste Daroussin.Pp
32761d06d6bSBaptiste Daroussin.D1 Cm left No \(dq\(dq Ar box Cm right Ar delimiter
32861d06d6bSBaptiste Daroussin.It Cm roman
32961d06d6bSBaptiste DaroussinSet the following box using the default font.
33061d06d6bSBaptiste Daroussin.It Cm rpile
33161d06d6bSBaptiste DaroussinLike
33261d06d6bSBaptiste Daroussin.Cm cpile ,
33361d06d6bSBaptiste Daroussinbut subequations are right-justified.
33461d06d6bSBaptiste Daroussin.It Cm size
33561d06d6bSBaptiste DaroussinSet the second argument with the font size specified by the first
33661d06d6bSBaptiste Daroussinargument; currently ignored by
33761d06d6bSBaptiste Daroussin.Xr mandoc 1 .
33861d06d6bSBaptiste DaroussinBy prepending a plus or minus sign to the first argument,
33961d06d6bSBaptiste Daroussinthe font size can be selected relative to the current size.
34061d06d6bSBaptiste Daroussin.It Cm sqrt
34161d06d6bSBaptiste DaroussinSet the square root of the following box.
34261d06d6bSBaptiste Daroussin.It Cm sub
34361d06d6bSBaptiste DaroussinSet the following box as a subscript to the preceding box.
34461d06d6bSBaptiste Daroussin.It Cm sup
34561d06d6bSBaptiste DaroussinSet the following box as a superscript to the preceding box.
34661d06d6bSBaptiste DaroussinAs a special case, if a
34761d06d6bSBaptiste Daroussin.Cm sup
34861d06d6bSBaptiste Daroussinclause immediately follows a
34961d06d6bSBaptiste Daroussin.Cm sub
35061d06d6bSBaptiste Daroussinclause as in
35161d06d6bSBaptiste Daroussin.Pp
35261d06d6bSBaptiste Daroussin.D1 Ar mainbox Cm sub Ar subbox Cm sup Ar supbox
35361d06d6bSBaptiste Daroussin.Pp
35461d06d6bSBaptiste Daroussinboth are set with respect to the same
35561d06d6bSBaptiste Daroussin.Ar mainbox ,
35661d06d6bSBaptiste Daroussinthat is,
35761d06d6bSBaptiste Daroussin.Ar supbox
35861d06d6bSBaptiste Daroussinis set above
35961d06d6bSBaptiste Daroussin.Ar subbox .
36061d06d6bSBaptiste Daroussin.It Cm tilde
36161d06d6bSBaptiste DaroussinSet a tilde over the preceding box.
36261d06d6bSBaptiste Daroussin.It Cm to
36361d06d6bSBaptiste DaroussinSet the following box above the preceding box,
36461d06d6bSBaptiste Daroussinusing a slightly smaller font.
36561d06d6bSBaptiste DaroussinUsed for sums and integrals and the like.
36661d06d6bSBaptiste DaroussinAs a special case, if a
36761d06d6bSBaptiste Daroussin.Cm to
36861d06d6bSBaptiste Daroussinclause immediately follows a
36961d06d6bSBaptiste Daroussin.Cm from
37061d06d6bSBaptiste Daroussinclause as in
37161d06d6bSBaptiste Daroussin.Pp
37261d06d6bSBaptiste Daroussin.D1 Ar mainbox Cm from Ar frombox Cm to Ar tobox
37361d06d6bSBaptiste Daroussin.Pp
37461d06d6bSBaptiste Daroussinboth are set below and above the same
37561d06d6bSBaptiste Daroussin.Ar mainbox .
37661d06d6bSBaptiste Daroussin.It Cm under
37761d06d6bSBaptiste DaroussinUnderline the preceding box.
37861d06d6bSBaptiste Daroussin.It Cm vec
37961d06d6bSBaptiste DaroussinSet a vector symbol (right arrow) over the preceding box.
38061d06d6bSBaptiste Daroussin.El
38161d06d6bSBaptiste Daroussin.Pp
38261d06d6bSBaptiste DaroussinThe binary operations
38361d06d6bSBaptiste Daroussin.Cm from ,
38461d06d6bSBaptiste Daroussin.Cm to ,
38561d06d6bSBaptiste Daroussin.Cm sub ,
38661d06d6bSBaptiste Daroussinand
38761d06d6bSBaptiste Daroussin.Cm sup
38861d06d6bSBaptiste Daroussingroup to the right, that is,
38961d06d6bSBaptiste Daroussin.Pp
39061d06d6bSBaptiste Daroussin.D1 Ar mainbox Cm sup Ar supbox Cm sub Ar subbox
39161d06d6bSBaptiste Daroussin.Pp
39261d06d6bSBaptiste Daroussinis the same as
39361d06d6bSBaptiste Daroussin.Pp
39461d06d6bSBaptiste Daroussin.D1 Ar mainbox Cm sup Brq Ar supbox Cm sub Ar subbox
39561d06d6bSBaptiste Daroussin.Pp
39661d06d6bSBaptiste Daroussinand different from
39761d06d6bSBaptiste Daroussin.Pp
39861d06d6bSBaptiste Daroussin.D1 Bro Ar mainbox Cm sup Ar supbox Brc Cm sub Ar subbox .
39961d06d6bSBaptiste Daroussin.Pp
40061d06d6bSBaptiste DaroussinBy contrast,
40161d06d6bSBaptiste Daroussin.Cm over
40261d06d6bSBaptiste Daroussingroups to the left.
40361d06d6bSBaptiste Daroussin.Pp
40461d06d6bSBaptiste DaroussinIn the following list, earlier operations bind more tightly than
40561d06d6bSBaptiste Daroussinlater operations:
40661d06d6bSBaptiste Daroussin.Pp
40761d06d6bSBaptiste Daroussin.Bl -enum -compact
40861d06d6bSBaptiste Daroussin.It
40961d06d6bSBaptiste Daroussin.Cm dyad ,
41061d06d6bSBaptiste Daroussin.Cm vec ,
41161d06d6bSBaptiste Daroussin.Cm under ,
41261d06d6bSBaptiste Daroussin.Cm bar ,
41361d06d6bSBaptiste Daroussin.Cm tilde ,
41461d06d6bSBaptiste Daroussin.Cm hat ,
41561d06d6bSBaptiste Daroussin.Cm dot ,
41661d06d6bSBaptiste Daroussin.Cm dotdot
41761d06d6bSBaptiste Daroussin.It
41861d06d6bSBaptiste Daroussin.Cm fat ,
41961d06d6bSBaptiste Daroussin.Cm roman ,
42061d06d6bSBaptiste Daroussin.Cm italic ,
42161d06d6bSBaptiste Daroussin.Cm bold ,
42261d06d6bSBaptiste Daroussin.Cm size
42361d06d6bSBaptiste Daroussin.It
42461d06d6bSBaptiste Daroussin.Cm sub ,
42561d06d6bSBaptiste Daroussin.Cm sup
42661d06d6bSBaptiste Daroussin.It
42761d06d6bSBaptiste Daroussin.Cm sqrt
42861d06d6bSBaptiste Daroussin.It
42961d06d6bSBaptiste Daroussin.Cm over
43061d06d6bSBaptiste Daroussin.It
43161d06d6bSBaptiste Daroussin.Cm from ,
43261d06d6bSBaptiste Daroussin.Cm to
43361d06d6bSBaptiste Daroussin.El
43461d06d6bSBaptiste Daroussin.Sh COMPATIBILITY
43561d06d6bSBaptiste DaroussinThis section documents the compatibility of mandoc
43661d06d6bSBaptiste Daroussin.Nm
43761d06d6bSBaptiste Daroussinand the troff
43861d06d6bSBaptiste Daroussin.Nm
43961d06d6bSBaptiste Daroussinimplementation (including GNU troff).
44061d06d6bSBaptiste Daroussin.Pp
44161d06d6bSBaptiste Daroussin.Bl -dash -compact
44261d06d6bSBaptiste Daroussin.It
44361d06d6bSBaptiste DaroussinThe text string
44461d06d6bSBaptiste Daroussin.Sq \e\(dq
44561d06d6bSBaptiste Daroussinis interpreted as a literal quote in troff.
44661d06d6bSBaptiste DaroussinIn mandoc, this is interpreted as a comment.
44761d06d6bSBaptiste Daroussin.It
44861d06d6bSBaptiste DaroussinIn troff, The circumflex and tilde white-space symbols map to
44961d06d6bSBaptiste Daroussinfixed-width spaces.
45061d06d6bSBaptiste DaroussinIn mandoc, these characters are synonyms for the space character.
45161d06d6bSBaptiste Daroussin.It
45261d06d6bSBaptiste DaroussinThe troff implementation of
45361d06d6bSBaptiste Daroussin.Nm
45461d06d6bSBaptiste Daroussinallows for equation alignment with the
45561d06d6bSBaptiste Daroussin.Cm mark
45661d06d6bSBaptiste Daroussinand
45761d06d6bSBaptiste Daroussin.Cm lineup
45861d06d6bSBaptiste Daroussintokens.
45961d06d6bSBaptiste Daroussinmandoc discards these tokens.
46061d06d6bSBaptiste DaroussinThe
46161d06d6bSBaptiste Daroussin.Cm back Ar n ,
46261d06d6bSBaptiste Daroussin.Cm fwd Ar n ,
46361d06d6bSBaptiste Daroussin.Cm up Ar n ,
46461d06d6bSBaptiste Daroussinand
46561d06d6bSBaptiste Daroussin.Cm down Ar n
46661d06d6bSBaptiste Daroussincommands are also ignored.
46761d06d6bSBaptiste Daroussin.El
46861d06d6bSBaptiste Daroussin.Sh SEE ALSO
46961d06d6bSBaptiste Daroussin.Xr mandoc 1 ,
47061d06d6bSBaptiste Daroussin.Xr man 7 ,
47161d06d6bSBaptiste Daroussin.Xr mandoc_char 7 ,
47261d06d6bSBaptiste Daroussin.Xr mdoc 7 ,
47361d06d6bSBaptiste Daroussin.Xr roff 7
47461d06d6bSBaptiste Daroussin.Rs
47561d06d6bSBaptiste Daroussin.%A Brian W. Kernighan
47661d06d6bSBaptiste Daroussin.%A Lorinda L. Cherry
47761d06d6bSBaptiste Daroussin.%T System for Typesetting Mathematics
47861d06d6bSBaptiste Daroussin.%J Communications of the ACM
47961d06d6bSBaptiste Daroussin.%V 18
48045a5aec3SBaptiste Daroussin.%P pp. 151\(en157
48161d06d6bSBaptiste Daroussin.%D March, 1975
48261d06d6bSBaptiste Daroussin.Re
48361d06d6bSBaptiste Daroussin.Rs
48461d06d6bSBaptiste Daroussin.%A Brian W. Kernighan
48561d06d6bSBaptiste Daroussin.%A Lorinda L. Cherry
48661d06d6bSBaptiste Daroussin.%T Typesetting Mathematics, User's Guide
48761d06d6bSBaptiste Daroussin.%D 1976
48861d06d6bSBaptiste Daroussin.Re
48961d06d6bSBaptiste Daroussin.Rs
49061d06d6bSBaptiste Daroussin.%A Brian W. Kernighan
49161d06d6bSBaptiste Daroussin.%A Lorinda L. Cherry
49261d06d6bSBaptiste Daroussin.%T Typesetting Mathematics, User's Guide (Second Edition)
49361d06d6bSBaptiste Daroussin.%D 1978
49461d06d6bSBaptiste Daroussin.Re
49561d06d6bSBaptiste Daroussin.Sh HISTORY
49661d06d6bSBaptiste DaroussinThe eqn utility, a preprocessor for troff, was originally written by
49761d06d6bSBaptiste DaroussinBrian W. Kernighan and Lorinda L. Cherry in 1975.
49861d06d6bSBaptiste DaroussinThe GNU reimplementation of eqn, part of the GNU troff package, was
49961d06d6bSBaptiste Daroussinreleased in 1989 by James Clark.
50061d06d6bSBaptiste DaroussinThe eqn component of
50161d06d6bSBaptiste Daroussin.Xr mandoc 1
50261d06d6bSBaptiste Daroussinwas added in 2011.
50361d06d6bSBaptiste Daroussin.Sh AUTHORS
50461d06d6bSBaptiste DaroussinThis
50561d06d6bSBaptiste Daroussin.Nm
50661d06d6bSBaptiste Daroussinreference was written by
50761d06d6bSBaptiste Daroussin.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .
508