gpt4 book ai didi

mfc - 在 MS Word 中将 MathML 转换为 MathType

转载 作者:行者123 更新时间:2023-12-02 03:29:11 26 4
gpt4 key购买 nike

我正在编写一个从 XML&MathML 到 MS Word 文档的转换器。
我使用的是MFC和Word自动化,所以编写这样的文本没有问题:

_Application app;  
COleVariant vtOpt(DISP_E_PARAMNOTFOUND, VT_ERROR),
vtTrue((short)TRUE),
vtFalse((short)FALSE);
app.CreateDispatch("Word.Application",NULL);
Documents docs = app.GetDocuments();
_Document doc = docs.Add (vtOpt, vtOpt, vtOpt, vtOpt);
Range range = doc.Range (vtOpt, vtOpt);
range.InsertAfter (_T("Hello Word!"));

现在的问题是将 MathML 方程转换为嵌入的 MathType 对象。我发现的一种可能的方法是在 TeX 中编写方程,然后以编程方式调用 MTCommand_TeXToggle(在 Word 的 MathType 6.5 库中找到)宏,该宏用 MathType OLE 对象替换 TeX。但随后我必须以某种方式将 MathML 转换为 TeX,这并不那么容易。

我知道,MathType OLE 对象应该接受原始 MathML 数据,但是当我尝试以编程方式创建和访问 OLE 对象时:

InlineShapes shapes = doc.GetInlineShapes ();
InlineShape control = shapes.AddOLEObject (COleVariant("Equation.DSMT4"), vtOpt, vtFalse, vtFalse, vtOpt, vtOpt, vtOpt, vtOpt);
OLEFormat fm = control.GetOLEFormat ();
COleDispatchDriver drv = fm.GetObject();

我最终没有合理的接口(interface)来为其提供 MathML 数据。所以,问题是:1) 有没有办法控制 OLE 对象并向其发送一些 MathML 数据?或者2) 有没有办法获取 MS Word VB 宏,将所选内容从 MathML 转换为 MathType OLE 对象?

提前致谢,尼克·斯坦奇

最佳答案

Nick,您应该尝试我们的 MathType SDK。它“按原样”提供,但免费:http://www.dessci.com/en/reference/sdk/

罗尔,谢谢你的客气话。我会将其传递给我们的支持团队。

鲍勃·马修斯设计科学

更新:以下是有关我尝试使用 MathType SDK 的建议的一些说明和附加信息。从 MathType 6.5 开始,可以在 MathType 对象上使用 IDataObject 接口(interface)来传入 MathML。 MathML 编码的表达式将插入到当前光标位置。因此,一般来说,策略是插入一个空白的MathType方程,激活它,获取IDataObject接口(interface),通过MathML设置方程,然后再次关闭方程。

MathType SDK 包含更详细的文档以及演示该技术的示例“OLECont”应用程序。根据您在此处发布的内容,您的代码运行应该没有问题。

关于mfc - 在 MS Word 中将 MathML 转换为 MathType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/969406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com