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 オブジェクトに変換することです。私が見つけた可能な方法の 1 つは、TeX で方程式を記述し、TeX を MathType OLE オブジェクトに置き換える MTCommand_TeXToggle (Word の MathType 6.5 ライブラリにあります) マクロをプログラムで呼び出すことです。しかし、どうにかして 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) 選択範囲を MathML から MathType OLE オブジェクトに変換する MS Word VB マクロを取得する方法はありますか?
前もってありがとう、ニック・スタンチ