1

我想在 AsciiMath 中表达“f(x) 的二阶导数”。

在 LaTeX 中,它很简单f''(x)

LaTeX 中的二阶导数

AsciiMath 中的相同结果是单引号而不是素数符号:

AsciiMath 的二阶导数

我可以使用 AsciiMath 获得完美的一阶导数f^'(x)

AsciiMath 的一阶导数

但同样的方法不适用于二阶导数f^('')(x)

在此处输入图像描述

AsciiMath 中是否有一种语法可以产生与 LaTeX 相同的输出,带有素数符号而不是单引号?

4

3 回答 3

2

正如您所指出的,AsciiMath 不能很好地处理这种情况。到目前为止建议的方法会产生质量较差的 MathML,虽然 MathJax 的输出甚至可以处理这种笨拙的 MathML,但呈现的原生 MathML(如 Firefox)会产生较差的结果。这是f^'text()^'(x)由 Firefox 的原生 MathML 渲染的:

f''(x)

这是因为底层的 MathML 有两个独立<msup>的元素,并且两个上标的底高度不同:

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="true">
    <mrow>
      <msup>
        <mi>f</mi>
        <mo>&#x2032;</mo>
      </msup>
      <msup>
        <mrow>
          <mtext></mtext>
        </mrow>
        <mo>&#x2032;</mo>
      </msup>
    </mrow>
    <mrow>
      <mo>(</mo>
      <mi>x</mi>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math>

产生更好的 MathML 的一种可能的解决方案是使用双撇号 unicode 字符 U+2033,如f^″(x),或者如果您在 HTML 页面中输入它,如f^&#x2033;(x). 这由 MathJax 的 HTML-CSS 输出呈现为

f''(x) by MathJax

并作为

f''(x) 来自 Firefox

通过 Forefox 的原生 MathML 渲染器。此外,AsciiMath 为这个输入生成的 MathML 在语义上更有意义:

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="true">
    <mrow>
      <msup>
        <mi>f</mi>
        <mo>&#x2033;</mo>
      </msup>
      <mrow>
        <mo>(</mo>
        <mi>x</mi>
        <mo>)</mo>
      </mrow>
    </mrow>
  </mstyle>
</math>

在 U+2034 处还有一个三素数,在 U+2057 处还有一个四素数,以防你也需要它们。如果 AsciiMath 可以自动将两个单独的素数组合成 U+2033,那就太好了,但它目前不这样做。

于 2017-03-11T00:04:45.087 回答
0

试试这个 f^('')(x) 它产生以下

在此处输入图像描述

于 2017-03-10T16:27:07.897 回答
0

我可以通过插入一个空文本块并将第二个主要符号放在上面来实现它,如下所示:f^'text()^'(x)

AsciiMath 中的二阶导数

还有一个略短的形式,使用文本块的引号:f^'""^'(x)

于 2017-03-10T16:59:04.487 回答