“主人,为什么我的段落没有显示为我指定的样式?”
“您来到正确的页面, 蚱蜢;请继续阅读……”
相同元素的格式一致时,文档之间的沟通会更好。为了实现这种一致性,专业文档设计人员开发了一个样式表,该样式表定义了文档元素类型并指定了各个元素的格式。
例如,正文段落可能设置为 9 Pt(磅) Times Roman,行高为 11 Pt(磅),左对齐。将这些规范应用于文档的每个元素时,将获得一致且优美的外观。
Word中的样式就是可以同时应用于文档元素的一组规范。 Word具有段落样式,字符样式,表格样式和编号定义。这些分别应用于段落,文本,表格和列表。
经验丰富的程序员会将样式视为间接的级别。这样的好处是一次定义,多次应用。这样可以省去定义同一对象的工作。同时,我们可以更改定义并将定义应用到所有位置/
在我可以添加一些更高级的功能来解决该问题之前,这个问题可能会出现很多,所以在这里是最重要的。
总结如下:
如果要在使用python-docx创建的文档中使用样式,则从其开始的文档必须包含样式定义。否则,样式无法显示。不会引发异常,只会起不作用。如果使用 “默认” 模板文档,则它包含下面列出的样式,如果不是自己设计,则大多数样式都是可能需要的。
如果您使用自己的初始文档,则需要在其中至少使用一次每种样式。您不必保留内容,但是在保存文档之前,您至少使用对应样式一次。创建一个单字的段落,依次应用五种样式,然后删除该段落即可。这就是我将以下内容放入默认模板的方法:)。
样式定义
文档的 styles part 中的
定义样式
在文档中明确定义的样式。与潜在风格形成鲜明对比。
内置样式
Word 内置的 276 种预设样式中的一种,例如“标题1”。内置样式可以是定义的或潜在的。尚未定义的内置样式称为潜在样式。在 Word 的样式面板和样式库中,已定义和潜在的内置样式都可能显示为选项。
自定义样式
也称为用户定义的样式,它是 Word 文档中定义的非内置样式。请注意,自定义样式不能是潜在样式。
潜在样式
在特定文档中没有定义的内置样式在该文档中称为潜在样式。潜在样式可以作为选项出现在 Word UI 中,具体取决于文档的 LatentStyles 对象中的设置。
推荐样式列表
从 “列表:” 下拉框中选择 “推荐” 时,样式列表显示在样式工具箱或面板中。
样式库
在 Word UI 的功能区中显示的示例样式的选择,可以通过单击其中的一种来应用。
样式具有三个标识属性,即 name(名称),style_id(样式 id) 和 type (类型)。
每种样式的 name 属性都是其稳定的唯一标识符,以供访问。
样式的 style_id 在内部用于将内容对象(例如段落)设置为其样式。但是,此值是由Word自动生成的,不能保证在保存过程中保持稳定。通常,仅通过从英文样式名称中删除空格来形成样式id,但是也有例外。 python-docx 的用户通常应该避免使用样式 ID,除非他们对所涉及的内部结构有信心。
样式的类型是在创建时设置的,无法更改。
除了一组格式设置属性外,样式还具有五个用于指定其特性的属性。此特性相对简单,基本上等于样式在 Word 或 LibreOffice UI 中出现的时间和位置。
推荐样式表是理解样式特性的关键概念。在 Word 的样式窗格中,用户可以选择要查看的样式列表。其中之一被称为“推荐”,被称为“推荐列表”。这五个特性属性都会影响此列表和样式库中样式外观的某些方面。
简而言之,如果样式的 hidden 属性为 False(默认值),则该样式会出现在推荐列表中。如果未隐藏样式并且其 quick_style 属性为True,则它也会显示在样式库中。如果隐藏样式的 unhide_when_used 属性为True,则其首次使用时其 hidden 属性设置为 False。样式列表和样式库中的样式按 priority(优先级)排序,然后按字母顺序排列相同优先级的样式。如果样式的 locked 属性为 True,并且为文档设置了格式限制,则该样式将不会出现在任何列表或样式库中,并且无法应用于内容。
需要指定在 styles.xml 中未定义的内置样式的 UI 行为,因此需要潜在的样式定义。潜在样式定义基本上是 stub 样式定义,除了样式名称外,它最多还具有五个特性属性。通过为每个特性属性定义默认值,可以节省更多空间,因此仅需要定义与默认值不同的那些值,并且与所有默认值匹配的样式都不需要潜在的样式定义。
使用出现在 styles.xml 中的 w:latentStyles 和 w:lsdException 元素来指定潜在样式定义。
潜在样式定义仅对于内置样式是必需的,因为只有内置样式可以出现在 UI 中,而 styles.xml 中没有样式定义。
####### 默认模板中的字符样式