2014-01-18 75 views
2

我想寫一個簡單的解析器XML < - > Latex。我是Perl或XSLT的新手,我不知道該怎麼做。誰能幫我?在例如,這是我的公式:解析數學公式XML <-> Perl或XSLT中的乳膠

enter image description here

乳膠:

\frac{\frac{\frac{1}{2}+\frac{1}{y}}{\frac{2}{x}}}{\frac{2}{x+y}} 

我的XML的命題:

<?xml version="1.0" encoding="utf-8"?> 
<formula> 
    <numerator> 
     <numerator> 
      <numerator>1</numerator> 
      <denominator>2</denominator> 
       <sign>+</sign> 
      <numerator>1</numerator> 
      <denominator>y</denominator> 
     </numerator> 
     <denominator> 
      <numerator>2</numerator> 
      <denominator>x</denominator> 
     </denominator> 
    </numerator> 
    <denominator> 
     <numerator>2</numerator> 
     <denominator>x+y</denominator> 
    </denominator> 
</formula> 
+1

您是否已經瞭解[Presentation MathML](https://en.wikipedia.org/wiki/Mathml#Presentation_MathML)? – amon

+0

是的。來自Mirod的答案很好,但我不知道如何解析這個Mathml到乳膠。我只想解析這樣的分數而不用其他函數,但在Perl中我只知道如何讀取以及如何保存到文件 – Krzysiek

回答

3

要對你的問題的第一個註釋擴大:爲什麼重新發明輪子?爲什麼不使用MathML?

有從LaTeX到MathML的轉換器,例如MathToWebhttp://www.mathtowebonline.com/。將所得MATHML爲您的表達將是這樣:

<!-- begin MathToWeb --> 
<!-- (your LaTeX) $\frac{\frac{\frac{1}{2}+\frac{1}{y}}{\frac{2}{x}}}{\frac{2}{x+y}}$ --> 
<math xmlns="http://www.w3.org/1998/Math/MathML"> 
<mrow> 
    <mfrac linethickness="1"> 
     <mrow> 
      <mfrac linethickness="1"> 
       <mrow> 
        <mfrac linethickness="1"> 
         <mn>1</mn> 
         <mn>2</mn> 
        </mfrac> 
        <mo>+</mo> 
        <mfrac linethickness="1"> 
         <mn>1</mn> 
         <mi>y</mi> 
        </mfrac> 
       </mrow> 
       <mrow> 
        <mfrac linethickness="1"> 
         <mn>2</mn> 
         <mi>x</mi> 
        </mfrac> 
       </mrow> 
      </mfrac> 
     </mrow> 
     <mrow> 
      <mfrac linethickness="1"> 
       <mn>2</mn> 
       <mrow> 
        <mi>x</mi> 
        <mo>+</mo> 
        <mi>y</mi> 
       </mrow> 
      </mfrac> 
     </mrow> 
    </mfrac> 
</mrow> 
</math> 
<!-- end MathToWeb --> 

這可以顯示在瀏覽器中,無論是原生(火狐至少),或使用Mathjax,這是呈現一個JavaScript數學。

+0

感謝您的請求。這是一個關於Mathml的好主意,但我想創建我自己的解析器Latex <-> Mathml in Perl或XSLT,這對我來說是一個非常大的問題 – Krzysiek

+0

由於LaTeX不是XML,解析器無法在XSLT中。碧昂夫那。我不確定你爲什麼想要這樣做,我非常確定有可用的開源LaTeX解析器。 – mirod

+0

這是我寫作業的一部分,它將從XML到Latex,從Latex到XML轉換爲數學公式(在我的文章中只是簡單的像這樣)。最好的方法是從數學到乳膠,從乳膠到數學 – Krzysiek