如何使用odfpy在odt文档中添加数学公式? [英] How to add math formulas in odt document using odfpy?

查看:88
本文介绍了如何使用odfpy在odt文档中添加数学公式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在odt文档中添加数学公式.我还没有找到如何做的例子.我尝试了以下代码.但这会生成一个空公式.我不知道该如何添加类似c = a + b的内容.有人解决了类似的问题吗?该公式应由MathML代码编写.但是我不知道在哪里插入它.

I need to add mathematical formulas in odt document. I have not found an example of how to do it. I tried the following code. But it generates an empty formula. I don't know how to add to it something like c = a + b. Somebody solved a similar problem? The formula should be written by MathML code. But I have no idea where to insert it here.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import odf
import odf.opendocument
import odf.math
import odf.text

def main():
    doc = odf.opendocument.OpenDocumentText()
    p = odf.text.P(text=u'text')
    df = odf.draw.Frame( zindex=0, anchortype='as-char')
    p.addElement(df)
    doc.text.addElement(p)

    math = odf.math.Math()
    do = odf.draw.Object()
    do.addElement(math)
    df.addElement(do)

    outputfile = u'result'
    doc.save(outputfile, True)
if __name__ == '__main__':
    main()

推荐答案

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import odf
from odf.opendocument import OpenDocumentText
from odf.element import Element
from odf.text import P
from odf.math import Math
from namespaces import MATHNS


def main():
    doc = OpenDocumentText()
    p = P(text=u'text')
    df = odf.draw.Frame( zindex=0, anchortype='as-char')
    p.addElement(df)
    doc.text.addElement(p)

    formula =u'c=sqrt(a^2+b^2)'
    math = Math()
    annot = Element(qname = (MATHNS,u'annotation'))
    annot.addText(formula, check_grammar=False)
    annot.setAttribute((MATHNS,'encoding'), 'StarMath 5.0', check_grammar=False)
    math.addElement(annot)
    do = odf.draw.Object()
    do.addElement(math)
    df.addElement(do)

    outputfile = u'result'
    doc.save(outputfile, True)

if __name__ == '__main__':
    main()

这篇关于如何使用odfpy在odt文档中添加数学公式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆