我使用Python中的MathType SDK从MathType对象获取MathML。在Windows中,MTXFormEqn()
可以用转换后的等效对象替换剪贴板上的MathType OLE对象。这似乎是标准方法。在
lib.MTXFormSetTranslator(4, TRANSLATOR_TDL_FILENAME)
lib.MTXFormEqn(mtxfmCLIPBOARD, mtxfmTEXT, None, 0, # source
mtxfmCLIPBOARD, mtxfmTEXT, None, 0, # dest
'', None)
我试图将其移植到OSX,但我无法确定要传递给MTXFormEqn()
的数据。调用上面的代码简单地返回mtOK
和{
This chart建议源必须是“file”。文档将“PICT”列为可能的输入格式。MTEquationOnClipboard()
将MathType剪贴板对象报告为WMF(2
),但我可以使用NSPasteboard
获得它的PICT
等价物。在
有人成功地使用MTXFormEqn()
来翻译Mac上的MathType对象吗?我找不到任何使用Windows标准剪贴板到剪贴板方法的例子(在文档或在线)。在
这是一个stripped down version的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())
如果剪贴板上有MathType公式数据(任何类型),则
应该在任何一个平台上工作(Mac或Win)。你怎么把MT eqn数据放到剪贴板上?当你调用MTXFormEqn时,你有没有办法知道剪贴板上实际是什么?在
相关问题 更多 >
编程相关推荐