# mo

(Excerpt from "The MathML Handbook" by Pavi Sandhu)

<mo>PCDATA</mo>

## Description

The mo element is used to represent operators, fences, separators, and accents. Fences include all characters used as delimiters such as braces, brackets, parentheses, and absolute value bars.

This element has a large collection of attributes that affect the details of how it is rendered. An operator dictionary, which specifies the values of attributes for most common operators, determines the default value of the attributes. If an attribute value is not specified in the operator dictionary, the attribute takes a generic default value, specified in the following table.

## Attributes

The mo element accepts the nine attributes common to all token elements. In addition, it has twelve other attributes, shown in the following table. The default values for most of these attributes are typically determined from the operator dictionary. Some default values are shown with an asterisk to indicate that they are generic default values, to be used only if no match is found for that attribute in the operator dictionary.

Table: Attributes of mo.

Attribute Values Default
form prefix | infix | postfix Determined by position in <mrow>.
lspace number h-unit | namedspace thickmathspace*
rspace number h-unit | namedspace thickmathspace*
stretchy true | false false*
symmetric true | false true*
maxsize number [v-unit | h-unit] | namedspace | infinity infinity*
minsize number | namedspace 1*
largeop true | false false*
movablelimits true | false false*
fence true | false false*
separator true | false false*
accent true | false false*

These attributes have the following meaning:

• form: specifies whether the operator occurs in the prefix, postfix, or infix position. This, in turn, determines the amount of space rendered on either side of the operator by default.
• lspace: specifies the amount of space that should be added to the left of an operator. It is usually specified as a number followed by a unit of horizontal distance. If no unit is specified, a value in ems is assumed.
• rspace: specifies the amount of space that should be added to the right of an operator. It is usually specified as a number followed by a unit of horizontal distance. If no unit is specified, a value in ems is assumed.
• stretchy: specifies whether an operator should stretch to accommodate its contents.
• symmetric: specifies whether an operator for which stretchy="true" should always remain vertically symmetric with respect to its contents. That is, when symmetric="true", the height of the operator above and the depth below its contents are always kept equal.
• maxsize: specifies the maximum size an operator can stretch to accommodate its contents. This attribute is either specified in absolute terms (that is, as a number with a unit) or in relative terms (that is, as a number). If it is specified as a number, the number is multiplied by the normal size of the operator to determine the maximum size.
• minsize: specifies the minimum size an operator can stretch to accommodate its contents. This attribute is either specified in absolute terms (that is, as a number with a unit) or in relative terms (that is, as a number). If it is set to a number, the number is multiplied by the normal size of the operator to determine the maximum size.
• largeop: specifies whether the operator should be drawn in a larger size when displaystyle="true" in that operator's environment. The operators that represent integrals, sums, and products, for example, typically have largeop set to true by default.
• movablelimits: specifies whether underscripts and overscripts attached to an operator should be rendered as subscripts and superscripts when displaystyle="false" in that operator's environment. The operators that represent integrals, sums, and products, for example, typically have movablelimits set to true by default.
• fence: specifies whether the operator should be treated as if it were a fence. A fence is any character that plays the role of a delimiter, such as braces, brackets, parentheses, and absolute value bars. This attribute has no effect on the visual rendering of the operator. It is provided only as way of passing this information to applications that need to interpret the semantic meaning of the presentation markup.
• separator: specifies whether an operator should be treated as a separator for the purposes of rendering. It is provided as a means of giving linebreaking information to rendering applications. Setting separator="true" for an operator indicates that a linebreak should be avoided after the operator; that is, it is preferable to place the operator at the beginning of a broken line rather than at the end.
• accent: specifies whether an operator should be treated as an accent (or diacritical mark) when used as an underscript or overscript. Accents are typically rendered in normal size and closer to the base, while limits are rendered in a smaller size and farther away from the base.

 Tipp der data2type-Redaktion: Zum Thema MathML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: