首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mac上将MathType对象转换为MathML

在Mac上将MathType对象转换为MathML
EN

Stack Overflow用户
提问于 2012-02-01 17:33:00
回答 1查看 2.1K关注 0票数 0

我正在使用Python中的MathType SDK从MathType对象获取MathML。在Windows中,MTXFormEqn()可以用转换后的等价物替换剪贴板上的MathType OLE对象。这似乎是标准做法。

代码语言:javascript
复制
lib.MTXFormSetTranslator(4, TRANSLATOR_TDL_FILENAME)
lib.MTXFormEqn(mtxfmCLIPBOARD, mtxfmTEXT, None, 0,      # source
               mtxfmCLIPBOARD, mtxfmTEXT, None, 0,      # dest
               '', None)

我正试图将其移植到OSX,但我不知道要将哪些数据传递到MTXFormEqn()。调用上面简单的代码返回mtOKMTXFormGetStatus()报告一个通用错误。

这张图表建议源必须是'file‘而不是’file‘。这些文件将"PICT“列为一种可能的输入格式。MTEquationOnClipboard()将一个MathType剪贴板对象报告为WMF (2)类型,但我可以使用NSPasteboard获得它的PICT等效值。

代码语言:javascript
复制
pb = NSPasteboard.generalPasteboard()
data = pb.dataForType_(NSPICTPboardType)

是否有人成功地使用MTXFormEqn()来翻译Mac上的MathType对象?我找不到任何使用任何东西的示例(无论是在文档中还是在线上),这些示例都期望Windows中的标准剪贴板到剪贴板方法。

下面是工作Windows代码的剥离版。为了简洁起见,省略了错误检查和const定义。

代码语言:javascript
复制
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())
EN

回答 1

Stack Overflow用户

发布于 2012-02-02 20:30:30

如果剪贴板上有MathType方程数据(任何类型的),那么

代码语言:javascript
复制
lib.MTXFormEqn(mtxfmCLIPBOARD, mtxfmTEXT, None, 0,      # source
               mtxfmCLIPBOARD, mtxfmTEXT, None, 0,      # dest
               '', None) 

应该在任何一个平台上工作(Mac或Win)。如何将MT eqn数据放到剪贴板上?当您调用MTXFormEqn时,您有方法知道剪贴板上的实际内容吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9100431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档