【问题标题】:How to convert a formula into MathML for use in a web page如何将公式转换为 MathML 以在网页中使用
【发布时间】:2014-12-14 17:06:24
【问题描述】:

我在网上花了好几个小时寻找解决方案,但走了不少奇怪的路……

假设我有一个公式: x^2 + 3x + 32

我想随机选择用文本框替换公式的一部分(我可以这样做)

x^2 + [textbox]x +32

然后显示格式化的结果以供学生输入。 (我不能这样做)

我查看了 MathJax 和 MathML,我认为如果我可以将结果转换为 mathml 格式,包括我排序的文本框。我已经可以使用 MathJax 很好地显示公式了。

什么不起作用:

  • 在结果公式上查找并替换为文本框(替换数字)

  • 在结果公式上查找并替换为文本框(添加注释标签)

这两种方法我都尝试过弄乱间距/剪辑文本框,因此无法使用。我认为唯一的方法是使用已经包含的文本框生成 MathML,而不是在之后尝试添加它。

但我不知道怎么做?任何人都可以建议一种使用文本框生成 mathml 以在 mathjax 中使用的方法?

这是我目前失败的尝试:

<script type="math/mml" id="scriptTag">
  <math>
    <mfrac>
      <msqrt>
        <mn>
          <semantics>
            <annotation-xml encoding='application/xhtml+xml'>
              <input xmlns='http://www.w3.org/1999/xhtml' type='text' size='4' />
            </annotation-xml>
          </semantics>
       </mn>
     </msqrt>
     <mn> 3 </mn>
    </mfrac>
  </math>
</script>

我可以使用本指南创建基本(无文本框)mathml: http://www.xmlmind.com/tutorials/MathML/

【问题讨论】:

  • 似乎是一个有趣的问题,但您提供的信息太少。文本框到底是什么? HTML? MathML 中是否还有文本框元素?你是从什么生成 MathML 的?
  • 感谢您的关注!基本上我想为用户提供完成公式的能力。我认为我想要一个简单的 html 输入控件,并且我知道 mathml 的 xml-annotate 部分确实提供了这个功能,但我似乎无法让它工作......
  • 目前我正在从将公式转换为 mathml 的在线服务获取 mathml。我仍在寻找一种生成 mathml 的方法。现在,我只关心最后一步,即获取一些 mathjax 可以理解的包含文本框的 mathml。我不介意 mathjax 是否注入文本框,或者是否预先完成......

标签: html xslt math mathjax mathml


【解决方案1】:

我认为现代浏览器允许在 HTML5 中混合一些 HTML 元素和 MathML 元素:

<div>
<h2>Example 2</h2>
<div>
<math>
  <mrow>
    <mn><input type="text" size="4"></mn>
    <mo>*</mo>
    <mi>x</mi>
  </mrow>
</math>
</div>
</div>

<div>
<h2>Example 2</h2>
<div>
<math>
  <mrow>
    <mn><input type="text" size="4"></mn>
    <mo>*</mo>
    <mi>x</mi>
  </mrow>
</math>
</div>
</div>

这是一个上标示例,Firefox 出现输入框:

<div>
<h2>Example msup</h2>
<div>
<math>
  <mrow>
    <msup>
      <mn>2</mn>
      <mn><input type="text" size="4"></mn>
    </msup>
  </mrow>
</math>
</div>
</div>

<div>
<h2>Example msup</h2>
<div>
<math>
  <mrow>
    <msup>
      <mn>2</mn>
      <mn><input type="text" size="4"></mn>
    </msup>
  </mrow>
</math>
</div>
</div>

【讨论】:

  • 这非常棒,但在我的用例中失败了 - 文本框需要位于“电源”位置,例如 x^2 变为 x*,其中 * 是文本框跨度>
  • 我也尝试了一个使用 msup 的示例,至少在 Firefox 中它确实显示了文本框。我认为其他浏览器(如 Chrome)也支持 MathML,但看起来 Chrome 在一些初始实施后取消了对它的支持。我不熟悉 mathjax,所以也许其他人可以告诉你如何以跨浏览器的方式解决这个问题。
  • 是的,mathjax 可以很好地呈现内容,不包括文本框:(
  • 要使用 MathJax 在 MathML 中输入表单,请查看 this SO answer。对于 TeX-input 和 MathJax 中的表单输入,您可以尝试 this third party extension for MathJax。
猜你喜欢
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
相关资源
最近更新 更多