--- /dev/null
+<?xml version='1.0' encoding="UTF-8"?>\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+ xmlns:m="http://www.w3.org/1998/Math/MathML"\r
+ version='1.0'>\r
+ \r
+<!-- ====================================================================== -->\r
+<!-- $Id: scripts.xsl,v 1.1.1.1 2002/10/26 14:20:06 shade33 Exp $\r
+ This file is part of the XSLT MathML Library distribution.\r
+ See ./README or http://www.raleigh.ru/MathML/mmltex for\r
+ copyright and other information -->\r
+<!-- ====================================================================== -->\r
+\r
+<xsl:template match="m:munderover">\r
+ <xsl:variable name="base">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[1]"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:variable name="under">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[2]"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:variable name="over">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[3]"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ \r
+ <xsl:choose>\r
+ <xsl:when test="$over='¯'"> <!-- OverBar - over bar -->\r
+ <xsl:text>\overline{</xsl:text>\r
+ <xsl:call-template name="munder">\r
+ <xsl:with-param name="base" select="$base"/>\r
+ <xsl:with-param name="under" select="$under"/>\r
+ </xsl:call-template>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="$over='︷'"> <!-- OverBrace - over brace -->\r
+ <xsl:text>\overbrace{</xsl:text>\r
+ <xsl:call-template name="munder">\r
+ <xsl:with-param name="base" select="$base"/>\r
+ <xsl:with-param name="under" select="$under"/>\r
+ </xsl:call-template>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="$under='̲'"> <!-- UnderBar - combining low line -->\r
+ <xsl:text>\underline{</xsl:text>\r
+ <xsl:call-template name="mover">\r
+ <xsl:with-param name="base" select="$base"/>\r
+ <xsl:with-param name="over" select="$over"/>\r
+ <xsl:with-param name="pos_over" select="3"/>\r
+ </xsl:call-template>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="$under='︸'"> <!-- UnderBrace - under brace -->\r
+ <xsl:text>\underbrace{</xsl:text>\r
+ <xsl:call-template name="mover">\r
+ <xsl:with-param name="base" select="$base"/>\r
+ <xsl:with-param name="over" select="$over"/>\r
+ <xsl:with-param name="pos_over" select="3"/>\r
+ </xsl:call-template>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="translate($base,'∏∐⋂⋃⊔',\r
+ '∑∑∑∑∑')='∑'">\r
+<!-- if $base is operator, such as\r
+ ∑ /sum L: summation operator\r
+ ∏ /prod L: product operator\r
+ ∐ /coprod L: coproduct operator\r
+ ⋂ /bigcap\r
+ ⋃ /bigcup\r
+ ⊔ /bigsqcup\r
+-->\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>_{</xsl:text>\r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}^{</xsl:text>\r
+ <xsl:apply-templates select="./*[3]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:text>\underset{</xsl:text>\r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}{\overset{</xsl:text>\r
+ <xsl:apply-templates select="./*[3]"/>\r
+ <xsl:text>}{</xsl:text>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}}</xsl:text>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+</xsl:template>\r
+\r
+<xsl:template match="m:mover">\r
+ <xsl:call-template name="mover">\r
+ <xsl:with-param name="base">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[1]"/>\r
+ </xsl:call-template>\r
+ </xsl:with-param>\r
+ <xsl:with-param name="over">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[2]"/>\r
+ </xsl:call-template>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+</xsl:template>\r
+\r
+<xsl:template match="m:munder">\r
+ <xsl:call-template name="munder">\r
+ <xsl:with-param name="base">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[1]"/>\r
+ </xsl:call-template>\r
+ </xsl:with-param>\r
+ <xsl:with-param name="under">\r
+ <xsl:call-template name="startspace">\r
+ <xsl:with-param name="symbol" select="./*[2]"/>\r
+ </xsl:call-template>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+</xsl:template>\r
+\r
+<xsl:template name="mover">\r
+ <xsl:param name="base"/>\r
+ <xsl:param name="over"/>\r
+ <xsl:param name="pos_over" select="2"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$over='¯'"> <!-- OverBar - over bar -->\r
+ <xsl:text>\overline{</xsl:text>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="$over='︷'"> <!-- OverBrace - over brace -->\r
+ <xsl:text>\overbrace{</xsl:text>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="translate($base,'∏∐⋂⋃⊔',\r
+ '∑∑∑∑∑')='∑'">\r
+<!-- if $base is operator, such as\r
+ ∑ /sum L: summation operator\r
+ ∏ /prod L: product operator\r
+ ∐ /coprod L: coproduct operator\r
+ ⋂ /bigcap\r
+ ⋃ /bigcup\r
+ ⊔ /bigsqcup\r
+-->\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>^{</xsl:text>\r
+ <xsl:apply-templates select="./*[$pos_over]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:text>\stackrel{</xsl:text>\r
+ <xsl:apply-templates select="./*[$pos_over]"/>\r
+ <xsl:text>}{</xsl:text>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text>\r
+ <!--\r
+ <xsl:text>\overset{</xsl:text>\r
+ <xsl:apply-templates select="./*[$pos_over]"/>\r
+ <xsl:text>}{</xsl:text> \r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text>-->\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+</xsl:template>\r
+\r
+<xsl:template name="munder">\r
+ <xsl:param name="base"/>\r
+ <xsl:param name="under"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$under='̲'"> <!-- UnderBar - combining low line -->\r
+ <xsl:text>\underline{</xsl:text>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="$under='︸'"> <!-- UnderBrace - under brace -->\r
+ <xsl:text>\underbrace{</xsl:text>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:when test="translate($base,'∏∐⋂⋃⊔',\r
+ '∑∑∑∑∑')='∑'">\r
+<!-- if $base is operator, such as\r
+ ∑ /sum L: summation operator\r
+ ∏ /prod L: product operator\r
+ ∐ /coprod L: coproduct operator\r
+ ⋂ /bigcap\r
+ ⋃ /bigcup\r
+ ⊔ /bigsqcup\r
+-->\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>_{</xsl:text>\r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}</xsl:text>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:text>\underset{</xsl:text> <!-- Required AmsMath package -->\r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}{</xsl:text> \r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+</xsl:template>\r
+\r
+<xsl:template match="m:msubsup">\r
+ <xsl:text>{</xsl:text> \r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}_{</xsl:text>\r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}^{</xsl:text> \r
+ <xsl:apply-templates select="./*[3]"/>\r
+ <xsl:text>}</xsl:text> \r
+</xsl:template>\r
+\r
+<xsl:template match="m:msup">\r
+ <xsl:text>{</xsl:text> \r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}^{</xsl:text> \r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}</xsl:text> \r
+</xsl:template>\r
+\r
+<xsl:template match="m:msub">\r
+ <xsl:text>{</xsl:text> \r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:text>}_{</xsl:text> \r
+ <xsl:apply-templates select="./*[2]"/>\r
+ <xsl:text>}</xsl:text> \r
+</xsl:template>\r
+\r
+<xsl:template match="m:mmultiscripts" mode="mprescripts">\r
+ <xsl:for-each select="m:mprescripts/following-sibling::*">\r
+ <xsl:if test="position() mod 2 and local-name(.)!='none'">\r
+ <xsl:text>{}_{</xsl:text> \r
+ <xsl:apply-templates select="."/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:if>\r
+ <xsl:if test="not(position() mod 2) and local-name(.)!='none'">\r
+ <xsl:text>{}^{</xsl:text> \r
+ <xsl:apply-templates select="."/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:for-each select="m:mprescripts/preceding-sibling::*[position()!=last()]">\r
+ <xsl:if test="position()>2 and local-name(.)!='none'">\r
+ <xsl:text>{}</xsl:text> \r
+ </xsl:if>\r
+ <xsl:if test="position() mod 2 and local-name(.)!='none'">\r
+ <xsl:text>_{</xsl:text> \r
+ <xsl:apply-templates select="."/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:if>\r
+ <xsl:if test="not(position() mod 2) and local-name(.)!='none'">\r
+ <xsl:text>^{</xsl:text> \r
+ <xsl:apply-templates select="."/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:if>\r
+ </xsl:for-each>\r
+</xsl:template>\r
+\r
+<xsl:template match="m:mmultiscripts">\r
+ <xsl:choose>\r
+ <xsl:when test="m:mprescripts">\r
+ <xsl:apply-templates select="." mode="mprescripts"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:apply-templates select="./*[1]"/>\r
+ <xsl:for-each select="*[position()>1]">\r
+ <xsl:if test="position()>2 and local-name(.)!='none'">\r
+ <xsl:text>{}</xsl:text> \r
+ </xsl:if>\r
+ <xsl:if test="position() mod 2 and local-name(.)!='none'">\r
+ <xsl:text>_{</xsl:text> \r
+ <xsl:apply-templates select="."/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:if>\r
+ <xsl:if test="not(position() mod 2) and local-name(.)!='none'">\r
+ <xsl:text>^{</xsl:text> \r
+ <xsl:apply-templates select="."/>\r
+ <xsl:text>}</xsl:text> \r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+</xsl:template>\r
+\r
+</xsl:stylesheet>
\ No newline at end of file