我想将MathML表达式转换为python中的方程字符串,MathDOM模块应该适用于该字符串.
一个例子是:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<lambda>
<bvar><ci>A</ci></bvar>
<bvar><ci>B</ci></bvar>
<apply>
<plus/>
<ci>A</ci>
<ci>B</ci>
</apply>
</lambda>
</math>
Run Code Online (Sandbox Code Playgroud)
应映射到"A + B".这显然适用于更复杂的表达式.
但是,它已经很老了,并且不能正常使用新版本的xml模块(试图包含错误的模块结构等)
有谁知道有用的替代品?
今天我发现 Windows 7 附带了一个非常令人印象深刻的 MathPanel 实用程序,用于执行方程式的手写识别:

这很好。(这里我输入了sRGB色彩空间伽玛转换部分的公式)
但现在我似乎无法用它做任何事情。
有一个插入按钮。我假设单击“插入”会将其插入到其后面活动的应用程序中(就像屏幕键盘的工作原理一样):

但我假设它将作为粘贴操作进行操作。
我在帮助中找不到有关应用程序需要什么才能使其工作的信息。没有提及某些软件必须支持的任何特殊 API。
我在 MSDN 上也找不到任何关于接受方程插入需要什么特殊 API 的信息。
我必须实现哪些 API、注册、回调、侦听器、消息、COM 对象才能接收 MathPanel 输入?
我提到MathML 的唯一原因是因为SuperUser 的一个答案提到了 MathML:
理论上,任何支持MathML(数学标记语言)的应用程序都可以与 Windows 7 数学输入面板一起使用。数学输入面板仅适用于支持 MathML 的程序。以下是一些此类应用程序:StarOffice、OpenOffice、Opera 和 Maple。
那么我如何让我的程序支持MathML?
据我所知 MathML 是一种标记语言;不是 Windows API。这就像说“我如何让我的程序支持 HTML?” Html 是文本,您可以将其粘贴到任何地方。
MathPad 拒绝粘贴,除非我“支持”MathML?
更新
单击“插入”后检查IDataObject剪贴板上的,我看到两种可用格式(都不是文本,这解释了为什么我没有得到任何标记):
格式1:
CLIPFORMAT cfFormat: "MathML Presentation" (49839)
PDVTargetDevice ptd: 0x00000000
DWORD dwAspect: DVASPECT_CONTENT
DWORD lindex: -1
DWORD …Run Code Online (Sandbox Code Playgroud) 我一直在为C#中的.Net寻找一些dll,用于在MS Word中插入任何MathMl,Tex或LaTex方程式,我尝试了一些像DocX但是它们失败了,你知道吗?或任何暗示如何?谢谢
我遇到了麻烦pexpect。我试图tralics从中读取乳胶方程的输出并发出 MathML 表示,如下所示:
1 ~/ % tralics --interactivemath
This is tralics 2.14.5, a LaTeX to XML translator, running on tlocal
Copyright INRIA/MIAOU/APICS/MARELLE 2002-2012, Jos\'e Grimm
Licensed under the CeCILL Free Software Licensing Agreement
Starting translation of file texput.tex.
No configuration file.
> $x+y=z$
<formula type='inline'><math xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mi>x</mi> <mo>+</mo><mi>y</mi><mo>=</mo><mi>z</mi></mrow></math></formula>
>
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用 pexpect 得到公式:
import pexpect
c = pexpect.spawn('tralics --interactivemath')
c.expect('>')
c.sendline('$x+y=z$')
s = c.read_nonblocking(size=2000)
print s
Run Code Online (Sandbox Code Playgroud)
输出具有公式,但开头是原始输入,结尾是一些控制字符:
"x+y=z$\r\n<formula type='inline'><math xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>=</mo><mi>z</mi></mrow></math></formula>\r\n\r> \x1b[K"
Run Code Online (Sandbox Code Playgroud)
我可以清理输出字符串,但我必须缺少一些基本的东西。有没有更干净的方法来获得 MathML?
我正在编写显示大量数学内容的软件.在windows窗体中,很难在标签中设置下标或希腊字母,我正在考虑切换到WPF.
目前,我正在寻找在我的图形用户界面中渲染数学表达式,公式或仅仅符号的最佳方法.它们必须以标签或绘制的图形/图片显示.没有实时/即时渲染但美丽的修复符号.
最好的方法是什么?我想,MathML应该得到很好的支持,但我找不到很多.我很乐意听到一些建议.
在这里,我可以从中获取符号(或者我更喜欢的):
SVG (在Inkscape中渲染一些LaTeX并导出到XAML)xmcd 文件(Mathcad XML Document.不知道如何,但至少它是XML)html 文件(由LaTeX-> html或Mathcad-> html编写我个人不会考虑,但也许有很好的解决方案:
png-icons, ,pdf,,dvi 直接进口)epssvg我认为使用LaTeX,MathML或html会很棒,因为它们也可以用于文档.我也可以考虑将计算结果导出到*.tex文件或使用LaTeX完全内部生成图形(tikz,pgfplots ......)
在由rmarkdown和knitr包创建的报告中,我想创建一个 1 x 2 的表格,其中的每个单元格都将托管一个 LaTeX 方程。在等式中,单个元素必须选择自定义颜色,生成如下内容:

使用 rmarkdown 应该识别的 html 元素:
---
output:
pdf_document: default
html_document:
mathjax: "http://example.com/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
---
### Two formulas side by side
<div style="width:900px">
<div style="width:450px">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<semantics>
<mrow>
<msub style="color:red">
<mi>y</mi>
<mrow>
<mi>t</mi><mi>i</mi></mrow>
</msub>
<mo>=</mo><msub>
<mi>β</mi>
<mn>0</mn>
</msub>
<mo>+</mo><msub style="color:red">
<mi>ε</mi>
<mrow>
<mi>t</mi><mi>i</mi></mrow>
</msub>
</mrow>
</annotation>
</semantics>
</math>
</div>
<div style="width:450px">
$$
{y_{ti}} = {\beta _0} + {\beta _1}Tim{e_t} + {\varepsilon _{ti}}
$$
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
编织 html 时,左边的方程出错:

编织 …
这只是一个带有一些废话数学的通用 div。无法正确渲染
div [] [ math [] [text "$\\int_a^b \frac{2}{3}$"]
Run Code Online (Sandbox Code Playgroud)
这就是结果
<math>$\int_a^b \frac{2}{3}$</math>
Run Code Online (Sandbox Code Playgroud)
所以我不明白mathElm是如何工作的。这看起来像mathML
就目前而言,我认为进行mathjax调用比学习(或创建)一种新的标记语言并编写纯 mathML更容易。这是它应该是什么样子
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msubsup>
<mo>∫<!-- ? --></mo>
<mi>a</mi>
<mi>b</mi>
</msubsup>
<mfrac>
<mn>2</mn>
<mn>3</mn>
</mfrac>
</math>
Run Code Online (Sandbox Code Playgroud)
Elm 没有mfrac标签,但我很乐意自己写!这组标签在网络上使用的频率越来越高,但 Elm-Lang 本身可能还没有采用。
Elm 确实公开node了您可以在何处定义自己的任何类型的标签。
node
: String
-> List (Attribute msg)
-> List (Html msg)
-> Html msg
Run Code Online (Sandbox Code Playgroud)
这表明了一个潜在的解决方案。虽然没有导致任何地方:
node "math" [] [ node "mo" [] [ text "∫"] ]
Run Code Online (Sandbox Code Playgroud) 我正在尝试在网页上显示数学公式。但是当我编写如下所示的html代码时
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Binomial Theorem</title>
</head>
<body>
<p>Binomial Theorem:</p>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<msup>
<mfenced>
<mrow>
<mi>a</mi>
<mo>+</mo>
<mi>b</mi>
</mrow>
</mfenced>
<mn>2</mn>
</msup>
<mo>=</mo>
<msup>
<mrow>
<mi>a</mi>
</mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mrow>
<mi>b</mi>
</mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
<mrow>
<mn>2</mn>
<mi>a</mi>
<mi>b</mi>
</mrow>
</mrow>
</math>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果只是
二项式定理:
a + b 2 = a 2 + b 2 + 2 ab
它不像公式
帮助我在 HTML 中使用 MathML 谢谢,
我对 Web 应用程序中的数学表达式呈现有特定的需求,虽然到目前为止我主要关注的是 MathJax,但我当然不喜欢它。
我需要的是呈现数学表达式的能力,其中一个或多个术语本质上可以是任意 HTML 框元素,如下所示:

...如果布局响应 HTML 框的大小(例如,括号会自动调整大小以匹配其高度,就像任何其他“正常”LaTeX/MathJax 元素一样),那将是可取的,但如果我需要指定一个确切的以像素为单位的大小或类似的东西,那也可以。如果我不得不在实际的可视化中插入一个“占位符”元素,甚至可以,但可以确切地知道它在输出中的位置,因此我可以将 HTML 元素精确地覆盖在它上面。
换句话说,我对开箱即用甚至骇人听闻的解决方案持开放态度;只需要一些有用的东西。
也可能相关:我真的只会使用非常基本的 LaTeX 元素:括号、分数、普通运算符。如果这是一个复杂的因素,我什至不需要能够支持上面示例中的求和。
我正在尝试使用 Rust 中的 Serde 和 Quick-XML 反序列化 MathML。由于 MathML 的递归性质,我在尝试编写结构时遇到了麻烦。这是一个最小的、可重现的示例:
use quick_xml;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
#[serde(rename = "math", rename_all = "camelCase")]
pub enum MathNode {
Apply(Vec<MathNode>),
Ci(Vec<MathNode>),
Text(String),
#[serde(rename = "math")]
Root(Vec<MathNode>),
}
pub fn parse(doc: &str) -> Result<MathNode, quick_xml::DeError> {
let raw_model = quick_xml::de::from_str(doc);
raw_model
}
pub fn main() {
let test = "<math>
<apply>
<ci type=\"integer\">5</ci>
</apply>
</math>";
let parsed = parse(test);
println!("{:?}", parsed);
}
Run Code Online (Sandbox Code Playgroud)