了解样式

蚱蜢:

“师父,为什么我的段落没有按我指定的样式出现?”

主人:

“你到了右边的一页蚱蜢,继续读下去…”

什么是单词的风格?

当相似元素的格式一致时,文档可以更好地进行通信。为了实现这种一致性,专业文档设计人员开发了一个 样式表 它定义了文档元素类型,并指定了每个元素的格式。例如,也许正文段落要用9磅乘以罗马字体,行高为11磅,左对齐,右对齐。当这些规范应用于文档的每一个元素时,就可以获得一致而精巧的外观。

Word中的样式是一组可以同时应用于文档元素的规范。Word有段落样式、字符样式、表格样式和编号定义。它们分别应用于段落、文本范围、表和列表。

有经验的程序员会将样式识别为一个间接级别。最棒的是它允许你定义一个东西,然后多次应用这个定义。这节省了在over上定义同一事物的工作;但更重要的是,它允许您更改定义,并将该更改反映到应用它的所有位置。

为什么我申请的款式没有出现?

这很可能会出现很多问题,直到我可以添加一些更花哨的功能来解决它,所以这里它是最上面的。

  1. 当你在Word中工作时,你可以将所有这些样式应用到事物中,这些样式看起来非常漂亮,因为你不必自己制作它们。大多数人看的都是内在的风格。

  2. 尽管这些样式出现在UI中,但实际上它们并不在您创建的文档中,至少在您第一次使用它之前不会出现。这是件好事。他们占了地方,而且有很多。如果文件包含了您可以使用但尚未使用的所有样式定义,则该文件会有点膨胀。

  3. 如果应用样式时使用 python-docx 你的文件(在样式.xml如果你很好奇的话,那就别提了)。它没有抱怨,只是没有改变事物的格式。我相信这是有原因的。但若你们不明白这个词是如何工作的,它可能会让人觉得有点困惑。

  4. 使用样式时,Word会将其添加到文件中。一旦到了那里,它就会留下来。我想有办法摆脱它,但你必须努力。如果应用样式,请删除应用它的内容,然后保存文档;样式定义保留在保存的文件中。

所有这些加起来就是:如果您想在创建文档时使用样式 python-docx ,开始的文档必须包含样式定义。否则就没用了。它不会引发例外,只是不起作用。

如果您使用“默认”模板文档,它将包含下面列出的样式,如果您不设计自己的样式,则大多数样式可能是您想要的样式。如果使用自己的起始文档,则需要在其中至少使用一次所需的每种样式。您不必保留内容,但在保存文档之前,您需要将样式至少应用于某个内容一次。创建一个单词的段落,连续应用五种样式,然后删除该段落,效果很好。这就是我如何将下面的内容放入默认模板:)。

术语表

样式定义

A <w:style> 元素在文档的样式部分中显式定义样式的属性。

定义的样式

在文档中显式定义的样式。对比 潜在风格 .

内置式

Word内置的276种预设样式之一,如“标题1”。内置样式可以是定义的,也可以是潜在的。尚未定义的内置样式称为 潜在风格 . 定义的和潜在的内置样式都可以作为选项出现在Word的样式面板和样式库中。

自定义样式

也称为 用户定义的样式 ,Word文档中定义的任何不是内置样式的样式。请注意,自定义样式不能是潜在样式。

潜在风格

在特定文档中没有定义的内置样式称为 潜在风格 在那个文件里。潜在样式可以作为选项出现在Word UI中,具体取决于中的设置 LatentStyles 文档的对象。

推荐样式列表

从“列表:”下拉框中选择“推荐”时,将显示在样式工具箱或面板中的样式列表。

样式库

在Word UI的功能区中显示的示例样式的选择,单击其中一个可以应用这些样式。

识别风格

一个样式有三个标识属性, namestyle_idtype .

每种款式的 name 属性是其用于访问的稳定的唯一标识符。

一种风格的 style_id 在内部用于为内容对象(如段落)设置其样式的关键字。但是,该值是由Word自动生成的,不能保证在保存过程中保持稳定。一般情况下,样式id只需从 localized 样式名称,但是也有例外。的用户 python-docx 通常应该避免使用样式ID,除非他们对所涉及的内部结构很有信心。

一种风格 type 在创建时设置,无法更改。

内置样式

有将近300个所谓的 built-in 风格像 NormalHeading 1List Bullet . 样式定义存储在 styles.xml 是.docx包的一部分,但内置样式定义存储在Word应用程序本身中,不写入 styles.xml 直到它们真正被使用。这是一个明智的策略,因为它们会占用相当大的空间,否则在每个.docx文件中都会有很大的冗余和无用的开销。

内置样式在使用之前不会写入.docx包这一事实导致了 潜在风格 定义,解释如下。

风格行为

除了收集一组格式设置属性外,样式还具有五个属性,用于指定其 behavior 。此行为相对简单,基本上相当于样式在Word或LibreOffice用户界面中显示的时间和位置。

理解风格行为的关键概念是推荐列表。在Word的“样式”窗格中,用户可以选择要查看的样式列表。其中一个被命名为 Recommended 并被称为 recommended list 。所有这五个行为属性都会影响此列表和样式库中样式外观的某些方面。

简而言之,如果某个样式 hidden 属性是 False (默认设置)。如果一个样式没有隐藏 quick_style 属性是 True ,它也会显示在样式库中。如果隐藏的样式 unhide_when_used 属性是 True ,其隐藏属性已设置 False 第一次使用。样式列表和样式库中的样式按排序 priority 排序,然后按字母顺序排列相同优先级的样式。如果一种风格 locked 属性是 True 并且对文档启用了格式限制,样式将不会出现在任何列表或样式库中,并且无法应用于内容。

潜在风格

需要指定中未定义的内置样式的UI行为 styles.xml 导致需要 潜在风格 定义。潜在的样式定义基本上是一个存根样式定义,除了样式名之外,它最多有五个行为属性。通过为每个行为属性定义默认值可以节省额外的空间,因此只需要定义与默认值不同的属性,而匹配所有默认值的样式不需要潜在的样式定义。

潜在样式定义是使用 w:latentStylesw:lsdException 元素出现在 styles.xml .

只有内置样式才需要潜在样式定义,因为只有内置样式才能出现在UI中,而没有样式定义 styles.xml .

风格继承

样式可以从另一个样式继承属性,这在某种程度上类似于级联样式表(CSS)的工作方式。继承是使用 base_style 属性。通过将一种样式基于另一种样式,可以形成任意深度的继承层次结构。没有基样式的样式从文档默认值继承属性。

默认模板中的段落样式

  • 正常的

  • 正文

  • 正文2

  • 正文3

  • 解说词

  • 标题1

  • 标题2

  • 标题3

  • 标题4

  • 标题5

  • 标题6

  • 标题7

  • 标题8

  • 标题9

  • 强烈的引述

  • 列表2

  • 列表3

  • 列表项目符号

  • 列表项目符号2

  • 列表项目符号3

  • 列表继续

  • 列表继续2

  • 继续列表3

  • 列表编号

  • 列表编号2

  • 清单3

  • 列出段落

  • 宏文本

  • 无间距

  • 引用

  • 字幕

  • TOCHeading

  • 书名

默认模板中的字符样式

  • 正文文本字符

  • 正文2字符

  • 正文3字符

  • 书名

  • 默认段落字体

  • 强调

  • 标题1字符

  • 字符标题2

  • 标题3字符

  • 标题4字符

  • 标题5字符

  • 标题6字符

  • 标题7字符

  • 标题8字符

  • 标题9字符

  • 强调

  • 密集引号字符

  • 强烈的参考

  • 宏文本字符

  • 引号字符

  • 强壮的

  • 字幕字符

  • 微妙的强调

  • 微妙的参考

  • 标题字符

默认模板中的表格样式

  • 正常工作台

  • 彩色网格

  • 彩色网格强调文字颜色1

  • 彩色网格强调文字颜色2

  • 彩色网格强调文字颜色3

  • 彩色网格强调文字颜色4

  • 彩色网格强调文字颜色5

  • 彩色网格强调文字颜色6

  • 彩色列表

  • 彩色列表强调文字颜色1

  • 彩色列表强调文字颜色2

  • 彩色列表强调文字颜色3

  • 彩色列表强调文字颜色4

  • 彩色列表强调文字颜色5

  • 彩色列表强调文字颜色6

  • 彩色底纹

  • 彩色底纹强调文字颜色1

  • 彩色底纹强调文字颜色2

  • 彩色底纹强调文字颜色3

  • 彩色底纹强调文字颜色4

  • 彩色底纹强调文字颜色5

  • 彩色底纹强调文字颜色6

  • 黑名单

  • 深色列表强调文字颜色1

  • 深色列表强调文字颜色2

  • 深色列表强调文字颜色3

  • 深色列表强调文字颜色4

  • 深色列表强调文字颜色5

  • 深色列表强调文字颜色6

  • 光网

  • 浅色网格强调文字颜色1

  • 强调文字颜色2网格

  • 浅色网格强调文字颜色3

  • 浅色网格强调文字颜色4

  • 浅色网格强调文字颜色5

  • 浅色网格强调文字颜色6

  • 灯光列表

  • 浅色列表强调文字颜色1

  • 浅色列表强调文字颜色2

  • 浅色列表强调文字颜色3

  • 浅色列表强调文字颜色4

  • 浅色列表强调文字颜色5

  • 浅色列表强调文字颜色6

  • 浅色底纹

  • 浅色底纹强调文字颜色1

  • 浅色底纹强调文字颜色2

  • 浅色底纹强调文字颜色3

  • 浅色底纹强调文字颜色4

  • 浅色底纹强调文字颜色5

  • 浅色底纹强调文字颜色6

  • 中等网格1

  • 中等深浅网格1强调文字颜色1

  • 中等深浅网格1强调文字颜色2

  • 中等深浅网格1强调文字颜色3

  • 中等深浅网格1强调文字颜色4

  • 中等深浅网格1强调文字颜色5

  • 中等深浅网格1强调文字颜色6

  • 中等网格2

  • 中等深浅网格2强调文字颜色1

  • 中等深浅网格2强调文字颜色2

  • 中等深浅网格2强调文字颜色3

  • 中等深浅网格2强调文字颜色4

  • 中等深浅网格2强调文字颜色5

  • 中等深浅网格2强调文字颜色6

  • 中等网格3

  • 中等深浅网格3强调文字颜色1

  • 中等深浅网格3强调文字颜色2

  • 中等深浅网格3强调文字颜色3

  • 中等深浅网格3强调文字颜色4

  • 中等深浅网格3强调文字颜色5

  • 中等深浅网格3强调文字颜色6

  • 介质列表1

  • 中等深浅列表1强调文字颜色1

  • 中等深浅列表1强调文字颜色2

  • 中等深浅列表1强调文字颜色3

  • 中等深浅列表1强调文字颜色4

  • 中等深浅列表1强调文字颜色5

  • 中等深浅列表1强调文字颜色6

  • 介质列表2

  • 中等深浅列表2强调文字颜色1

  • 中等深浅列表2强调文字颜色2

  • 中等深浅列表2强调文字颜色3

  • 中等深浅列表2强调文字颜色4

  • 中等深浅列表2强调文字颜色5

  • 中等深浅列表2强调文字颜色6

  • 中等底纹1

  • 中等深浅1强调文字颜色1

  • 中等深浅1强调文字颜色2

  • 中等深浅1强调文字颜色3

  • 中等深浅1强调文字颜色4

  • 中等深浅1强调文字颜色5

  • 中等深浅1强调文字颜色6

  • 中等底纹2

  • 中等深浅2强调文字颜色1

  • 中等深浅2强调文字颜色2

  • 中等深浅2强调文字颜色3

  • 中等深浅2强调文字颜色4

  • 中等深浅2强调文字颜色5

  • 中等深浅2强调文字颜色6

  • 表格网格