数学表达式转换为MathML

4
我正在尝试构建与此网站相同的功能,用户将在文本区域输入数学表达式,并以MathML格式呈现。
例如:
Input expression string: cos(x^3)

Then the expression should be converted to MathML as:

<math xmlns='http://www.w3.org/1998/Math/MathML'>
    <mrow>
        <mi>cos</mi>
        <mo>&#8289;</mo>
        <mo>(</mo>
        <msup>
            <mi>x</mi>
            <mn>3</mn>
        </msup>
        <mo>)</mo>
    </mrow>
</math>

这是一个关于C#的解决方案。
1个回答

4

我基于一个之前的解析器创建了一个基本的表达式转换为MathML的解析器。您可以在此处BitBucket下载或分叉(下载链接在左侧)。

使用Parser类的ToMathML(expression)方法将表达式转换为MathML。

它还带有一个用于测试解析器的命令行测试程序,生成MathML的命令是ml:

calc ~:> ml cos(x^3)
<math xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mi>cos</mi><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow></mrow></math>
calc ~:> ml 1/(x-1)
<math xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mfrac><mn>1</mn><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow></mfrac></mrow></math>
calc ~:>

解析器中没有隐式乘法,因此您必须在表达式中始终使用*(例如2*x)。

希望这对您的场景有用。我猜这取决于您需要多全面的功能。目前的解析器将将表达式转换为MathML的基本子集。

欢迎派生并继续工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接