Я пишу конвертер из 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 (находится в библиотеке MathType 6.5 для Word), который заменяет TeX объектами OLE MathType. Но потом мне нужно как-то преобразовать MathML в TeX, что не так просто.
Я знаю, что объект MLEType 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 в OLE-объект MathType?
Спасибо заранее,
Ник Стэнч