博维咨询 Word 报告自动排版技能 v2.7.4
依据《博维咨询Word版报告行文排版标准 V2.6-20250920》+ 国标《GB/T 15834—2011 标点符号用法》。
前置依赖: 使用本技能前,需确保已安装 python-docx 和 lxml:
pip install python-docx lxml本技能中的脚本位于
scripts/目录下,引用参考文档位于references/目录下。
强规则(一票否决,不达标不得交付)
标点符号必须符合 GB/T 15834—2011 国标。AI 生成的中文 Word 文档中最常见、亦最难凭肉眼察觉的错误,即"形似中文实为半角"的标点。此项为所有排版交付前第一项必须扫描的硬性指标。
三大判定原则
- 纯中文上下文里,所有标点必须全角。
- 判断方法:标点前后两侧任一为中文字符,则该标点必须全角。
- 白名单:URL、邮箱、文件路径、代码、版本号、千分位逗号、小数点、化学式 → 保留半角。
必扫的十类错误(必须全部为零)
| 错误模式 | 正确写法 | audit 编号 |
|---|---|---|
| 公司,跨境电商,物流. | 公司、跨境电商、物流。 | P1, P2 |
| "做强做优" (ASCII 直引号) | "做强做优" (弯引号) | P7 |
| 年均增长(CAGR) (半角括号) | 年均增长(CAGR) | P9 |
| <公司法> (尖括号冒充书名号) | 《公司法》 | P10 |
| 供应链能力--博维核心 (双连字符) | 供应链能力——博维核心 | P11 |
| 供应链能力—博维核心 (单 EM dash) | 供应链能力——博维核心 | P12 |
| 物流仓储... (三点) | 物流仓储…… | P13 |
| 年增长 15-30% | 年增长 15%~30% | P15, P20 |
| 《公司法》、《证券法》 (书名号间顿号) | 《公司法》《证券法》 | P17 |
| 1、推动产业链协同 (三级标题用顿号) | 1.推动产业链协同 | P19 |
完整规则、对照表、自动检查正则、白名单参见 references/punctuation_GB_T_15834-2011.md。执行任何排版任务之前,须先阅读该参考文档。
自动修复策略
format_word.py默认启用fix_chinese_punctuation。运行后自动修正绝对安全的半角→全角问题。- 存在歧义的修正(如单个 EM dash、句中半角句号或为版本号片段)仅在
audit_word.py报告中列出,交由人工研判。 - 如需关闭自动修正:
python format_word.py input.docx --no-fix-punctuation
三种工作模式
根据用户需求选择合适的模式:
模式一:自动排版(最常用)
用户已有一份Word文档,需要按博维标准统一格式。
执行步骤:
- 先阅读
references/punctuation_GB_T_15834-2011.md——充分掌握标点规则,方能准确解读 audit 报告 - 确认用户文件路径,使用 python-docx 读取文件基本信息(页数、段落数、当前格式)
- 询问用户关键参数(若无法从文档自动推断):
- 是否有封面页?
- 是否需要目录?
- 页眉左侧文字(报告名称)和右侧文字(编制单位)?
- 提交对象是国企/政府还是民企?(影响严格程度)
- 执行自动排版脚本(默认修正标点):
python scripts/format_word.py input.docx output.docx \ --cover --toc --page-num-style dash \ --header-left "报告名称" --header-right "博维管理咨询" - 执行审查脚本确认是否仍有遗漏,重点关注 P1–P20 标点项:
python scripts/audit_word.py output.docx --strict - 依据审查结果,使用 python-docx 手动修复脚本无法自动处理的问题(尤其是 audit 标记为 INFO 但需人工研判的标点项)
- 将最终文件交付用户
模式二:排版审查
用户希望检验现有文档是否符合博维排版标准,但不一定执行自动修改。
执行步骤:
- 执行审查脚本:
python scripts/audit_word.py input.docx --strict -o report.json - 将审查结果整理为结构化问题清单,按严重程度排序
- 向用户呈现清单,说明各问题的位置、成因及修改建议
- 标点项须分级处理:ERROR 级(中文上下文半角标点、尖括号冒充书名号等)必须全部清零;WARNING 级交由用户研判;INFO 级仅作提示
- 若用户需要自动修复,切换至模式一
模式三:新建报告
从零创建一份符合博维标准的Word报告。
执行步骤:
- 使用 python-docx 创建新文档
- 撰写过程中主动按 GB/T 15834 采用全角标点——此为源头治理,较事后批量替换更为可靠
- 依据下文"排版标准速查表"中的所有规则设置格式
- 执行审查脚本,验证格式与标点的合规性
排版标准速查表
以下是V2.6标准的完整规则,按类别组织。脚本中的常量与这些值一一对应。
一、页面设置
| 项目 | 标准值 | 说明 | |------|--------|------| | 纸张 | A4 (210mm × 297mm) | 纵向 | | 天头(上边距) | 37mm ± 1mm | | | 订口(左边距) | 28mm ± 1mm | | | 版心尺寸 | 156mm × 225mm | 由此推算右边距26mm、下边距35mm |
二、字体字号
| 元素 | 字体 | 字号 | 加粗 | 说明 | |------|------|------|------|------| | 封面标题 | 方正小标宋简体(备选黑体) | 一号(26pt) | 是 | | | 封面说明 | 楷体 | 四号(14pt) | 否 | 括号内说明文字 | | 封面落款 | 楷体 | 四号(14pt) | 否 | 编制单位、日期 | | 全文大标题 | 小标宋(备选黑体) | 二号(22pt) | | 无封面时第一页顶端 | | 一级标题 | 黑体 | 与正文一致(小四12pt) | 是 | 首行缩进2字符;字体黑色;大纲级别0(v2.7.3) | | 二级标题 | 楷体 | 与正文一致(小四12pt) | 是 | 首行缩进2字符;字体黑色;大纲级别1(v2.7.3) | | 三四级标题 | 仿宋 | 与正文一致(小四12pt) | 否 | "1.""(1)"…… | | 附件标题 | 黑体 | 与正文一致(小四12pt) | 是 | 顶格(不缩进);另起页;大纲级别0(v2.7.3) | | 正文 | 仿宋(中文)/ Times New Roman(英文数字) | 小四(12pt) | 否 | | | 目录"目录"二字 | 黑体 | 二号(22pt) | 是 | | | 目录一级 | 黑体 | 四号(14pt) | 是 | 行距1.5倍,段后6磅 | | 目录二级 | 楷体 | 小四(12pt) | 是 | 行距1.5倍 | | 目录三级 | 黑体 | 五号(10.5pt) | 否 | 行距1.25倍 | | 页眉左侧 | 楷体 | 五号(10.5pt) | 是 | 报告名称 | | 页眉右侧 | 黑体 | 小五(9pt) | 否 | 编制单位 | | 页码 | 宋体 | 五号(10.5pt) | 否 | 半角阿拉伯数字 | | 表格标题行 | 楷体(_GB2312) | 小五(9pt) | 是 | | | 表格数据行 | 宋体 | 小五(9pt) | 否 | | | 表标题 | 黑体 | 小四(12pt) | 是 | 表上方,如"表3 XXX" | | 图标题 | 楷体 | 小四(12pt) | 否 | 图下方,如"图3 XXX" |
三、行距与段距
| 项目 | 值 | |------|-----| | 正文行距 | 1.5倍 | | 段前间距 | 0 | | 段后间距 | 0 | | 首行缩进 | 2个字符(禁止用空格占位) |
四、标题层级序号
第一层: 一、 二、 三、 ……
第二层: (一)(二)(三)……
第三层: 1. 2. 3. …… (注意是下角点,不是顿号!)
第四层: (1)(2)(3)……
第五层: ① ② ③ ……
第六层: A. B. C. ……
第七层: a. b. c. ……
关键规则:
- 一二级标题独占行,末尾不加标点
- 三级及以下可根据长短决定是否独占行;若独占行则末尾不加标点,否则标题后必须加句号
- 阿拉伯数字后用下角点(.),不用顿号(、)—— 这是国标硬性规定
- 带括号的序号不加点号
- 提交甲方报告不使用理工科论文编码法(如"1.2.1")
v2.7.3 标题排版强规则(必须遵守):
- 一级标题首行缩进2字符(与正文一致,0.85cm),不是0或不缩进
- 二级标题首行缩进2字符(与正文一致,0.85cm),不是0或不缩进
- 一级标题必须设置大纲级别为0(
outlineLvl val="0"),以便Word自动生成目录时识别 - 二级标题必须设置大纲级别为1(
outlineLvl val="1"),以便Word自动生成目录时识别 - 一级和二级标题字体颜色必须为黑色(
w:color val="000000"),不能是蓝色、主题色或其他颜色
v2.7.4 分页规则(必须遵守)——只在以下位置强制另起页,其他地方一律不强制分页:
- 封面结束后:封面最后一页之后,目录或正文必须另起一页
- 目录结束后:目录之后的正文必须另起一页
- 每个一级标题另起页:所有一级标题("一、""二、""三、"……)都设置
page_break_before = True - 每个附件标题另起页:附件1、附件2……每个附件另起一页(
page_break_before = True) - 其他地方不强制分页:二级标题、三级标题、正文段落、图表标题等一律
page_break_before = False或 None - 宽表格默认不横向分节:检测到宽表格时,默认保留纵向页面并自动适应页面宽度;只有用户明确要求横排/横向页时,才使用
--landscape-wide-tables
五、页码
- 格式:
— X —(一字线,5号半角宋体阿拉伯数字) - 位置:版心下边缘之下7mm
- 奇数页居右空一字,偶数页居左空一字(需勾选"奇偶页不同")
- 封面不编页码、不计入页码数
- 附件与正文连续编排页码
六、页眉
- 左侧:报告名称,楷体五号加黑
- 右侧:编制单位名称,黑体小五
- 细横线与正文分隔
七、目录
- "目录"二字:黑体二号加粗,居中
- 一级:黑体四号加粗,行距1.5倍,段后6磅
- 二级:楷体小四加黑,行距1.5倍
- 三级:黑体五号,行距1.25倍
- v2.7.3 目录排版强规则(必须遵守):
- 目录内容不能留空——必须有实际的条目内容
- 默认显示到二级目录(一级标题+二级标题)
- 每条目录条目包含:标题文本 + 前导点制表位 + 页码域
- 条目格式严格遵循上方字体字号表(一级黑体四号加粗,二级楷体小四加黑)
- 条目首行缩进2字符
- 打开Word后右键目录 → "更新域" → "更新整个目录",可获取准确页码
- 建议使用Word自定义目录功能,通过"引用→目录→自定义目录→修改"设置格式
八、封面
- 标题:小标宋一号,加粗
- 说明文字(如"讨论稿""征求意见稿"):四号楷体,不加粗,括号内
- 副标题/说明文字(标题与署名之间的所有非空段落):楷体四号,居中(v2.7.2 改进:不再要求以括号开头)
- 落款:楷体四号,不加粗,居中,位于页面底部(v2.7.2 改进:space_before 动态计算,避免副标题较多时落款溢出第二页)
- 日期:阿拉伯数字,具体到月份(如"2024年6月");汉字格式用"〇"不用"零"
- 不加页码,不计入页码数
九、表格
- 默认三线表:顶线和底线较粗,栏目线稍细
- 行数较多时可以每行加细边框
- 表标题标注在表正上方,keep_with_next确保不跨页分离
- 横排表格页码位置与正文一致
十、图例
- 序号按全文出现顺序编号(如"图3")
- 标题在图正下方,不与图分跨两页
- 图、表说明文字末尾不使用句号
十一、附件
- "附件"二字在正文下空一行左空二字,后标全角冒号
- 多个附件用阿拉伯数字标注顺序号
- 附件名称后不加标点
- 附件另面编排,"附件"二字及顺序号用黑体顶格排在版心左上角
- v2.7.3 新增:附件标题自动设置
page_break_before = True强制另起页,黑体加粗,顶格不缩进,大纲级别0
十二、署名和日期
- 在正文(或附件说明)下空一行右空二字编排
- 日期在署名下一行,首字比署名首字右移二字
- 日期用阿拉伯数字标全,月日不编虚位(1不编为01)
十三、标点符号(v2.7 新增,对应国标 GB/T 15834—2011)
详见 references/punctuation_GB_T_15834-2011.md。要点:
- 纯中文上下文一律用全角标点
- ASCII 直引号 → 弯引号
- 半角括号包中文 → 全角括号
- 尖括号引法律法规 → 书名号
--或单 EM dash →——(两个 EM dash 连用)...或单…→……- 数值范围用
~,不用-或— - 多个书名号、引号并列不加顿号
- 三级标题序号用下角点
1.,不用顿号1、 - 图表标题末尾不加句号
- 标题独占行末尾不加标点
脚本使用说明
format_word.py — 自动排版
pip install python-docx lxml
# 基础用法(默认开启标点修正)
python scripts/format_word.py input.docx
# 完整参数
python scripts/format_word.py input.docx output.docx \
--mode full \
--cover \
--toc \
--page-num-style dash \
--header-left "XX公司十五五发展战略规划" \
--header-right "博维管理咨询"
# 关闭标点修正(甲方明确要求保留半角时)
python scripts/format_word.py input.docx --no-fix-punctuation
# 仅在明确需要横向页承载宽表格时启用
python scripts/format_word.py input.docx output.docx --landscape-wide-tables
参数说明:
--mode full|light:full=完整排版(默认),light=仅修正字体字号行距--cover:标记第一页为封面(不加页码)--toc:标记有目录(单独处理目录格式)--page-num-style dash|plain:页码样式--header-left:页眉左侧文本--header-right:页眉右侧文本--no-fix-punctuation:v2.7 新增,关闭中文标点自动修正--landscape-wide-tables:v2.7.4 新增,将检测到的宽表格强制切换为横向页;默认不启用,避免表标题与表格被分到不同页面
audit_word.py — 排版审查
# 基础审查
python scripts/audit_word.py input.docx
# 严格模式 + JSON输出
python scripts/audit_word.py input.docx --strict -o report.json
# 只看标点问题
python scripts/audit_word.py input.docx --only-punctuation
审查项包括:
- 页面尺寸和页边距
- 各级标题字体、字号、加粗
- 标题层级跳跃
- 标题末尾标点
- 标题首行缩进
- 正文字体
- 空格冒充首行缩进
- 行距
- 表格/图例序号连续性
- 封面 / 目录 / 正文分页边界
- 表标题与表格是否紧邻、表标题是否设置与下段同页
- 标点符号 P1–P20(v2.7 重写,对应国标 GB/T 15834—2011)
- 数字格式(年份缩写、百分比范围)
- 三级标题序号顿号误用
脚本无法自动处理的事项(需人工额外检查)
以下事项需要在脚本运行后,由人工额外检查:
- 每页最后一行不出现标题:脚本设置了keep_with_next,但无法精确判断分页位置
- 表格跨页时第二页重复表头:python-docx支持有限,需手动处理
- 封面的精确排版:封面布局因报告而异,脚本仅设置字体字号。v2.7.2 改进了封面落款间距计算,但复杂封面仍需人工微调
- 目录页码准确性:脚本自动插入目录条目,但页码为占位值。需在Word中右键目录 → "更新域" → "更新整个目录"以获取准确页码
- 图片的精确尺寸和位置:取决于具体内容
- 附件说明的精确位置:取决于正文结构
- 横排表格的页码方向:仅在显式使用
--landscape-wide-tables时需要在 Word 中手动复核;默认纵向排版不自动横排 - 标点中需要人工判断的项:单个 EM dash 是否为表内分隔符;句中半角句号是否为版本号缩写;引号内点号位置(独立成句 vs 句中成分)
与其他技能的协作
- stop-slop-zh:若报告文字存在 AI 痕迹,先采用 stop-slop-zh 去除 AI 文风,再以本技能排版(说明:本技能 v2.7 已涵盖标点层面的去 AI 化,stop-slop-zh 负责的是句式与措辞层面)
常见问题处理
Q: 甲方另有特定排版要求时如何处理? A: 以甲方要求为准。可调整 format_word.py 中的常量值以适配。
Q: 字体在本机显示异常如何处理? A: 须确认仿宋、楷体、黑体、方正小标宋简体等字体已安装。仿宋_GB2312 与方正小标宋建议安装 GBK 版。
Q: 为何部分标题未被正确识别? A: 脚本通过正则匹配标题编号(如"一、""(一)""1.")识别层级。非标准编号格式须手动处理。
Q: 提交国企或政府的报告有何特殊要求? A: 须更严格遵循《党政机关公文格式》(GB/T 9704—2012),包括正文采用 3 号仿宋体、每面 22 行 28 字、页码采用一字线格式等。可通过调整常量进行适配。
Q: 自动标点修正是否会破坏代码块或 URL?
A: 不会。fix_chinese_punctuation 内置白名单,自动跳过 URL、邮箱、文件路径、千分位、小数点、版本号等。若文档中含有不规则的代码片段或英文引用,建议先执行 audit_word.py 查看具体的预期修改范围,再决定是否启用 --no-fix-punctuation。
Q: 为何 audit 报告中 P12(单 EM dash)仅标记为 INFO?
A: 单个 — 在表内、目录、数值范围连接符等场合可能为合法用法(如 "2024 年 1 月—2024 年 12 月"),机械化判断容易误伤。本规则仅在正文中文上下文中可能误用时给出提示,由人工根据语义研判是否调整为 ——。
版本历史
- v2.7.4(2026-06):WorkBuddy 兼容补丁——封面推断遇到"目录/目 录"即停止,避免目录被误纳入封面;已有目录标题强制另起页;宽表格默认保留纵向页面并自动适应宽度,仅在显式
--landscape-wide-tables时启用横向分节;表标题识别扩展到"表1-XXX / 表1:XXX / 表 1—XXX";audit 新增封面/目录/正文分页边界与表标题绑定检查 - v2.7.3(2026-06):分页规则重构——只在4个位置强制另起页(封面结束后、目录结束后、每个一级标题、每个附件标题),其他地方一律不强制分页;一级和二级标题首行缩进2字符、赋予大纲级别(0/1)以便生成目录、字体强制黑色(RGB 000000)避免蓝色;目录条目自动插入——
--toc时不再留空,自动生成一级和二级目录条目(含前导点+页码域),打开Word后右键更新域即可获取准确页码;附件标题识别与格式化(黑体加粗、顶格、大纲级别0、另起页) - v2.7.2(2026-06):封面副标题识别改进(不再要求括号开头,标题与署名间所有非空段落均居中);落款 space_before 动态计算(避免副标题较多时溢出第二页);机构/日期识别更精确(含冒号段落排除、机构后缀连用匹配)
- v2.7(2026-05):新增国标 GB/T 15834—2011 标点规则强约束;audit 增加 P1–P20 标点检测;format 默认开启 fix_chinese_punctuation
- v2.6(2025-09):博维 Word 排版标准 V2.6 基础版
Scan to join WeChat group