EQN(7) | Miscellaneous Information Manual | EQN(7) |

`eqn`

—
eqn language reference for mandoc

`eqn`

language is an equation-formatting
language. It is used within
mdoc(7) and
man(7) UNIX
manual pages. It describes the `eqn`

language accepted by the
mandoc(1) utility, which
corresponds to the Second Edition `eqn`

specification (see SEE ALSO for
references).
Equations within mdoc(7) or
man(7) documents are enclosed by
the standalone ‘.EQ’ and ‘.EN’ tags. Equations are
multi-line blocks consisting of formulas and control statements.
eqn : box | eqn box box : text | "{" eqn "}" | "define" text text | "ndefine" text text | "tdefine" text text | "gfont" text | "gsize" text | "set" text text | "undef" text | "sqrt" box | box pos box | box mark | "matrix" "{" [col "{" list "}"]* "}" | pile "{" list "}" | font box | "size" text box | "left" text eqn ["right" text] col : "lcol" | "rcol" | "ccol" | "col" text : [^space\"]+ | \".*\" pile : "lpile" | "cpile" | "rpile" | "pile" pos : "over" | "sup" | "sub" | "to" | "from" mark : "dot" | "dotdot" | "hat" | "tilde" | "vec" | "dyad" | "bar" | "under" font : "roman" | "italic" | "bold" | "fat" list : eqn | list "above" eqn space : [\^~ \t]

`define`

- Replace all occurrences of a key with a value. Its syntax is as follows:
The first character of the value string,
`define`

`key cvalc``c`, is used as the delimiter for the value`val`. This allows for arbitrary enclosure of terms (not just quotes), such as`define`

`foo 'bar baz'`It is an error to have an empty`define`

`foo cbar bazc``key`or`val`. Note that a quoted`key`causes errors in some`eqn`

implementations and should not be considered portable. It is not expanded for replacements. Definitions may refer to other definitions; these are evaluated recursively when text replacement occurs and not when the definition is created. Definitions can create arbitrary strings, for example, the following is a legal construction.define foo 'define' foo bar 'baz'

`ndefine`

statement is a synonym for`define`

, while`tdefine`

is discarded. `gfont`

- Set the default font of subsequent output. Its syntax is as follows:
In mandoc, this value is discarded.
`gfont`

`font` `gsize`

- Set the default size of subsequent output. Its syntax is as follows:
The
`gsize`

[+|-]`size``size`value should be an integer. If prepended by a sign, the font size is changed relative to the current size. `set`

- Set an equation mode. In mandoc, both arguments are thrown away. Its
syntax is as follows:
The
`set`

`key val``key`and`val`are not expanded for replacements. This statement is a GNU extension. `undef`

- Unset a previously-defined key. Its syntax is as follows:
Once invoked, the definition for
`define`

`key``key`is discarded. The`key`is not expanded for replacements. This statement is a GNU extension.

`above`

- See
`pile`

. `bar`

- Draw a line over the preceding box.
`bold`

- Set the following box using bold font.
`ccol`

- Like
`cpile`

, but for use in`matrix`

. `cpile`

- Like
`pile`

, but with slightly increased vertical spacing. `dot`

- Set a single dot over the preceding box.
`dotdot`

- Set two dots (dieresis) over the preceding box.
`dyad`

- Set a dyad symbol (left-right arrow) over the preceding box.
`fat`

- A synonym for
`bold`

. `font`

- Set the second argument using the font specified by the first argument;
currently not recognized by the
mandoc(1)
`eqn`

parser. `from`

- Set the following box below the preceding box, using a slightly smaller font. Used for sums, integrals, limits, and the like.
`hat`

- Set a hat (circumflex) over the preceding box.
`italic`

- Set the following box using italic font.
`lcol`

- Like
`lpile`

, but for use in`matrix`

. `left`

- Set the first argument as a big left delimiter before the second argument.
As an optional third argument,
`right`

can follow. In that case, the fourth argument is set as a big right delimiter after the second argument. `lpile`

- Like
`cpile`

, but subequations are left-justified. `matrix`

- Followed by a list of columns enclosed in braces. All columns need to have
the same number of subequations. The columns are set as a matrix. The
difference compared to multiple subsequent
`pile`

operators is that in a`matrix`

, corresponding subequations in all columns line up horizontally, while each`pile`

does vertical spacing independently. `over`

- Set a fraction. The preceding box is the numerator, the following box is the denominator.
`pile`

- Followed by a list of subequations enclosed in braces, the subequations
being separated by
`above`

keywords. Sets the subequations one above the other, each of them centered. Typically used to represent vectors in coordinate representation. `rcol`

- Like
`rpile`

, but for use in`matrix`

. `right`

- See
`left`

;`right`

cannot be used without`left`

. To set a big right delimiter without a big left delimiter, the following construction can be used:`left`

""`box``right`

`delimiter` `roman`

- Set the following box using the default font.
`rpile`

- Like
`cpile`

, but subequations are right-justified. `size`

- Set the second argument with the font size specified by the first argument; currently ignored by mandoc(1). By prepending a plus or minus sign to the first argument, the font size can be selected relative to the current size.
`sqrt`

- Set the square root of the following box.
`sub`

- Set the following box as a subscript to the preceding box.
`sup`

- Set the following box as a superscript to the preceding box. As a special
case, if a
`sup`

clause immediately follows a`sub`

clause as inboth are set with respect to the same`mainbox``sub`

`subbox``sup`

`supbox``mainbox`, that is,`supbox`is set above`subbox`. `tilde`

- Set a tilde over the preceding box.
`to`

- Set the following box above the preceding box, using a slightly smaller
font. Used for sums and integrals and the like. As a special case, if a
`to`

clause immediately follows a`from`

clause as inboth are set below and above the same`mainbox``from`

`frombox``to`

`tobox``mainbox`. `under`

- Underline the preceding box.
`vec`

- Set a vector symbol (right arrow) over the preceding box.

`from`

,
`to`

, `sub`

,
and `sup`

group to the right, that is,
`sup`

`sub`

`sup`

{`sub`

{`mainbox`
`supbox`}
`subbox`.

By contrast, `sup`

`sub`

`over`

groups to the left.
In the following list, earlier operations bind more tightly than later
operations:
`dyad`

,`vec`

,`under`

,`bar`

,`tilde`

,`hat`

,`dot`

,`dotdot`

`fat`

,`roman`

,`italic`

,`bold`

,`size`

`sub`

,`sup`

`sqrt`

`over`

`from`

,`to`

`eqn`

and the troff
`eqn`

implementation (including GNU troff).
- The text string ‘\"’ is interpreted as a literal quote in troff. In mandoc, this is interpreted as a comment.
- In troff, The circumflex and tilde white-space symbols map to fixed-width spaces. In mandoc, these characters are synonyms for the space character.
- The troff implementation of
`eqn`

allows for equation alignment with the`mark`

and`lineup`

tokens. mandoc discards these tokens. The`back`

`n`,`fwd`

`n`,`up`

`n`, and`down`

`n`commands are also ignored.

`eqn`

reference was written by
Kristaps Dzonsons
<kristaps@bsd.lv>.September 3, 2017 | OpenBSD-current |