首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MS Word中将MathML转换为MathType

在MS Word中将MathML转换为MathType
EN

Stack Overflow用户
提问于 2009-06-09 19:08:04
回答 4查看 8.3K关注 0票数 6

我正在写一个从XML&MathML到MS Word文档的转换器。

我使用的是MFC和Word自动化,所以像这样编写文本没有问题:

代码语言:javascript
复制
_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库中找到)宏,它将TeX替换为MathType OLE对象。但是,我必须以某种方式将MathML转换为TeX,这并不容易。

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

代码语言:javascript
复制
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();

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

先谢谢你,尼克·斯坦奇

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-12 19:13:01

破解了!

用户可以在其代码中使用COleClientItem对象来获取MathType OLE控件的实例。如MathType SDK MFC示例中所示。然后,操作COleDataSource,向控件提供MathML数据,并调用COleClientItem::CopyToClipboard();。现在,在从Word自动化类进行Range::Paste(opt1, opt2);调用时,可以使用表示控件本身的数据作为OLE对象。看起来有点奇怪,但对我来说很有效:),您所要做的就是向示例中再添加一行,即调用CopyToClipboard方法的那一行。

票数 4
EN

Stack Overflow用户

发布于 2009-06-10 14:16:20

尼克,你应该试试我们的MathType软件开发工具包。它是“按原样”提供的,但它是免费的:http://www.dessci.com/en/reference/sdk/

罗尔,谢谢你的好话。我会把这个传给我们的支持团队。

鲍勃·马修斯设计科学

下面是关于我推荐试用MathType 的一些说明和其他信息。从MathType 6.5开始,可以在MathType对象上使用IDataObject接口传入MathML。MathML编码的表达式将插入到当前光标位置。因此,一般来说,策略是插入一个空的MathType公式,激活它,进入IDataObject界面,通过MathML设置公式,然后再次关闭公式。

MathType软件开发工具包包括更详细的文档,以及演示该技术的示例"OLECont“应用程序。根据您在这里发布的内容,您应该可以让您的代码正常工作。

票数 4
EN

Stack Overflow用户

发布于 2009-06-10 10:21:59

我能提供的唯一建议是,我总是发现设计科学的支持是相当好的。您可能希望询问他们的OLE接口是否提供MathML支持。

我还没有研究过Word 2007公式编辑器。如果它有一个不同的自动化接口,也许它可以更容易地导入其他格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/969406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档