我正在使用python-docx生成一些文档。
我可以看到存在line numbering property可以应用于文档部分(至少对于 OOXML 标准)。
我还可以看到python-docx API中没有此属性。
我假设可以访问基础sectPr
字段以添加lnNumType
标记,但我无法(轻松)找到任何示例。
我的标准是否混淆了?或者我的问题有点模糊不清?
答案 0 :(得分:2)
获得Section对象后,可以使用以下命令获取sectPr元素:
sectPr = section._sectPr
如果您在'python-docx变通办法函数OxmlElement'上谷歌,您将找到示例。所有元素都继承自lxml _Element,因此lxml操作有效。 BaseOxmlElement还添加了一些方便的其他方法。基本要点是:
sectPr = section._sectPr
lnNumType = OxmlElement('w:lnNumType')
lnNumType.set('fooAttrib', '42')
sectPr.append(lnNumType)
在许多情况下,您需要按照正确的顺序参加任何新的子元素,因为序列几乎总是处方。
您可以在此处找到对w:sectPr
元素的一些方便分析:
http://python-docx.readthedocs.io/en/latest/dev/analysis/features/sections.html
从快速浏览一下,你可以在最后添加一个w:lnNumType
,因为它后面的元素不太常见。但是如果你想要更加严谨,你可以使用它而不是sectPr.append()
:
sectPr.insert_element_before(lnNumType, (
'w:pgNumType', 'w:pgNumType', 'w:cols', 'w:formProt', 'w:vAlign',
'w:noEndnote', 'w:titlePg', 'w:textDirection', 'w:bidi',
'w:rtlGutter', 'w:docGrid', 'w:printerSettings', 'w:sectPrChange',
))
您可以在此处查看.insert_element_before()
的实施情况:
https://github.com/python-openxml/python-docx/blob/master/docx/oxml/xmlchemy.py#L718