python-docx如何在WORD文档中输入分数

How to input fractions into WORD document using python-docx

我想使用python-docx在WORD中插入分数,如下图所示。我只能插入这些:15/20 + 4/20。我想让样式看起来像图片所示。是否可以使用 python-docx 或 Python 中的其他库来实现?

Python-docx 没有实现 high-level API 来处理 Word 公式,但如果您可以自己构建 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 文档。