LaTeX 中 | (\vert) 的问题

LaTeX 中 | (\vert) 的问题

我正在使用样式表将 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>

它可能不是完美的,但是对于我需要的情况来说它还是有用的。

相关内容