我想在 AsciiMath 中表达“f(x) 的二阶导数”。
在 LaTeX 中,它很简单f''(x)
:
AsciiMath 中的相同结果是单引号而不是素数符号:
我可以使用 AsciiMath 获得完美的一阶导数f^'(x)
但同样的方法不适用于二阶导数f^('')(x)
:
AsciiMath 中是否有一种语法可以产生与 LaTeX 相同的输出,带有素数符号而不是单引号?
正如您所指出的,AsciiMath 不能很好地处理这种情况。到目前为止建议的方法会产生质量较差的 MathML,虽然 MathJax 的输出甚至可以处理这种笨拙的 MathML,但呈现的原生 MathML(如 Firefox)会产生较差的结果。这是f^'text()^'(x)
由 Firefox 的原生 MathML 渲染的:
这是因为底层的 MathML 有两个独立<msup>
的元素,并且两个上标的底高度不同:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<mrow>
<msup>
<mi>f</mi>
<mo>′</mo>
</msup>
<msup>
<mrow>
<mtext></mtext>
</mrow>
<mo>′</mo>
</msup>
</mrow>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>)</mo>
</mrow>
</mstyle>
</math>
产生更好的 MathML 的一种可能的解决方案是使用双撇号 unicode 字符 U+2033,如f^″(x)
,或者如果您在 HTML 页面中输入它,如f^″(x)
. 这由 MathJax 的 HTML-CSS 输出呈现为
并作为
通过 Forefox 的原生 MathML 渲染器。此外,AsciiMath 为这个输入生成的 MathML 在语义上更有意义:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<mrow>
<msup>
<mi>f</mi>
<mo>″</mo>
</msup>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>)</mo>
</mrow>
</mrow>
</mstyle>
</math>
在 U+2034 处还有一个三素数,在 U+2057 处还有一个四素数,以防你也需要它们。如果 AsciiMath 可以自动将两个单独的素数组合成 U+2033,那就太好了,但它目前不这样做。