Я использую MathType SDK из Python для получения MathML из объектов MathType.В Windows MTXFormEqn()
может заменить объект OLE MathType в буфере обмена его преобразованным эквивалентом.Кажется, это стандартный подход.
lib.MTXFormSetTranslator(4, TRANSLATOR_TDL_FILENAME)
lib.MTXFormEqn(mtxfmCLIPBOARD, mtxfmTEXT, None, 0, # source
mtxfmCLIPBOARD, mtxfmTEXT, None, 0, # dest
'', None)
Я пытаюсь перенести это на OSX, но не могу понять, какие данные передать в MTXFormEqn()
.Вызов приведенного выше кода простого возврата mtOK
и MTXFormGetStatus()
сообщает об общей ошибке.
Эта диаграмма предполагает, что источником должен быть файл 'вместо'.В документации указан «PICT» в качестве возможного формата ввода.MTEquationOnClipboard()
сообщает объект буфера обмена MathType как тип WMF (2
), но я могу получить его PICT
эквивалент, используя NSPasteboard
.
pb = NSPasteboard.generalPasteboard()
data = pb.dataForType_(NSPICTPboardType)
Кто-нибудь успешно использовал MTXFormEqn()
для перевода MathTypeобъекты на Mac?Я не могу найти никаких примеров (в документации или в Интернете), которые используют что-либо, кроме стандартного метода буфера обмена в буфер обмена из Windows.
Вот урезанная версия рабочего кода Windows.Проверка ошибок и определения констант опущены для краткости.
import sys
from ctypes import *
TRANSLATOR_TDL = 'MathML2 (namespace attr).tdl'
def main():
# On OSX, use the following line instead:
# lib = cdll.LoadLibrary('/Library/Frameworks/MT6Lib.framework/MT6Lib')
lib = windll.LoadLibrary('MT6.dll')
lib.MTAPIConnect(0, 30)
lib.MTXFormSetTranslator(4, TRANSLATOR_TDL)
eq_type = lib.MTEquationOnClipboard()
if eq_type == 8: # mtOLE2_EQUATION -- Windows only
lib.MTXFormEqn(mtxfmCLIPBOARD, mtxfmTEXT, None, 0, # source
mtxfmCLIPBOARD, mtxfmTEXT, None, 0, # dest
'', None)
#
# MathML contents now on clipboard as string
#
elif eq_type == 2: # mtWMF_EQUATION -- Mac OSX
???
return 0
if __name__ == "__main__":
sys.exit(main())