在WORD文档中段落的设置可以通过点击菜单栏中的“段落”上的按钮设置。
菜单栏段落按钮 也可以用鼠标右键段落菜单,激活段落设置界面进行设置。
鼠标右键段落菜单 段落设置界面 在python-docx包中可以通过paragraph. alignment和paragraph.paragraph_format进行设置
笔者将从段落的对齐方式、缩进、间距等3个部分进行叙述,最后制作了本篇文章的思维导图。
在python-docx包中对WORD文档段落对齐方式的设置主要用到了paragraph. alignmen这个属性。
在设置段落之前,首先要在文档中获取段落,这部分内容可以参考Python-docx添加段落中有关段落定位的内容。
导入包
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
document = Document()
新建文档和段落
paragraph = document.add_paragraph('这是第一个段落,这是第一个段落,这是第一个段落,这是第一个段落,这是第一个段落,这是第一个段落。') # 新建1个段落
打印默认对齐方式
print(paragraph.alignment) # 打印默认对齐方式paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置中央对齐print(paragraph.alignment) # 修改后段落的对齐方式
运行结果如下图,默认打开方式为None,从样式中继承。CENTER(1)居中对齐,值为1.
设置段落对齐方式运行结果 WORD文档效果如图
设置段落对齐方式WORD效果图 alignment默认值是None,为继承的样式。
WD_PARAGRAPH_ALIGNMENT是docx.enum.text. WD_PARAGRAPH_ALIGNMENT中定义的枚举类型常量。值如下:
LEFT,左对齐,值为0CENTER,居中,值为1RIGHT,右对齐,值为2JUSTIFY,两端对齐,值为3DISTRIBUTE,分散对齐,值为4JUSTIFY_MED,以中等字符压缩比调整,值为5JUSTIFY_HI,以高字符压缩比调整,值为6JUSTIFY_LOW,以低字符压缩比调整,值为7THAI_JUSTIFY,以泰语格式调整,值为8其中前5种对齐方式同WORD段落设置中的对齐方式相同,如图
段落对齐方式 段落的缩进主要分为左侧缩进、右侧缩进、首行缩进和悬挂缩进等三个部分。分别对应于了python-docx包docx.text.parfmt.ParagraphFormat中的left_indent、right_indent和first_line_indent属性。由于这三个属性都要设置值,属于Length类型,需要从docx.shared类中导入单位,主要单位有pt(磅)、cm(厘米)、inches(英寸)、mm(毫米),其中pt的值为Int类型,另外三个值为float类型。
导入单位
from docx.shared import Pt, Cm, Inches
左缩进
左缩进使用left_indent,默认值为None,代表从样式中继承。赋值时,必须添加单位转换,入Cm(0.75)代表赋值为0.75厘米。
打印默认左缩进和设置左缩进,见代码
print(paragraph.paragraph_format.left_indent)paragraph.paragraph_format.left_indent = Cm(0.75) # 设置为print(paragraph.paragraph_format.left_indent.cm)
运行结果见图7
图7 左缩进运行结果 WORD文档见图8
图8 左缩进WORD效果 右缩进
右缩进使用的right_indent,其用法同left_indent。见代码。
paragraph.paragraph_format.right_indent = Inches(0.75) # 右缩进
WORD文档见图9
图9 右缩进WORD效果 首行缩进和悬挂缩进
首行缩进和悬挂缩进使用first_line_indent属性来实现,当值为大于0时,为首行缩进当值为小于0时为悬挂缩进,其用法同left_indent。
首行缩进代码
paragraph.paragraph_format.first_line_indent = Cm(0.75) # 首行缩进0.75cm
WORD文档效果见图10
图10 首行缩进WORD文档效果 悬挂缩进代码如下
paragraph.paragraph_format.first_line_indent = Cm(-0.75) # 悬挂缩进0.75cm
WORD文档效果见图11
图11 悬挂缩进WORD文档效果 在段落设置中,间距包括段前间距、段后间距和行间距。分别对应于了python-docx包docx.text.parfmt.ParagraphFormat中的space_before,space_after和line_spacing和line_spacing_rule。其中前三者为Length类型,同样需要从docx.shared类中导入单位。
段前间距
段前间距使用space_before,默认值为None,代表从样式中继承。其用法同left_indent。
paragraph.paragraph_format.space_before = Pt(25) # 段前间距25磅
WORD文档效果见图12
图12 段前间距WORD文档效果 段后间距
段前间距使用space_before,其用法同left_indent。
paragraph.paragraph_format.space_after = Pt(20) # 段后间距20磅
WORD文档效果见图13
图13 段后间距WORD文档效果 行间距
行间距的设置可以使用2个属性line_spacing和line_spacing_rule。这两个属性不用同时设置。line_spacing_rule的值是docx.enum.text. WD_LINE_SPACING中的枚举类型的常量,值的列表如下:
ONE_POINT_FIVE,1.5倍行距AT_LEAST,最小行距DOUBLE,双倍行距EXACTLY,固定值MULTIPLE,多倍行距SINGL,单倍行距当line_spacing_rule的值设置为EXACTLY和MULTIPLE时,需要line_spacing属性进行设置具体的数值。
paragraph.paragraph_format.line_spacing_rule = WD_LINE_SPACING.ONE_POINT_FIVE # 1.5倍行距print(paragraph.paragraph_format.line_spacing_rule,paragraph.paragraph_format.line_spacing)
运行结果,见图14
图14 行间距运行结果图 而只使用line_spacing属性时,则当值满足line_spacing_rule的规则时,line_spacing_rule自动进行赋值。例如当line_spacing为2时,line_spacing_rule的值为WD_LINE_SPACING.DOUBLE,代码入下:
paragraph.paragraph_format.line_spacing = 2print(paragraph.paragraph_format.line_spacing_rule,paragraph.paragraph_format.line_spacing)
运行结果,见图15
图15 行间距设置运行结果图 笔者总结了python-docx包对WORD文档段落的对齐方式,段落缩进和段落间距等3个方面的设置,制作了思维导图,见图16。
图16 python-docx段落设置思维导图