2014-10-19 32 views
4

我在網上花了幾個小時尋找一個解決方案,並一直走下去了太多怪異的衚衕方式...如何將公式轉換成MATHML用於網頁

可以說我有一個公式: 的x^2 + 3×+ 32

我想隨機選擇更換與文本框式的一部分(I可以做到這一點)

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/

+1

似乎是一個有趣的問題,但是你提供的信息太少。什麼是正文? HTML? MathML中甚至有文本框元素嗎?你從MathML生成什麼? – 2014-10-19 20:31:10

+0

感謝您觀看Q!基本上我想提供用戶完成公式的能力。我*想*我想要一個簡單的html輸入控件,並且我知道mathml的xml-annotate部分確實提供了這一點,但我似乎無法讓它工作... – user230910 2014-10-20 04:40:34

+0

目前我越來越來自將公式轉換爲mathml的在線服務的mathml。我仍然在尋找一種方法來生成mathml。現在,我只關心最後一步,即得到mathjax能夠理解的包含文本框的一些數學運算符。我不介意,如果mathjax注入文本框,或者如果它在前面完成.. – user230910 2014-10-20 04:45:07

回答

3

我覺得現代的瀏覽器都支持HTML元素的一些混合和在HTML5 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>

+0

這是非常棒的,但它在我的用例失敗 - 文本框需要在一個「功率」的地方,如x^2變成x *其中*是文本框 – user230910 2014-10-20 14:46:20

+0

我也嘗試了一個使用'msup'的例子,至少在Firefox中顯示了文本框。我認爲Chrome等其他瀏覽器也支持MathML,但看起來Chrome在初始實施後取消了對它的支持。我對mathjax不熟悉,所以也許別人可以告訴你如何以跨瀏覽器的方式解決這個問題。 – 2014-10-20 15:19:07

+0

yeah mathjax很好地呈現內容,不包括文本框:( – user230910 2014-10-20 15:20:10