我正在使用样式表将 MathML 转换为 LaTeX。当我尝试转换时:
<mrow>
<mo>|</mo>
<mi>a</mi>
<mo>|</mo>
</mrow>
在乳胶中应写为:
\left\vert a \right\vert
现在问题来了。我可以轻松写出:
\vert a \vert
但是,如果“a”不是“a”,而是某个较大的表达式,则垂直线不会像表达式那样高,而是保持较小。这就是\left
和\right
的用途。有没有我在这里没有看到的简单方法可以做到这一点,或者我需要以某种方式解析 MathML,这样我才能知道哪条垂直线在左边,哪条在右边?谢谢。
答案1
好的,我通过编写模板解决了它:
<xsl:template match="m:mrow">
<xsl:choose>
<xsl:when test="count(./*)=3 and ./*[1]/m:mo = '|' and ./*[3]/m:mo = '|'">
<xsl:text>\left\vert</xsl:text>
<xsl:apply-templates select="./*[2]"/>
<xsl:text>\right\vert</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
它可能不是完美的,但是对于我需要的情况来说它还是有用的。