math:msup (in formatting mode) — Formatting a superscript.

<xsl:template match="math:msup" mode="formatting"> <xsl:param name="x"/> <xsl:param name="y"/> <xsl:param name="baseline" select="0"/> <xsl:param name="scriptlevel" tunnel="yes"/> <xsl:param name="displayStyle" tunnel="yes"/> <xsl:param name="rightSwitch" tunnel="yes"/> <xsl:param name="fontName" tunnel="yes"/> ... </xsl:template>

`msup`

element has two children: the first child is the base and the second is the superscript.
After font size computation, the base and the superscript are computed by calling the formatting mode template on the first and second child. The
superscript gets a `X`

coordinate value that depends on the base's size in order to place its box on the right of base one.
Some general parameters are also modified when the superscript computation is called: the display style has to be `false`

and the script level has to be incremented by one. Using this new value, the size of superscript elements will be smaller than base ones.

After that, some information is retrieved for each child: its height, `Y`

coordinate of its top edge and its height over
its baseline. This data will be used to compute the final height, baseline and coordinate of the box.

The next four variables are used to compute a shift value for the superscript. By default, this value depends on the base height, if the base
element is lower than 1.2em, the shift value will be 80 percent of the base height over the baseline. In all other case, the default value will
be 90 percent of the base height over the baseline. If the users as specified a shift value, using the `superscriptshift`

attributes, this value will be retrieved and used instead of the default one. Then the shift value is corrected with respect to the initial
position of the superscript and finally the descender of the superscript is added to the final shift value if it is not a token element.

After that, the box representation is computed by using the shift value. The height is computed by taking the difference between the lowest
and the highest `Y`

. The baseline is the baseline of the base.

Fnally, the tree node is annotated and contains,
like all other elements, its box representation, and information that determine if the `msup`

is an embellished operator
(`EMBELLISH`

, `LSPACE`

, `RSPACE`

, `ACCENT`

and
`stretchVertical`

. Some other information is also added to shift and to place the superscript: `SHIFTY_BASE`

that will shift the base on the y-axis to place it correctly if necessary, `SHIFTY_SUPERSCRIPT`

that will shift
the superscript on the y-axis to its final position, and `SHIFTX_SUPERSCRIPT`

that will withdraw the `LSPACE`

value of the superscript if this one is an embellished operator. This last shift on x-axis is done to draw the superscript much closer
to its base.