|
<?xml version='1.0' encoding="UTF-8"?> |
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|
xmlns:m="http://www.w3.org/1998/Math/MathML" |
|
version='1.0'> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:output method="text" indent="no" encoding="UTF-8"/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template name="startspace"> |
|
<xsl:param name="symbol"/> |
|
<xsl:if test="contains($symbol,' ')"> |
|
<xsl:variable name="symbola" select="concat(substring-before($symbol,' '),substring-after($symbol,' '))"/> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="$symbola"/> |
|
</xsl:call-template> |
|
</xsl:if> |
|
<xsl:if test="not(contains($symbol,' '))"> |
|
<xsl:value-of select="$symbol"/> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:strip-space elements="m:*"/> |
|
|
|
<xsl:template match="m:math"> |
|
<xsl:text>$</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>$</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="m:cn"><xsl:apply-templates/></xsl:template> |
|
|
|
<xsl:template match="m:cn[@type='complex-cartesian']"> |
|
<xsl:apply-templates select="text()[1]"/> |
|
<xsl:text>+</xsl:text> |
|
<xsl:apply-templates select="text()[2]"/> |
|
<xsl:text>i</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:cn[@type='rational']"> |
|
<xsl:apply-templates select="text()[1]"/> |
|
<xsl:text>/</xsl:text> |
|
<xsl:apply-templates select="text()[2]"/> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:cn[@type='integer' and @base!=10]"> |
|
<xsl:apply-templates/> |
|
<xsl:text>_{</xsl:text><xsl:value-of select="@base"/><xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:cn[@type='complex-polar']"> |
|
<xsl:apply-templates select="text()[1]"/> |
|
<xsl:text>e^{i </xsl:text> |
|
<xsl:apply-templates select="text()[2]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:cn[@type='e-notation']"> |
|
<xsl:apply-templates select="text()[1]"/> |
|
<xsl:text>E</xsl:text> |
|
<xsl:apply-templates select="text()[2]"/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:ci | m:csymbol"> |
|
<xsl:choose> |
|
<xsl:when test="string-length(normalize-space(text()))>1"> |
|
<xsl:text>\mathrm{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise><xsl:apply-templates/></xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply | m:reln"> |
|
<xsl:apply-templates select="*[1]"> |
|
|
|
<xsl:with-param name="p" select="10"/> |
|
</xsl:apply-templates> |
|
|
|
<xsl:text>(</xsl:text> |
|
<xsl:for-each select="*[position()>1]"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="not(position()=last())"><xsl:text>, </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>)</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:fn[m:apply[1]]"> |
|
<xsl:text>(</xsl:text><xsl:apply-templates/><xsl:text>)</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:interval[*[2]]"> |
|
<xsl:choose> |
|
<xsl:when test="@closure='open' or @closure='open-closed'"> |
|
<xsl:text>\left(</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise><xsl:text>\left[</xsl:text></xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:apply-templates select="*[1]"/> |
|
<xsl:text> , </xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:choose> |
|
<xsl:when test="@closure='open' or @closure='closed-open'"> |
|
<xsl:text>\right)</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise><xsl:text>\right]</xsl:text></xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:interval"> |
|
<xsl:text>\left\{</xsl:text><xsl:apply-templates/><xsl:text>\right\}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:inverse]]"> |
|
<xsl:apply-templates select="*[2]"/><xsl:text>^{(-1)}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:sep | m:condition"><xsl:apply-templates/></xsl:template> |
|
|
|
|
|
<xsl:template match="m:lambda"> |
|
<xsl:text>\mathrm{lambda}\: </xsl:text> |
|
<xsl:apply-templates select="m:bvar/*"/> |
|
<xsl:text>.\: </xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:compose]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\circ </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:ident"><xsl:text>\mathrm{id}</xsl:text></xsl:template> |
|
|
|
|
|
|
|
<xsl:template match="m:domain | m:codomain | m:image | m:arg | m:lcm | m:grad | |
|
m:curl | m:median | m:mode"> |
|
<xsl:text>\mathop{\mathrm{</xsl:text> |
|
<xsl:value-of select="local-name()"/> |
|
<xsl:text>}}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:domainofapplication"/> |
|
|
|
|
|
<xsl:template match="m:piecewise"> |
|
<xsl:text>\begin{cases}</xsl:text> |
|
<xsl:apply-templates select="m:piece"/> |
|
<xsl:apply-templates select="m:otherwise"/> |
|
<xsl:text>\end{cases}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:piece"> |
|
<xsl:apply-templates select="*[1]"/> |
|
<xsl:text> & \text{if $</xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>$}</xsl:text> |
|
<xsl:if test="not(position()=last()) or ../m:otherwise"><xsl:text>\\ </xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:otherwise"> |
|
<xsl:apply-templates select="*[1]"/> |
|
<xsl:text> & \text{otherwise}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:quotient]]"> |
|
<xsl:text>\left\lfloor\frac{</xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:apply-templates select="*[3]"/> |
|
<xsl:text>}\right\rfloor </xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:factorial]]"> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
<xsl:text>!</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:divide]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:param name="this-p" select="3"/> |
|
<xsl:if test="$this-p < $p"><xsl:text>\left(</xsl:text></xsl:if> |
|
<xsl:text>\frac{</xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
|
|
|
|
<xsl:text>}{</xsl:text> |
|
<xsl:apply-templates select="*[3]"/> |
|
|
|
|
|
<xsl:text>}</xsl:text> |
|
<xsl:if test="$this-p < $p"><xsl:text>\right)</xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:max or self::m:min]]"> |
|
<xsl:text>\</xsl:text> |
|
<xsl:value-of select="local-name(*[1])"/> |
|
<xsl:text>\{</xsl:text> |
|
<xsl:choose> |
|
<xsl:when test="m:condition"> |
|
<xsl:apply-templates select="*[last()]"/> |
|
<xsl:text>, </xsl:text> |
|
<xsl:apply-templates select="m:condition/node()"/> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:for-each select="*[position() > 1]"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position() !=last()"><xsl:text> , </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:text>\}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:minus] and count(*)=2]"> |
|
<xsl:text>-</xsl:text> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="5"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[*[1][self::m:minus] and count(*)>2]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="mo">-</xsl:with-param> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="this-p" select="2"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:plus]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:if test="$p > 2"> |
|
<xsl:text>(</xsl:text> |
|
</xsl:if> |
|
<xsl:for-each select="*[position()>1]"> |
|
<xsl:if test="position() > 1"> |
|
<xsl:choose> |
|
<xsl:when test="self::m:apply[*[1][self::m:times] and |
|
*[2][self::m:apply/*[1][self::m:minus] or self::m:cn[not(m:sep) and |
|
(number(.) < 0)]]]">-</xsl:when> |
|
<xsl:otherwise>+</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:if> |
|
<xsl:choose> |
|
<xsl:when test="self::m:apply[*[1][self::m:times] and |
|
*[2][self::m:cn[not(m:sep) and (number(.) <0)]]]"> |
|
<xsl:value-of select="-(*[2])"/> |
|
<xsl:apply-templates select="."> |
|
<xsl:with-param name="first" select="2"/> |
|
<xsl:with-param name="p" select="2"/> |
|
</xsl:apply-templates> |
|
</xsl:when> |
|
<xsl:when test="self::m:apply[*[1][self::m:times] and |
|
*[2][self::m:apply/*[1][self::m:minus]]]"> |
|
<xsl:apply-templates select="./*[2]/*[2]"/> |
|
<xsl:apply-templates select="."> |
|
<xsl:with-param name="first" select="2"/> |
|
<xsl:with-param name="p" select="2"/> |
|
</xsl:apply-templates> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:apply-templates select="."> |
|
<xsl:with-param name="p" select="2"/> |
|
</xsl:apply-templates> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:for-each> |
|
<xsl:if test="$p > 2"> |
|
<xsl:text>)</xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:power]]"> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="5"/> |
|
</xsl:apply-templates> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="*[3]"> |
|
<xsl:with-param name="p" select="5"/> |
|
</xsl:apply-templates> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:rem]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="mo">\mod </xsl:with-param> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="this-p" select="3"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:times]]" name="times"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:param name="first" select="1"/> |
|
<xsl:if test="$p > 3"><xsl:text>(</xsl:text></xsl:if> |
|
<xsl:for-each select="*[position()>1]"> |
|
<xsl:if test="position() > 1"> |
|
<xsl:choose> |
|
<xsl:when test="self::m:cn">\times </xsl:when> |
|
<xsl:otherwise></xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:if> |
|
<xsl:if test="position()>= $first"> |
|
<xsl:apply-templates select="."> |
|
<xsl:with-param name="p" select="3"/> |
|
</xsl:apply-templates> |
|
</xsl:if> |
|
</xsl:for-each> |
|
<xsl:if test="$p > 3"><xsl:text>)</xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:root]]"> |
|
<xsl:text>\sqrt</xsl:text> |
|
<xsl:if test="m:degree!=2"> |
|
<xsl:text>[</xsl:text> |
|
<xsl:apply-templates select="m:degree/*"/> |
|
<xsl:text>]</xsl:text> |
|
</xsl:if> |
|
<xsl:text>{</xsl:text> |
|
<xsl:apply-templates select="*[position()>1 and not(self::m:degree)]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:gcd"><xsl:text>\gcd </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:and]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\land </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:or]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="3"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\lor </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:xor]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="3"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\mathop{\mathrm{xor}}</xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:not]]"> |
|
<xsl:text>\neg </xsl:text> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:implies]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="mo">\implies </xsl:with-param> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="this-p" select="3"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:forall or self::m:exists]]"> |
|
<xsl:text>\</xsl:text> |
|
<xsl:value-of select="local-name(*[1])"/> |
|
<xsl:text> </xsl:text> |
|
<xsl:apply-templates select="m:bvar"/> |
|
<xsl:if test="m:condition"> |
|
<xsl:text>, </xsl:text><xsl:apply-templates select="m:condition"/> |
|
</xsl:if> |
|
<xsl:if test="*[last()][local-name()!='condition'][local-name()!='bvar']"> |
|
<xsl:text>\colon </xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:abs]]"> |
|
<xsl:text>\left|</xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>\right|</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:conjugate]]"> |
|
<xsl:text>\overline{</xsl:text><xsl:apply-templates select="*[2]"/><xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:real"><xsl:text>\Re </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:imaginary"><xsl:text>\Im </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:floor]]"> |
|
<xsl:text>\left\lfloor </xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>\right\rfloor </xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:ceiling]]"> |
|
<xsl:text>\left\lceil </xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>\right\rceil </xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:eq]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">=</xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:neq]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\neq </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:gt]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">> </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:lt]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">< </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:geq]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\ge </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:leq]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\le </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:equivalent]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\equiv </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:approx]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="1"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\approx </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:factorof]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="mo"> | </xsl:with-param> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="this-p" select="3"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:int]]"> |
|
<xsl:text>\int</xsl:text> |
|
<xsl:if test="m:lowlimit/*|m:interval/*[1]|m:condition/*"> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:apply-templates select="m:lowlimit/*|m:interval/*[1]|m:condition/*"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="m:uplimit/*|m:interval/*[2]"> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="m:uplimit/*|m:interval/*[2]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:text> </xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
<xsl:text>\,d </xsl:text> |
|
<xsl:apply-templates select="m:bvar"/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:diff] and m:ci and count(*)=2]" priority="2"> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>^\prime </xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[*[1][self::m:diff]]" priority="1"> |
|
<xsl:text>\frac{</xsl:text> |
|
<xsl:choose> |
|
<xsl:when test="m:bvar/m:degree"> |
|
<xsl:text>d^{</xsl:text> |
|
<xsl:apply-templates select="m:bvar/m:degree/node()"/> |
|
<xsl:text>}</xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
<xsl:text>}{d</xsl:text> |
|
<xsl:apply-templates select="m:bvar/node()"/> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="m:bvar/m:degree/node()"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>d </xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
<xsl:text>}{d </xsl:text> |
|
<xsl:apply-templates select="m:bvar"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:partialdiff] and m:list and m:ci and count(*)=3]" priority="2"> |
|
<xsl:text>D_{</xsl:text> |
|
<xsl:for-each select="m:list[1]/*"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position()<last()"><xsl:text>, </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>}</xsl:text> |
|
<xsl:apply-templates select="*[3]"/> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[*[1][self::m:partialdiff]]" priority="1"> |
|
<xsl:text>\frac{\partial^{</xsl:text> |
|
<xsl:choose> |
|
<xsl:when test="m:degree"> |
|
<xsl:apply-templates select="m:degree/node()"/> |
|
</xsl:when> |
|
<xsl:when test="m:bvar/m:degree[string(number(.))='NaN']"> |
|
<xsl:for-each select="m:bvar/m:degree"> |
|
<xsl:apply-templates select="node()"/> |
|
<xsl:if test="position()<last()"><xsl:text>+</xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:if test="count(m:bvar[not(m:degree)])>0"> |
|
<xsl:text>+</xsl:text> |
|
<xsl:value-of select="count(m:bvar[not(m:degree)])"/> |
|
</xsl:if> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="sum(m:bvar/m:degree)+count(m:bvar[not(m:degree)])"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:text>}</xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:for-each select="m:bvar"> |
|
<xsl:text>\partial </xsl:text> |
|
<xsl:apply-templates select="node()"/> |
|
<xsl:if test="m:degree"> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="m:degree/node()"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:declare | m:lowlimit | m:uplimit | m:degree | m:momentabout"/> |
|
|
|
|
|
<xsl:template match="m:bvar"> |
|
<xsl:apply-templates/> |
|
<xsl:if test="following-sibling::m:bvar"><xsl:text>, </xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:divergence"><xsl:text>\mathop{\mathrm{div}}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:laplacian"><xsl:text>\nabla^2 </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:set"> |
|
<xsl:text>\{</xsl:text><xsl:call-template name="set"/><xsl:text>\}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:list"> |
|
<xsl:text>\left[</xsl:text><xsl:call-template name="set"/><xsl:text>\right]</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="set"> |
|
<xsl:choose> |
|
<xsl:when test="m:condition"> |
|
<xsl:apply-templates select="m:bvar/*[not(self::bvar or self::condition)]"/> |
|
<xsl:text>\colon </xsl:text> |
|
<xsl:apply-templates select="m:condition/node()"/> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:for-each select="*"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:union]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\cup </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:intersect]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="3"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\cap </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:in]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="mo">\in </xsl:with-param> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="this-p" select="3"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:notin]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="mo">\notin </xsl:with-param> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="this-p" select="3"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:subset]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\subseteq </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:prsubset]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\subset </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:notsubset]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\nsubseteq </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:notprsubset]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\not\subset </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:setdiff]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\setminus </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:card]]"> |
|
<xsl:text>|</xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>|</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:cartesianproduct or self::m:vectorproduct]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\times </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
<xsl:template |
|
match="m:apply[*[1][self::m:cartesianproduct][count(following-sibling::m:reals)=count(following-sibling::*)]]" |
|
priority="2"> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="5"/> |
|
</xsl:apply-templates> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:value-of select="count(*)-1"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:sum]]"> |
|
<xsl:text>\sum</xsl:text><xsl:call-template name="series"/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:product]]"> |
|
<xsl:text>\prod</xsl:text><xsl:call-template name="series"/> |
|
</xsl:template> |
|
|
|
<xsl:template name="series"> |
|
<xsl:if test="m:lowlimit/*|m:interval/*[1]|m:condition/*"> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:if test="not(m:condition)"> |
|
<xsl:apply-templates select="m:bvar"/> |
|
<xsl:text>=</xsl:text> |
|
</xsl:if> |
|
<xsl:apply-templates select="m:lowlimit/*|m:interval/*[1]|m:condition/*"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="m:uplimit/*|m:interval/*[2]"> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="m:uplimit/*|m:interval/*[2]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:text> </xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:limit]]"> |
|
<xsl:text>\lim_{</xsl:text> |
|
<xsl:apply-templates select="m:lowlimit|m:condition/*"/> |
|
<xsl:text>}</xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[m:limit]/m:lowlimit" priority="3"> |
|
<xsl:apply-templates select="../m:bvar/node()"/> |
|
<xsl:text>\to </xsl:text> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:tendsto]]"> |
|
<xsl:param name="p"/> |
|
<xsl:call-template name="binary"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo"> |
|
<xsl:choose> |
|
<xsl:when test="@type='above'">\searrow </xsl:when> |
|
<xsl:when test="@type='below'">\nearrow </xsl:when> |
|
<xsl:when test="@type='two-sided'">\rightarrow </xsl:when> |
|
<xsl:otherwise>\to </xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][ |
|
self::m:sin or self::m:cos or self::m:tan or self::m:sec or |
|
self::m:csc or self::m:cot or self::m:sinh or self::m:cosh or |
|
self::m:tanh or self::m:coth or self::m:arcsin or self::m:arccos or |
|
self::m:arctan or self::m:ln]]"> |
|
<xsl:text>\</xsl:text> |
|
<xsl:value-of select="local-name(*[1])"/> |
|
<xsl:text> </xsl:text> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:sin | m:cos | m:tan | m:sec | m:csc | |
|
m:cot | m:sinh | m:cosh | m:tanh | m:coth | |
|
m:arcsin | m:arccos | m:arctan | m:ln"> |
|
<xsl:text>\</xsl:text> |
|
<xsl:value-of select="local-name(.)"/> |
|
<xsl:text> </xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[*[1][ |
|
self::m:sech or self::m:csch or self::m:arccosh or |
|
self::m:arccot or self::m:arccoth or self::m:arccsc or |
|
self::m:arccsch or self::m:arcsec or self::m:arcsech or |
|
self::m:arcsinh or self::m:arctanh]]"> |
|
<xsl:text>\mathrm{</xsl:text> |
|
<xsl:value-of select="local-name(*[1])"/> |
|
<xsl:text>\,}</xsl:text> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:sech | m:csch | m:arccosh | m:arccot | |
|
m:arccoth | m:arccsc |m:arccsch |m:arcsec | |
|
m:arcsech | m:arcsinh | m:arctanh"> |
|
<xsl:text>\mathrm{</xsl:text> |
|
<xsl:value-of select="local-name(.)"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:exp]]"> |
|
<xsl:text>e^{</xsl:text><xsl:apply-templates select="*[2]"/><xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:log]]"> |
|
<xsl:text>\lg </xsl:text> |
|
<xsl:apply-templates select="*[last()]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[*[1][self::m:log] and m:logbase != 10]"> |
|
<xsl:text>\log_{</xsl:text> |
|
<xsl:apply-templates select="m:logbase/node()"/> |
|
<xsl:text>}</xsl:text> |
|
<xsl:apply-templates select="*[last()]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:mean]]"> |
|
<xsl:text>\left\langle </xsl:text> |
|
<xsl:for-each select="*[position()>1]"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position() !=last()"><xsl:text>, </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>\right\rangle </xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:sdev"><xsl:text>\sigma </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:variance]]"> |
|
<xsl:text>\sigma(</xsl:text> |
|
<xsl:apply-templates select="*[2]"/> |
|
<xsl:text>)^2</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:moment]]"> |
|
<xsl:text>\left\langle </xsl:text> |
|
<xsl:apply-templates select="*[last()]"/> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="m:degree/node()"/> |
|
<xsl:text>}\right\rangle</xsl:text> |
|
<xsl:if test="m:momentabout"> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:apply-templates select="m:momentabout/node()"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:text> </xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:vector"> |
|
<xsl:text>\left(\begin{array}{c}</xsl:text> |
|
<xsl:for-each select="*"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position()!=last()"><xsl:text>\\ </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>\end{array}\right)</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:matrix"> |
|
<xsl:text>\begin{pmatrix}</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>\end{pmatrix}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:matrixrow"> |
|
<xsl:for-each select="*"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position()!=last()"><xsl:text> & </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:if test="position()!=last()"><xsl:text>\\ </xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:determinant]]"> |
|
<xsl:text>\det </xsl:text> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:apply[*[1][self::m:determinant]][*[2][self::m:matrix]]" priority="2"> |
|
<xsl:text>\begin{vmatrix}</xsl:text> |
|
<xsl:apply-templates select="m:matrix/*"/> |
|
<xsl:text>\end{vmatrix}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:transpose]]"> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
<xsl:text>^T</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:selector]]"> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="7"/> |
|
</xsl:apply-templates> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:for-each select="*[position()>2]"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="position() !=last()"><xsl:text>, </xsl:text></xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:apply[*[1][self::m:scalarproduct or self::m:outerproduct]]"> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:call-template name="infix"> |
|
<xsl:with-param name="this-p" select="2"/> |
|
<xsl:with-param name="p" select="$p"/> |
|
<xsl:with-param name="mo">\dot </xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:semantics"><xsl:apply-templates select="*[1]"/></xsl:template> |
|
|
|
<xsl:template match="m:semantics[m:annotation/@encoding='TeX']"> |
|
<xsl:apply-templates select="m:annotation[@encoding='TeX']/node()"/> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:integers"><xsl:text>\mathbb{Z}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:reals"><xsl:text>\mathbb{R}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:rationals"><xsl:text>\mathbb{Q}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:naturalnumbers"><xsl:text>\mathbb{N}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:complexes"><xsl:text>\mathbb{C}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:primes"><xsl:text>\mathbb{P}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:exponentiale"><xsl:text>e</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:imaginaryi"><xsl:text>i</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:notanumber"><xsl:text>NaN</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:true"><xsl:text>\mbox{true}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:false"><xsl:text>\mbox{false}</xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:emptyset"><xsl:text>\emptyset </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:pi"><xsl:text>\pi </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:eulergamma"><xsl:text>\gamma </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template match="m:infinity"><xsl:text>\infty </xsl:text></xsl:template> |
|
|
|
|
|
<xsl:template name="infix" > |
|
<xsl:param name="mo"/> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:param name="this-p" select="0"/> |
|
<xsl:if test="$this-p < $p"><xsl:text>(</xsl:text></xsl:if> |
|
<xsl:for-each select="*[position()>1]"> |
|
<xsl:if test="position() > 1"> |
|
<xsl:copy-of select="$mo"/> |
|
</xsl:if> |
|
<xsl:apply-templates select="."> |
|
<xsl:with-param name="p" select="$this-p"/> |
|
</xsl:apply-templates> |
|
</xsl:for-each> |
|
<xsl:if test="$this-p < $p"><xsl:text>)</xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:template name="binary" > |
|
<xsl:param name="mo"/> |
|
<xsl:param name="p" select="0"/> |
|
<xsl:param name="this-p" select="0"/> |
|
<xsl:if test="$this-p < $p"><xsl:text>(</xsl:text></xsl:if> |
|
<xsl:apply-templates select="*[2]"> |
|
<xsl:with-param name="p" select="$this-p"/> |
|
</xsl:apply-templates> |
|
<xsl:value-of select="$mo"/> |
|
<xsl:apply-templates select="*[3]"> |
|
<xsl:with-param name="p" select="$this-p"/> |
|
</xsl:apply-templates> |
|
<xsl:if test="$this-p < $p"><xsl:text>)</xsl:text></xsl:if> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template name="replaceEntities"> |
|
<xsl:param name="content"/> |
|
<xsl:if test="string-length($content)>0"> |
|
<xsl:choose> |
|
<xsl:when test="starts-with($content,'ɛ')"><xsl:value-of select="'\varepsilon '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ɛ')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:when test="starts-with($content,'Γ')"><xsl:value-of select="'\Gamma '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Γ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Δ')"><xsl:value-of select="'\Delta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Δ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Θ')"><xsl:value-of select="'\Theta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Θ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Λ')"><xsl:value-of select="'\Lambda '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Λ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Ξ')"><xsl:value-of select="'\Xi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Ξ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Π')"><xsl:value-of select="'\Pi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Π')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Σ')"><xsl:value-of select="'\Sigma '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Σ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Φ')"><xsl:value-of select="'\Phi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Φ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Ψ')"><xsl:value-of select="'\Psi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Ψ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'Ω')"><xsl:value-of select="'\Omega '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'Ω')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'α')"><xsl:value-of select="'\alpha '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'α')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'β')"><xsl:value-of select="'\beta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'β')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'γ')"><xsl:value-of select="'\gamma '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'γ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'δ')"><xsl:value-of select="'\delta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'δ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ε')"><xsl:value-of select="'\epsilon '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ε')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ζ')"><xsl:value-of select="'\zeta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ζ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'η')"><xsl:value-of select="'\eta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'η')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'θ')"><xsl:value-of select="'\theta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'θ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ι')"><xsl:value-of select="'\iota '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ι')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'κ')"><xsl:value-of select="'\kappa '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'κ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'λ')"><xsl:value-of select="'\lambda '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'λ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'μ')"><xsl:value-of select="'\mu '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'μ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ν')"><xsl:value-of select="'\nu '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ν')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ξ')"><xsl:value-of select="'\xi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ξ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'π')"><xsl:value-of select="'\pi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'π')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ρ')"><xsl:value-of select="'\rho '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ρ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ς')"><xsl:value-of select="'\varsigma '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ς')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'σ')"><xsl:value-of select="'\sigma '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'σ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'τ')"><xsl:value-of select="'\tau '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'τ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'υ')"><xsl:value-of select="'\upsilon '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'υ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'φ')"><xsl:value-of select="'\phi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'φ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'χ')"><xsl:value-of select="'\chi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'χ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ψ')"><xsl:value-of select="'\psi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ψ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ω')"><xsl:value-of select="'\omega '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ω')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ϑ')"><xsl:value-of select="'\vartheta '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ϑ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ϒ')"><xsl:value-of select="'\Upsilon '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ϒ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ϕ')"><xsl:value-of select="'\varphi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ϕ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ϖ')"><xsl:value-of select="'\varpi '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ϖ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ϰ')"><xsl:value-of select="'\varkappa '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ϰ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ϱ')"><xsl:value-of select="'\varrho '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ϱ')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'​')"><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '​')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'…')"><xsl:value-of select="'\dots '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '…')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'′')"><xsl:value-of select="'\prime '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '′')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⁡')"><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⁡')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⁢')"><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⁢')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:when test="starts-with($content,'ℏ︀')"><xsl:value-of select="'\hbar '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℏ︀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℏ')"><xsl:value-of select="'\hslash '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℏ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℑ')"><xsl:value-of select="'\Im '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℑ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℓ')"><xsl:value-of select="'\ell '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℓ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'℘')"><xsl:value-of select="'\wp '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '℘')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℜ')"><xsl:value-of select="'\Re '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℜ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'℧')"><xsl:value-of select="'\mho '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '℧')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℵ')"><xsl:value-of select="'\aleph '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℵ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℶ')"><xsl:value-of select="'\beth '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℶ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℷ')"><xsl:value-of select="'\gimel '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℷ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ℸ')"><xsl:value-of select="'\daleth '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ℸ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ⅅ')"><xsl:value-of select="'D'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ⅅ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ⅆ')"><xsl:value-of select="'d'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ⅆ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ⅇ')"><xsl:value-of select="'e'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ⅇ')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'ⅈ')"><xsl:value-of select="'i'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, 'ⅈ')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'→')"><xsl:value-of select="'\to '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '→')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:when test="starts-with($content,'∀')"><xsl:value-of select="'\forall '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∁')"><xsl:value-of select="'\complement '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∁')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∂')"><xsl:value-of select="'\partial '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∂')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∃')"><xsl:value-of select="'\exists '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∃')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∄')"><xsl:value-of select="'\nexists '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∄')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∅︀')"><xsl:value-of select="'\emptyset '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∅︀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∅')"><xsl:value-of select="'\varnothing '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∅')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'∇')"><xsl:value-of select="'\nabla '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∇')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∈')"><xsl:value-of select="'\in '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∈')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∉')"><xsl:value-of select="'\notin '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∉')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∋')"><xsl:value-of select="'\ni '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∋')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∌')"><xsl:value-of select="'\not\ni '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∌')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∏')"><xsl:value-of select="'\prod '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∏')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∐')"><xsl:value-of select="'\coprod '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∐')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∑')"><xsl:value-of select="'\sum '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∑')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'−')"><xsl:value-of select="'-'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '−')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∓')"><xsl:value-of select="'\mp '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∓')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∔')"><xsl:value-of select="'\dotplus '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∔')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'∖')"><xsl:value-of select="'\setminus '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∖')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∗')"><xsl:value-of select="'\ast '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∗')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∘')"><xsl:value-of select="'\circ '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∘')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∙')"><xsl:value-of select="'\bullet '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∙')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'√')"><xsl:value-of select="'\surd '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '√')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∝')"><xsl:value-of select="'\propto '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∝')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∞')"><xsl:value-of select="'\infty '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∞')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'∠')"><xsl:value-of select="'\angle '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∠')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∡')"><xsl:value-of select="'\measuredangle '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∡')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∢')"><xsl:value-of select="'\sphericalangle '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∢')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∣')"><xsl:value-of select="'\mid '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∣')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∤︀')"><xsl:value-of select="'\nshortmid '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∤︀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∤')"><xsl:value-of select="'\nmid '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∤')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∥')"><xsl:value-of select="'\parallel '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∥')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∦︀')"><xsl:value-of select="'\nshortparallel '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∦︀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∦')"><xsl:value-of select="'\nparallel '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∦')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∧')"><xsl:value-of select="'\wedge '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∧')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∨')"><xsl:value-of select="'\vee '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∨')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∩')"><xsl:value-of select="'\cap '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∩')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∪')"><xsl:value-of select="'\cup '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∪')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∫')"><xsl:value-of select="'\int '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∫')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∬')"><xsl:value-of select="'\iint '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∬')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∭')"><xsl:value-of select="'\iiint '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∭')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∮')"><xsl:value-of select="'\oint '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∮')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
|
|
|
|
|
|
<xsl:when test="starts-with($content,'∴')"><xsl:value-of select="'\therefore '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∴')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∵')"><xsl:value-of select="'\because '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∵')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∶')"><xsl:value-of select="':'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∶')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∷')"><xsl:value-of select="'\colon\colon '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∷')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∸')"><xsl:value-of select="'\dot{-}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∸')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
|
|
<xsl:when test="starts-with($content,'∼')"><xsl:value-of select="'\sim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∼')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'∽')"><xsl:value-of select="'\backsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '∽')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'≀')"><xsl:value-of select="'\wr '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≁')"><xsl:value-of select="'\nsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≁')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≂')"><xsl:value-of select="'\eqsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≂')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≃')"><xsl:value-of select="'\simeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≃')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≄')"><xsl:value-of select="'\not\simeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≄')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≅')"><xsl:value-of select="'\cong '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≅')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'≇')"><xsl:value-of select="'\ncong '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≇')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≈')"><xsl:value-of select="'\approx '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≈')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'≉')"><xsl:value-of select="'\not\approx '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≉')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≊')"><xsl:value-of select="'\approxeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≊')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'≍')"><xsl:value-of select="'\asymp '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≍')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≎')"><xsl:value-of select="'\Bumpeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≎')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≏')"><xsl:value-of select="'\bumpeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≏')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≐')"><xsl:value-of select="'\doteq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≐')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≑')"><xsl:value-of select="'\doteqdot '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≑')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≒')"><xsl:value-of select="'\fallingdotseq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≒')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≓')"><xsl:value-of select="'\risingdotseq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≓')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'≖')"><xsl:value-of select="'\eqcirc '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≖')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≗')"><xsl:value-of select="'\circeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≗')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≘')"><xsl:value-of select="'\stackrel{\frown}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≘')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≙')"><xsl:value-of select="'\stackrel{\wedge}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≙')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≚')"><xsl:value-of select="'\stackrel{\vee}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≚')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≛')"><xsl:value-of select="'\stackrel{\star}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≛')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≜')"><xsl:value-of select="'\triangleq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≜')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≝')"><xsl:value-of select="'\stackrel{\scriptscriptstyle\mathrm{def}}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≝')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≞')"><xsl:value-of select="'\stackrel{\scriptscriptstyle\mathrm{m}}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≞')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≟')"><xsl:value-of select="'\stackrel{?}{=}'" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≟')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'≠')"><xsl:value-of select="'\ne '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≠')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'≡')"><xsl:value-of select="'\equiv '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≡')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≢')"><xsl:value-of select="'\not\equiv '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≢')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'≤')"><xsl:value-of select="'\le '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≤')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≥')"><xsl:value-of select="'\ge '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≥')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≦')"><xsl:value-of select="'\leqq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≦')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≧')"><xsl:value-of select="'\geqq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≧')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≨')"><xsl:value-of select="'\lneqq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≨')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≩')"><xsl:value-of select="'\gneqq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≩')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'≪')"><xsl:value-of select="'\ll '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≪')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'≫')"><xsl:value-of select="'\gg '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≫')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≬')"><xsl:value-of select="'\between '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≬')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≭')"><xsl:value-of select="'\not\asymp '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≭')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≮')"><xsl:value-of select="'\nless '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≮')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≯')"><xsl:value-of select="'\ngtr '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≯')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≰⃥')"><xsl:value-of select="'\nleq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≰⃥')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≰')"><xsl:value-of select="'\nleqq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≰')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≱⃥')"><xsl:value-of select="'\ngeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≱⃥')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≱')"><xsl:value-of select="'\ngeqq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≱')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≲')"><xsl:value-of select="'\lesssim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≲')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≳')"><xsl:value-of select="'\gtrsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≳')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≴')"><xsl:value-of select="'\not\lesssim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≴')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≵')"><xsl:value-of select="'\not\gtrsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≵')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≶')"><xsl:value-of select="'\lessgtr '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≶')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≷')"><xsl:value-of select="'\gtrless '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≷')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≸')"><xsl:value-of select="'\not\lessgtr '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≸')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≹')"><xsl:value-of select="'\not\gtrless '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≹')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≺')"><xsl:value-of select="'\prec '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≺')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≻')"><xsl:value-of select="'\succ '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≻')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≼')"><xsl:value-of select="'\preccurlyeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≼')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≽')"><xsl:value-of select="'\succcurlyeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≽')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≾')"><xsl:value-of select="'\precsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≾')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'≿')"><xsl:value-of select="'\succsim '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '≿')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊀')"><xsl:value-of select="'\nprec '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊁')"><xsl:value-of select="'\nsucc '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊁')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊂')"><xsl:value-of select="'\subset '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊂')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊃')"><xsl:value-of select="'\supset '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊃')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊄')"><xsl:value-of select="'\not\subset '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊄')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊅')"><xsl:value-of select="'\not\supset '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊅')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊆')"><xsl:value-of select="'\subseteq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊆')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊇')"><xsl:value-of select="'\supseteq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊇')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊎')"><xsl:value-of select="'\uplus '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊎')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊓')"><xsl:value-of select="'\sqcap '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊓')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊔')"><xsl:value-of select="'\bigsqcup '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊔')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊕')"><xsl:value-of select="'\oplus '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊕')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊖')"><xsl:value-of select="'\ominus '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊖')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊗')"><xsl:value-of select="'\otimes '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊗')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊘')"><xsl:value-of select="'\oslash '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊘')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊙')"><xsl:value-of select="'\odot '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊙')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊟')"><xsl:value-of select="'\boxminus '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊟')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊤')"><xsl:value-of select="'\top '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊤')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊥')"><xsl:value-of select="'\perp '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊥')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊦')"><xsl:value-of select="'\vdash '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊦')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊧')"><xsl:value-of select="'\vDash '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊧')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊨')"><xsl:value-of select="'\models '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊨')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⊪')"><xsl:value-of select="'\Vvdash '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⊪')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋀')"><xsl:value-of select="'\bigwedge '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋀')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋁')"><xsl:value-of select="'\bigvee '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋁')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋂')"><xsl:value-of select="'\bigcap '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋂')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋃')"><xsl:value-of select="'\bigcup '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋃')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋄')"><xsl:value-of select="'\diamond '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋄')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋅')"><xsl:value-of select="'\cdot '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋅')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋆')"><xsl:value-of select="'\star '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋆')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋇')"><xsl:value-of select="'\divideontimes '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋇')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋈')"><xsl:value-of select="'\bowtie '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋈')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋍')"><xsl:value-of select="'\backsimeq '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋍')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'⋯')"><xsl:value-of select="'\cdots '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋯')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test="starts-with($content,'⋱')"><xsl:value-of select="'\ddots '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '⋱')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:when test="starts-with($content,'□')"><xsl:value-of select="'\square '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '□')"/></xsl:call-template></xsl:when> |
|
<xsl:when test="starts-with($content,'▪')"><xsl:value-of select="'\blacksquare '" /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '▪')"/></xsl:call-template></xsl:when> |
|
|
|
<xsl:when test='starts-with($content,"'")'><xsl:value-of select='"\text{'}"' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select='substring-after($content, "'")'/></xsl:call-template></xsl:when> |
|
<xsl:when test='starts-with($content,"(")'><xsl:value-of select='"\left("' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '(')"/></xsl:call-template></xsl:when> |
|
<xsl:when test='starts-with($content,")")'><xsl:value-of select='"\right)"' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, ')')"/></xsl:call-template></xsl:when> |
|
<xsl:when test='starts-with($content,"[")'><xsl:value-of select='"\left["' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '[')"/></xsl:call-template></xsl:when> |
|
<xsl:when test='starts-with($content,"]")'><xsl:value-of select='"\right]"' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, ']')"/></xsl:call-template></xsl:when> |
|
<xsl:when test='starts-with($content,"{")'><xsl:value-of select='"\left\{"' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '{')"/></xsl:call-template></xsl:when> |
|
<xsl:when test='starts-with($content,"}")'><xsl:value-of select='"\right\}"' /><xsl:call-template name="replaceEntities"><xsl:with-param name="content" select="substring-after($content, '}')"/></xsl:call-template></xsl:when> |
|
|
|
|
|
<xsl:otherwise> |
|
<xsl:value-of select="substring($content,1,1)"/> |
|
<xsl:call-template name="replaceEntities"> |
|
<xsl:with-param name="content" select="substring($content, 2)"/> |
|
</xsl:call-template> |
|
</xsl:otherwise> |
|
</xsl:choose></xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:template name="replaceMtextEntities"> |
|
<xsl:param name="content"/> |
|
<xsl:choose> |
|
<xsl:when test="contains($content,'   ')"> |
|
<xsl:call-template name="replaceMtextEntities"> |
|
<xsl:with-param name="content" select="concat(substring-before($content,'   '),'\hspace{0.28em}',substring-after($content,'   '))"/> |
|
</xsl:call-template> |
|
</xsl:when> |
|
<xsl:when test="contains($content,' ')"> |
|
<xsl:call-template name="replaceMtextEntities"> |
|
<xsl:with-param name="content" select="concat(substring-before($content,' '),'\hspace{0.17em}',substring-after($content,' '))"/> |
|
</xsl:call-template> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="normalize-space($content)"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="m:mtd[@columnspan]"> |
|
<xsl:text>\multicolumn{</xsl:text> |
|
<xsl:value-of select="@columnspan"/> |
|
<xsl:text>}{c}{</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>}</xsl:text> |
|
<xsl:if test="count(following-sibling::*)>0"> |
|
<xsl:text>& </xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template match="m:mtd"> |
|
<xsl:if test="@columnalign='right' or @columnalign='center'"> |
|
<xsl:text>\hfill </xsl:text> |
|
</xsl:if> |
|
<xsl:apply-templates/> |
|
<xsl:if test="@columnalign='left' or @columnalign='center'"> |
|
<xsl:text>\hfill </xsl:text> |
|
</xsl:if> |
|
<xsl:if test="count(following-sibling::*)>0"> |
|
|
|
|
|
<xsl:text>& </xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mtr"> |
|
<xsl:apply-templates/> |
|
<xsl:if test="count(following-sibling::*)>0"> |
|
<xsl:text>\\ </xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mtable"> |
|
<xsl:text>\begin{array}{</xsl:text> |
|
<xsl:if test="@frame='solid'"> |
|
<xsl:text>|</xsl:text> |
|
</xsl:if> |
|
<xsl:variable name="numbercols" select="count(./m:mtr[1]/m:mtd[not(@columnspan)])+sum(./m:mtr[1]/m:mtd/@columnspan)"/> |
|
<xsl:choose> |
|
<xsl:when test="@columnalign"> |
|
<xsl:variable name="colalign"> |
|
<xsl:call-template name="colalign"> |
|
<xsl:with-param name="colalign" select="@columnalign"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:choose> |
|
<xsl:when test="string-length($colalign) > $numbercols"> |
|
<xsl:value-of select="substring($colalign,1,$numbercols)"/> |
|
</xsl:when> |
|
<xsl:when test="string-length($colalign) < $numbercols"> |
|
<xsl:value-of select="$colalign"/> |
|
<xsl:call-template name="generate-string"> |
|
<xsl:with-param name="text" select="substring($colalign,string-length($colalign))"/> |
|
<xsl:with-param name="count" select="$numbercols - string-length($colalign)"/> |
|
</xsl:call-template> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="$colalign"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:call-template name="generate-string"> |
|
<xsl:with-param name="text" select="'c'"/> |
|
<xsl:with-param name="count" select="$numbercols"/> |
|
</xsl:call-template> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:if test="@frame='solid'"> |
|
<xsl:text>|</xsl:text> |
|
</xsl:if> |
|
<xsl:text>}</xsl:text> |
|
<xsl:if test="@frame='solid'"> |
|
<xsl:text>\hline </xsl:text> |
|
</xsl:if> |
|
<xsl:apply-templates/> |
|
<xsl:if test="@frame='solid'"> |
|
<xsl:text>\\ \hline</xsl:text> |
|
</xsl:if> |
|
<xsl:text>\end{array}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="colalign"> |
|
<xsl:param name="colalign"/> |
|
<xsl:choose> |
|
<xsl:when test="contains($colalign,' ')"> |
|
<xsl:value-of select="substring($colalign,1,1)"/> |
|
<xsl:call-template name="colalign"> |
|
<xsl:with-param name="colalign" select="substring-after($colalign,' ')"/> |
|
</xsl:call-template> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="substring($colalign,1,1)"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template name="generate-string"> |
|
|
|
<xsl:param name="text"/> |
|
<xsl:param name="count"/> |
|
|
|
<xsl:choose> |
|
<xsl:when test="string-length($text) = 0 or $count <= 0"/> |
|
|
|
<xsl:otherwise> |
|
<xsl:value-of select="$text"/> |
|
<xsl:call-template name="generate-string"> |
|
<xsl:with-param name="text" select="$text"/> |
|
<xsl:with-param name="count" select="$count - 1"/> |
|
</xsl:call-template> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="m:munderover"> |
|
<xsl:variable name="base"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[1]"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:variable name="under"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[2]"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:variable name="over"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[3]"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
|
|
<xsl:choose> |
|
<xsl:when test="$over='¯'"> |
|
<xsl:text>\overline{</xsl:text> |
|
<xsl:call-template name="munder"> |
|
<xsl:with-param name="base" select="$base"/> |
|
<xsl:with-param name="under" select="$under"/> |
|
</xsl:call-template> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="$over='︷'"> |
|
<xsl:text>\overbrace{</xsl:text> |
|
<xsl:call-template name="munder"> |
|
<xsl:with-param name="base" select="$base"/> |
|
<xsl:with-param name="under" select="$under"/> |
|
</xsl:call-template> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="$under='̲'"> |
|
<xsl:text>\underline{</xsl:text> |
|
<xsl:call-template name="mover"> |
|
<xsl:with-param name="base" select="$base"/> |
|
<xsl:with-param name="over" select="$over"/> |
|
<xsl:with-param name="pos_over" select="3"/> |
|
</xsl:call-template> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="$under='︸'"> |
|
<xsl:text>\underbrace{</xsl:text> |
|
<xsl:call-template name="mover"> |
|
<xsl:with-param name="base" select="$base"/> |
|
<xsl:with-param name="over" select="$over"/> |
|
<xsl:with-param name="pos_over" select="3"/> |
|
</xsl:call-template> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="translate($base,'∏∐⋂⋃⊔', |
|
'∑∑∑∑∑')='∑'"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}^{</xsl:text> |
|
<xsl:apply-templates select="./*[3]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>\underset{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}{\overset{</xsl:text> |
|
<xsl:apply-templates select="./*[3]"/> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}}</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mover"> |
|
<xsl:call-template name="mover"> |
|
<xsl:with-param name="base"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[1]"/> |
|
</xsl:call-template> |
|
</xsl:with-param> |
|
<xsl:with-param name="over"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[2]"/> |
|
</xsl:call-template> |
|
</xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:munder"> |
|
<xsl:call-template name="munder"> |
|
<xsl:with-param name="base"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[1]"/> |
|
</xsl:call-template> |
|
</xsl:with-param> |
|
<xsl:with-param name="under"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="./*[2]"/> |
|
</xsl:call-template> |
|
</xsl:with-param> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
<xsl:template name="mover"> |
|
<xsl:param name="base"/> |
|
<xsl:param name="over"/> |
|
<xsl:param name="pos_over" select="2"/> |
|
<xsl:choose> |
|
<xsl:when test="$over='¯'"> |
|
<xsl:text>\overline{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="$over='︷'"> |
|
<xsl:text>\overbrace{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="translate($base,'∏∐⋂⋃⊔', |
|
'∑∑∑∑∑')='∑'"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="./*[$pos_over]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>\stackrel{</xsl:text> |
|
<xsl:apply-templates select="./*[$pos_over]"/> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
|
|
|
|
|
|
|
|
|
|
|
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template name="munder"> |
|
<xsl:param name="base"/> |
|
<xsl:param name="under"/> |
|
<xsl:choose> |
|
<xsl:when test="$under='̲'"> |
|
<xsl:text>\underline{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="$under='︸'"> |
|
<xsl:text>\underbrace{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="translate($base,'∏∐⋂⋃⊔', |
|
'∑∑∑∑∑')='∑'"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>\underset{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:msubsup"> |
|
<xsl:text>{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}_{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}^{</xsl:text> |
|
<xsl:apply-templates select="./*[3]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:msup"> |
|
<xsl:text>{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}^{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:msub"> |
|
<xsl:text>{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}_{</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mmultiscripts" mode="mprescripts"> |
|
<xsl:for-each select="m:mprescripts/following-sibling::*"> |
|
<xsl:if test="position() mod 2 and local-name(.)!='none'"> |
|
<xsl:text>{}_{</xsl:text> |
|
<xsl:apply-templates select="."/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="not(position() mod 2) and local-name(.)!='none'"> |
|
<xsl:text>{}^{</xsl:text> |
|
<xsl:apply-templates select="."/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
</xsl:for-each> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:for-each select="m:mprescripts/preceding-sibling::*[position()!=last()]"> |
|
<xsl:if test="position()>2 and local-name(.)!='none'"> |
|
<xsl:text>{}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="position() mod 2 and local-name(.)!='none'"> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:apply-templates select="."/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="not(position() mod 2) and local-name(.)!='none'"> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="."/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
</xsl:for-each> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mmultiscripts"> |
|
<xsl:choose> |
|
<xsl:when test="m:mprescripts"> |
|
<xsl:apply-templates select="." mode="mprescripts"/> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:for-each select="*[position()>1]"> |
|
<xsl:if test="position()>2 and local-name(.)!='none'"> |
|
<xsl:text>{}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="position() mod 2 and local-name(.)!='none'"> |
|
<xsl:text>_{</xsl:text> |
|
<xsl:apply-templates select="."/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="not(position() mod 2) and local-name(.)!='none'"> |
|
<xsl:text>^{</xsl:text> |
|
<xsl:apply-templates select="."/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
</xsl:for-each> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="m:mfrac"> |
|
<xsl:choose> |
|
<xsl:when test="@bevelled='true'"> |
|
|
|
|
|
|
|
|
|
|
|
</xsl:when> |
|
<xsl:when test="@linethickness"> |
|
<xsl:text>\genfrac{}{}{</xsl:text> |
|
<xsl:choose> |
|
<xsl:when test="number(@linethickness)"> |
|
<xsl:value-of select="@linethickness div 10"/> |
|
<xsl:text>ex</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@linethickness='thin'"> |
|
<xsl:text>.05ex</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@linethickness='medium'"/> |
|
<xsl:when test="@linethickness='thick'"> |
|
<xsl:text>.2ex</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="@linethickness"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:text>}{}{</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>\frac{</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:if test="@numalign='right'"> |
|
<xsl:text>\hfill </xsl:text> |
|
</xsl:if> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:if test="@numalign='left'"> |
|
<xsl:text>\hfill </xsl:text> |
|
</xsl:if> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:if test="@denomalign='right'"> |
|
<xsl:text>\hfill </xsl:text> |
|
</xsl:if> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:if test="@denomalign='left'"> |
|
<xsl:text>\hfill </xsl:text> |
|
</xsl:if> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mroot"> |
|
<xsl:choose> |
|
<xsl:when test="count(./*)=2"> |
|
<xsl:text>\sqrt[</xsl:text> |
|
<xsl:apply-templates select="./*[2]"/> |
|
<xsl:text>]{</xsl:text> |
|
<xsl:apply-templates select="./*[1]"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
|
|
<xsl:message>exception 25:</xsl:message> |
|
<xsl:text>\text{exception 25:}</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:msqrt"> |
|
<xsl:text>\sqrt{</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mfenced"> |
|
<xsl:choose> |
|
<xsl:when test="@open"> |
|
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')='{'"> |
|
<xsl:text>\left</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@open='{' or @open='}'"> |
|
<xsl:text>\</xsl:text> |
|
</xsl:if> |
|
<xsl:value-of select="@open"/> |
|
</xsl:when> |
|
<xsl:otherwise><xsl:text>\left(</xsl:text></xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:choose> |
|
<xsl:when test="count(./*)>1"> |
|
<xsl:variable name="symbol"> |
|
<xsl:choose> |
|
<xsl:when test="@separators"> |
|
<xsl:call-template name="startspace"> |
|
<xsl:with-param name="symbol" select="@separators"/> |
|
</xsl:call-template> |
|
</xsl:when> |
|
<xsl:otherwise>,</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:variable> |
|
<xsl:for-each select="./*"> |
|
<xsl:apply-templates select="."/> |
|
<xsl:if test="not(position()=last())"> |
|
<xsl:choose> |
|
<xsl:when test="position()>string-length($symbol)"> |
|
<xsl:value-of select="substring($symbol,string-length($symbol))"/> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="substring($symbol,position(),1)"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:if> |
|
</xsl:for-each> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:apply-templates/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
<xsl:choose> |
|
<xsl:when test="@close"> |
|
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')='{'"> |
|
<xsl:text>\right</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@open='{' or @open='}'"> |
|
<xsl:text>\</xsl:text> |
|
</xsl:if> |
|
<xsl:value-of select="@close"/> |
|
</xsl:when> |
|
<xsl:otherwise><xsl:text>\right)</xsl:text></xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mphantom"> |
|
<xsl:text>\phantom{</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:menclose"> |
|
<xsl:choose> |
|
<xsl:when test="@notation = 'actuarial'"> |
|
<xsl:text>\overline{</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>\hspace{.2em}|}</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@notation = 'radical'"> |
|
<xsl:text>\sqrt{</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>\overline{)</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mrow"> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mstyle"> |
|
<xsl:if test="@background"> |
|
<xsl:text>\colorbox[rgb]{</xsl:text> |
|
<xsl:call-template name="color"> |
|
<xsl:with-param name="color" select="@background"/> |
|
</xsl:call-template> |
|
<xsl:text>}{$</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@color"> |
|
<xsl:text>\textcolor[rgb]{</xsl:text> |
|
<xsl:call-template name="color"> |
|
<xsl:with-param name="color" select="@color"/> |
|
</xsl:call-template> |
|
<xsl:text>}{</xsl:text> |
|
</xsl:if> |
|
<xsl:apply-templates/> |
|
<xsl:if test="@color"> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@background"> |
|
<xsl:text>$}</xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="m:merror"> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="m:mi|m:mn|m:mo|m:mtext|m:ms"> |
|
<xsl:call-template name="CommonTokenAtr"/> |
|
</xsl:template> |
|
|
|
<xsl:template name="mi"> |
|
<xsl:choose> |
|
<xsl:when test="string-length(normalize-space(.))>1 and not(@mathvariant)"> |
|
<xsl:text>\mathrm{</xsl:text> |
|
<xsl:apply-templates/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:apply-templates/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template name="mn"> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
|
|
<xsl:template name="mo"> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
|
|
<xsl:template name="mtext"> |
|
<xsl:variable name="content"> |
|
<xsl:call-template name="replaceMtextEntities"> |
|
<xsl:with-param name="content" select="."/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:text>\text{</xsl:text> |
|
<xsl:value-of select="$content"/> |
|
<xsl:text>}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:mspace"> |
|
<xsl:text>\phantom{\rule</xsl:text> |
|
<xsl:if test="@depth"> |
|
<xsl:text>[-</xsl:text> |
|
<xsl:value-of select="@depth"/> |
|
<xsl:text>]</xsl:text> |
|
</xsl:if> |
|
<xsl:text>{</xsl:text> |
|
<xsl:if test="not(@width)"> |
|
<xsl:text>0ex</xsl:text> |
|
</xsl:if> |
|
<xsl:value-of select="@width"/> |
|
<xsl:text>}{</xsl:text> |
|
<xsl:if test="not(@height)"> |
|
<xsl:text>0ex</xsl:text> |
|
</xsl:if> |
|
<xsl:value-of select="@height"/> |
|
<xsl:text>}}</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="ms"> |
|
<xsl:choose> |
|
<xsl:when test="@lquote"><xsl:value-of select="@lquote"/></xsl:when> |
|
<xsl:otherwise><xsl:text>"</xsl:text></xsl:otherwise> |
|
</xsl:choose><xsl:apply-templates/><xsl:choose> |
|
<xsl:when test="@rquote"><xsl:value-of select="@rquote"/></xsl:when> |
|
<xsl:otherwise><xsl:text>"</xsl:text></xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template name="CommonTokenAtr"> |
|
<xsl:if test="@mathbackground"> |
|
<xsl:text>\colorbox[rgb]{</xsl:text> |
|
<xsl:call-template name="color"> |
|
<xsl:with-param name="color" select="@mathbackground"/> |
|
</xsl:call-template> |
|
<xsl:text>}{$</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@color or @mathcolor"> |
|
<xsl:text>\textcolor[rgb]{</xsl:text> |
|
<xsl:call-template name="color"> |
|
<xsl:with-param name="color" select="@color|@mathcolor"/> |
|
</xsl:call-template> |
|
<xsl:text>}{</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@mathvariant"> |
|
<xsl:choose> |
|
<xsl:when test="@mathvariant='normal'"> |
|
<xsl:text>\mathrm{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='bold'"> |
|
<xsl:text>\mathbf{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='italic'"> |
|
<xsl:text>\mathit{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='bold-italic'"> |
|
<xsl:text>\mathbit{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='double-struck'"> |
|
<xsl:text>\mathbb{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='bold-fraktur'"> |
|
<xsl:text>{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='script'"> |
|
<xsl:text>\mathcal{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='bold-script'"> |
|
<xsl:text>\mathsc{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='fraktur'"> |
|
<xsl:text>\mathfrak{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='sans-serif'"> |
|
<xsl:text>\mathsf{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='bold-sans-serif'"> |
|
<xsl:text>\mathbsf{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='sans-serif-italic'"> |
|
<xsl:text>\mathsfit{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='sans-serif-bold-italic'"> |
|
<xsl:text>\mathbsfit{</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="@mathvariant='monospace'"> |
|
<xsl:text>\mathtt{</xsl:text> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:text>{</xsl:text> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:if> |
|
<xsl:call-template name="selectTemplate"/> |
|
<xsl:if test="@mathvariant"> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@color or @mathcolor"> |
|
<xsl:text>}</xsl:text> |
|
</xsl:if> |
|
<xsl:if test="@mathbackground"> |
|
<xsl:text>$}</xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<xsl:template name="selectTemplate"> |
|
|
|
|
|
<xsl:choose> |
|
<xsl:when test="local-name(.)='mi'"> |
|
<xsl:call-template name="mi"/> |
|
</xsl:when> |
|
<xsl:when test="local-name(.)='mn'"> |
|
<xsl:call-template name="mn"/> |
|
</xsl:when> |
|
<xsl:when test="local-name(.)='mo'"> |
|
<xsl:call-template name="mo"/> |
|
</xsl:when> |
|
<xsl:when test="local-name(.)='mtext'"> |
|
<xsl:call-template name="mtext"/> |
|
</xsl:when> |
|
<xsl:when test="local-name(.)='ms'"> |
|
<xsl:call-template name="ms"/> |
|
</xsl:when> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template name="color"> |
|
|
|
<xsl:param name="color"/> |
|
<xsl:variable name="colora" select="translate($color,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/> |
|
<xsl:choose> |
|
<xsl:when test="starts-with($colora,'#') and string-length($colora)=4"> |
|
<xsl:variable name="valueColor"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,2,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:value-of select="$valueColor div 15"/><xsl:text>,</xsl:text> |
|
<xsl:variable name="valueColor1"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,3,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:value-of select="$valueColor1 div 15"/><xsl:text>,</xsl:text> |
|
<xsl:variable name="valueColor2"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,4,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:value-of select="$valueColor2 div 15"/> |
|
</xsl:when> |
|
<xsl:when test="starts-with($colora,'#') and string-length($colora)=7"> |
|
<xsl:variable name="valueColor1"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,2,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:variable name="valueColor2"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,3,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:value-of select="($valueColor1*16 + $valueColor2) div 255"/><xsl:text>,</xsl:text> |
|
<xsl:variable name="valueColor1a"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,4,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:variable name="valueColor2a"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,5,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:value-of select="($valueColor1a*16 + $valueColor2a) div 255"/><xsl:text>,</xsl:text> |
|
<xsl:variable name="valueColor1b"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,6,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:variable name="valueColor2b"> |
|
<xsl:call-template name="Hex2Decimal"> |
|
<xsl:with-param name="arg" select="substring($colora,7,1)"/> |
|
</xsl:call-template> |
|
</xsl:variable> |
|
<xsl:value-of select="($valueColor1b*16 + $valueColor2b) div 255"/> |
|
</xsl:when> |
|
|
|
<xsl:when test="$colora='aqua'"><xsl:text>0,1,1</xsl:text></xsl:when> |
|
<xsl:when test="$colora='black'"><xsl:text>0,0,0</xsl:text></xsl:when> |
|
<xsl:when test="$colora='blue'"><xsl:text>0,0,1</xsl:text></xsl:when> |
|
<xsl:when test="$colora='fuchsia'"><xsl:text>1,0,1</xsl:text></xsl:when> |
|
<xsl:when test="$colora='gray'"><xsl:text>.5,.5,.5</xsl:text></xsl:when> |
|
<xsl:when test="$colora='green'"><xsl:text>0,.5,0</xsl:text></xsl:when> |
|
<xsl:when test="$colora='lime'"><xsl:text>0,1,0</xsl:text></xsl:when> |
|
<xsl:when test="$colora='maroon'"><xsl:text>.5,0,0</xsl:text></xsl:when> |
|
<xsl:when test="$colora='navy'"><xsl:text>0,0,.5</xsl:text></xsl:when> |
|
<xsl:when test="$colora='olive'"><xsl:text>.5,.5,0</xsl:text></xsl:when> |
|
<xsl:when test="$colora='purple'"><xsl:text>.5,0,.5</xsl:text></xsl:when> |
|
<xsl:when test="$colora='red'"><xsl:text>1,0,0</xsl:text></xsl:when> |
|
<xsl:when test="$colora='silver'"><xsl:text>.75,.75,.75</xsl:text></xsl:when> |
|
<xsl:when test="$colora='teal'"><xsl:text>0,.5,.5</xsl:text></xsl:when> |
|
<xsl:when test="$colora='white'"><xsl:text>1,1,1</xsl:text></xsl:when> |
|
<xsl:when test="$colora='yellow'"><xsl:text>1,1,0</xsl:text></xsl:when> |
|
<xsl:otherwise> |
|
<xsl:message>Exception at color template</xsl:message> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template name="Hex2Decimal"> |
|
<xsl:param name="arg"/> |
|
<xsl:choose> |
|
<xsl:when test="$arg='f'"> |
|
<xsl:value-of select="15"/> |
|
</xsl:when> |
|
<xsl:when test="$arg='e'"> |
|
<xsl:value-of select="14"/> |
|
</xsl:when> |
|
<xsl:when test="$arg='d'"> |
|
<xsl:value-of select="13"/> |
|
</xsl:when> |
|
<xsl:when test="$arg='c'"> |
|
<xsl:value-of select="12"/> |
|
</xsl:when> |
|
<xsl:when test="$arg='b'"> |
|
<xsl:value-of select="11"/> |
|
</xsl:when> |
|
<xsl:when test="$arg='a'"> |
|
<xsl:value-of select="10"/> |
|
</xsl:when> |
|
<xsl:when test="translate($arg, '0123456789', '9999999999')='9'"> |
|
<xsl:value-of select="$arg"/> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:message>Exception at Hex2Decimal template</xsl:message> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<xsl:template match="m:*/text()"> |
|
<xsl:call-template name="replaceEntities"> |
|
<xsl:with-param name="content" select="normalize-space()"/> |
|
</xsl:call-template> |
|
</xsl:template> |
|
|
|
</xsl:stylesheet> |
|
|