我正在從XML & MathML轉換爲MS Word文檔。
我使用MFC和Word自動化,所以不應該這樣寫的文字沒有問題:在MS Word中將MathML轉換爲MathType
_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();
我最終沒有合理的接口與餵它MathML數據。 所以,問題是: 1)有沒有辦法控制OLE對象併發送一些MathML數據? 或 2)有沒有辦法獲得一個MS Word VB宏,將選擇從MathML轉換爲MathType OLE對象?
由於提前, 尼克止住
感謝您的回答。實際上,那時我有SDK,但我用C++編寫,而不是C#,所以我沒有弄清楚如何實現IDataObject。所以,而不是那個,我已經使用你的MFC示例。它是這樣的:我從clsid獲取COleClientItem,用mathml提供它,然後調用CopyToClipboard,只需將它粘貼到文檔中的某處即可。我知道,看起來有點奇怪。儘管如此,它對我來說非常合適。我得到一個免費的mathml-> TeX轉換器!感謝你的偉大產品! – stanch 2009-06-12 19:15:56
好吧,現在我記得OLECont正是我告訴過你的事情。所以好像我在前天的兩天預計了你的建議:) – stanch 2009-06-12 19:21:06