政府机关公文自动排版规范
本规范严格遵循《党政机关公文处理工作条例》和《党政机关公文格式》(GB/T 9704-2012)。
以下参数必须逐条照抄执行,不得以任何理由修改字体、字号、行距、缩进等数值。
排版出错即为硬伤,交付前必须严格自检。
一、页边距
| 边 | 数值 | OOXML |
|---|---|---|
| 上边距 | 37mm (3.7cm) | s.top_margin = Cm(3.7) |
| 下边距 | 35mm (3.5cm) | s.bottom_margin = Cm(3.5) |
| 左边距 | 28mm (2.8cm) | s.left_margin = Cm(2.8) |
| 右边距 | 26mm (2.6cm) | s.right_margin = Cm(2.6) |
> 页边距单位是厘米,绝不是 Pt!写错单位整篇文档将贴边。
二、字体与字号规范
| 元素 | 字体 | 字号(中文) | 字号(pt) | 加粗 | 行距 |
|---|---|---|---|---|---|
| 大标题 | 方正小标宋简体 | 二号 | 22pt | 否 | 34磅固定值 |
| 主送机关 | 仿宋_GB2312 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 一级标题"一、" | 黑体 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 二级标题"(一)" | 楷体_GB2312 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 三级标题"1." | 仿宋_GB2312 | 三号 | 16pt | 是 | 28.9磅固定值 |
| 四级标题"(1)" | 仿宋_GB2312 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 正文 | 仿宋_GB2312 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 正文内数字 | Times New Roman | 三号 | 16pt | 否 | — |
| 附件标识"附件" | 黑体 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 附件标题 | 方正小标宋简体 | 二号 | 22pt | 否 | 34磅固定值 |
| 发文机关署名 | 仿宋_GB2312 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 成文日期 | 仿宋_GB2312 | 三号 | 16pt | 否 | 28.9磅固定值 |
| 页码 | 宋体 | 四号 | 14pt | 否 | — |
关键差异提醒(与常见错误版本的区别):
- 大标题 不加粗(很多版本错误地加了粗)
- 大标题行距 34 磅(不是 29 磅)
- 正文行距 28.9 磅(不是 29 磅,也不是 28 磅)
- 二级标题 不加粗(很多版本错误地加了粗)
- 三级标题用 "1." 半角点号,不是 "1、" 顿号
三、段落格式
| 元素 | 对齐方式 | 行距(twips) | 首行缩进 | 段前/段后 |
|---|---|---|---|---|
| 大标题 | CENTER | 680 (34pt) | 0 | 0/0 |
| 主送机关 | LEFT(顶格) | 578 (28.9pt) | 0 | 0/0 |
| 一级标题 | JUSTIFY | 578 (28.9pt) | 2字符 | 0/0 |
| 二级标题 | JUSTIFY | 578 (28.9pt) | 2字符 | 0/0 |
| 三级标题 | JUSTIFY | 578 (28.9pt) | 2字符 | 0/0 |
| 四级标题 | JUSTIFY | 578 (28.9pt) | 2字符 | 0/0 |
| 正文 | JUSTIFY | 578 (28.9pt) | 2字符 | 0/0 |
| 发文机关署名 | CENTER | 578 (28.9pt) | 0 | 0/0 |
| 成文日期 | RIGHT | 578 (28.9pt) | 0(右缩进4字符) | 0/0 |
- 28.9 磅 = 578 twips(28.9 × 20 = 578)
- 34 磅 = 680 twips(34 × 20 = 680)
- 首行缩进 2 字符:必须使用
w:firstLineChars="200",不可用Cm(0.74)或Pt(32) - 所有段落必须显式设置
w:widowControl w:val="0"(取消孤行控制)
四、各级结构位置关系
1. 大标题
- 编排于红色分隔线下空二行位置
- 分一行或多行居中排布
- 回行时做到词意完整、排列对称、长短适宜、间距恰当
2. 主送机关
- 编排于标题下空一行位置
- 居左顶格,冒号使用全角方式(
\uff1a) - 3号仿宋_GB2312
3. 正文
- 含附件说明、发文机关署名、行文日期、附注
- 除一级、二级、三级标题外,汉字用 3号仿宋_GB2312
- 数字(含阿拉伯数字、年份、序号、百分数)一律用 3号 Times New Roman
- 全文行距 28.9 磅固定值
4. 层次序号规范
依次用 "一、" → "(一)" → "1." → "(1)" 标注:
- 一级标题:"一、" 3号黑体,不加粗
- 二级标题:"(一)" 3号楷体_GB2312,不加粗
- 三级标题:"1."(半角点号,绝非"1、")3号仿宋_GB2312,加粗
- 四级标题:"(1)" 3号仿宋_GB2312,不加粗
- 正文:3号仿宋_GB2312,不加粗
标点规范: 在括号、双引号、书名号之间均不用顿号。
5. 附件说明
- 在正文下空一行、左空二字编排"附件"二字
- 后标全角冒号和附件名称
- 如有多个附件,使用阿拉伯数字标注顺序:
附件:1.XXXXX - 附件名称后不加标点
- 若附件名称较长需回行时,应与上一行附件名称的首字对齐
6. 附件页
- 在落款日期之后的"附件"二字用 3号黑体字顶格编排在版心左上角第一行
- 附件标题居中编排在版心第三行
- 附件顺序号和附件标题应与附件说明的表述一致
- 附件格式要求同正文
7. 发文机关署名
- 3号仿宋_GB2312
- 距最后一行正文内容 3 个空行放置
- 以成文日期为准居中编排
8. 成文日期
- 3号仿宋_GB2312
- 发文机关下方右空 4 个字格编排
- OOXML:
w:rightChars="400"
9. 页码
- 4号宋体字
- 左右各加一条"一字线"(
\u2014,即 "—") - 格式:
— 1 — - 单页码居右空一字,双页码居左空一字
- 设置为"底端外侧"
五、必须绕开的 OOXML 陷阱
陷阱 1:首行缩进"2 字符"
python-docx 的 first_line_indent = Cm(0.74) 只约 1.3 字符,且 Pt(32) 写的是固定长度。
正解: 直接写 OOXML w:firstLineChars="200"(单位:百分之一字符,200 = 2.00 字符)
陷阱 2:孤行控制
必须显式写 w:widowControl w:val="0",否则 Word 默认开启孤行控制。
陷阱 3:行距 28.9 磅
python-docx 不支持小数磅值。必须用 OOXML twips:w:line="578" w:lineRule="exact"
578 = 28.9 × 20
陷阱 4:右空 4 字格
不是右对齐+空格,而是右缩进 4 字符:w:rightChars="400"
六、使用方法
方式一:使用 Python 脚本(推荐)
from scripts.generate_gongwen import create_gongwen
doc = create_gongwen(
title='XX县人民政府关于进一步加强安全生产工作的通知',
zhusong='各乡(镇)人民政府,县政府各部门、各直属机构:',
body_paragraphs=[
('body', '正文段落内容...'),
('h1', '一、一级标题'),
('body', '正文...'),
('h2', '(一)二级标题'),
('body', '正文...'),
('h3', '1.三级标题(注意是半角点号)'),
('body', '正文...'),
],
sign_org='XX县人民政府',
sign_date='2026年8月12日',
attachments=[{'name': '附件名称'}],
output_path='公文.docx'
)
方式二:手动逐段构建
使用脚本中提供的独立函数:add_main_title(), add_zhusong(), add_h1(), add_h2(), add_h3(), add_h4(), add_body(), add_empty_line(), add_sign_off(), add_attachment_header(), add_attachment_title(), set_page_margins(), add_page_numbers()。
七、交付前自检清单
- 页边距:上3.7cm 下3.5cm 左2.8cm 右2.6cm
- 大标题:方正小标宋简体、22pt、不加粗、CENTER、行距 34磅(w:line="680")
- 主送机关:仿宋_GB2312、16pt、LEFT顶格、行距 28.9磅(w:line="578")
- 一级标题:黑体、16pt、不加粗、JUSTIFY、firstLineChars="200"
- 二级标题:楷体_GB2312、16pt、不加粗、firstLineChars="200"
- 三级标题:仿宋_GB2312、16pt、加粗、firstLineChars="200"
- 正文:仿宋_GB2312、16pt、JUSTIFY、firstLineChars="200"、数字 Run 字体=Times New Roman
- 正文及标题行距:
w:line="578" w:lineRule="exact"(28.9磅),段前段后均为 0 - 大标题行距:
w:line="680" w:lineRule="exact"(34磅) - 全文
w:widowControl w:val="0" - 发文机关署名:CENTER、距正文 3 个空行
- 成文日期:RIGHT、右缩进 4 字符(rightChars="400")
- 页码:宋体 14pt、一字线格式
- 三级标题序号用 "1." 而非 "1、"
> 若机器未安装 楷体_GB2312、仿宋_GB2312、方正小标宋简体(部分新版 Windows 默认不带),Word 打开会回退替代字体——规范要求照写字体名,安装对应字体即可正常显示。