math:mo[@t:stretchVertical = true()] (in formatting mode) — Correcting mode for an operator element.

<xsl:template match="math:mo[@t:stretchVertical = true()]" mode="formatting"> <xsl:param name="x"/> <xsl:param name="y"/> <xsl:param name="baseline" select="0"/> <xsl:param name="upperY" select="0" tunnel="yes"/> <xsl:param name="lowerY" select="0" tunnel="yes"/> <xsl:param name="fontName" tunnel="yes"/> <xsl:param name="scriptlevel" tunnel="yes"/> <xsl:param name="displayStyle" tunnel="yes"/> ... </xsl:template>

Some operators have to stretch symmetrically, it depends on the `symmetric`

attribute value, it means than
its size above the middle of the expression is equal to its size under this middle. The middle can be viewed as the position of
the minus operator in the expression. Therefore, the first three lines of this mode (after size computation) are used to determine the
height of the delimiter with respect to the biggest element and the `symmetric`

attributes.

The next computation implements the behaviour of `minsize`

and `maxsize`

`mo`

attributes.
Since the correcting mode works directly on the annotated tree computed by the normal mode, these two attributes are retrieved directly from it.

Since the parts that compose an operator have a bigger width than the normal operator, the width of the box has to be corrected too. It is done by retrieving the bounding box of each part. These bounding boxes are used to compute the new width.

Finally, the box represention is corrected and directly annotated in the tree.