我想使用 python-docx 将分数插入 WORD 中,如下图所示。我只能插入这些:15/20 + 4/20。我想要的风格如图所示。是否可以使用 python-docx 或 Python 中的其他库来完成此操作?
Python-docx 没有实现用于处理 Word 公式的高级 API,但如果您可以自己构造 XML 字符串,则可以将其插入到文档中。 XML 架构是 Microsoft OMML,其概念与 MathML 类似。
from docx import Document
from docx.oxml import parse_xml
document = Document()
p = document.add_paragraph()
omml_xml = '<p xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"><m:oMathPara><m:oMath><m:f><m:num><m:r><m:t>1</m:t></m:r></m:num><m:den><m:r><m:t>2</m:t></m:r></m:den></m:f></m:oMath></m:oMathPara></p>'
omml_el = parse_xml(omml_xml)[0]
p._p.append(omml_el)
document.save('demo.docx')
这是 OMML 片段:
<p xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math">
<m:oMathPara>
<m:oMath>
<m:f>
<m:num>
<m:r>
<m:t>1</m:t>
</m:r>
</m:num>
<m:den>
<m:r>
<m:t>2</m:t>
</m:r>
</m:den>
</m:f>
</m:oMath>
</m:oMathPara>
</p>
这将生成一个带有分数 1/2 的 Word 文档。
我也有类似的问题。我需要将公式插入现有电子表格的单元格中。 感谢这篇文章,我决定这样做
from docx.oxml import parse_xml
import mathml2omml
import latex2mathml.converter
def test3():
a = 5
b = 2
latex = r'''\frac{{{}}}{{{}}}'''.format(a, b)
mathml = latex2mathml.converter.convert(latex)
omml = mathml2omml.convert(mathml)
omml_xml = f'''
<p xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math">
<m:oMathPara>{omml}</m:oMathPara>
</p>
'''
omml_el = parse_xml(omml_xml)[0]
document = Document('template_cell.docx')
table = document.tables[0]
c = table.rows[0].cells
p = c[0].paragraphs[0]
p._element.append(omml_el[0])
document.save('demo.docx')