WPS 一键排版
把"一份格式混乱的公文"变成"可以直接上报的成品",并给出逐项自检结论。
只改格式,不改一个字——正文文字、段落顺序、内容一律不动。
一、何时使用
命中以下任一情形即用本 Skill:
- 用户提供
.wps/.doc/.docx/.txt公文,要求"排版""规范格式""调一下格式" - 抱怨字体、字号、行距、页边距、缩进、页码、落款对不齐
- 上级要求按 GB/T 9704 或"公文格式"重新整理
- 已有文档需要批量统一格式
不要用本 Skill 的情形:
| 需求 | 应该走 |
|---|---|
| 生成红头文件版头(发文机关标志、红色分隔线、发文字号) | 本 Skill 不做,需人工或专门模板 |
| 从零写一篇公文内容 | 先用写作类 Skill,再回来排版 |
| 表格美化、图表制作 | 用表格类 Skill |
| 纯格式转换(PDF↔Word) | 用 wpscli |
二、30 秒上手
# 预设:本机 Python 绝对路径(勿用裸 python,避免命中错误运行时)
PY="C:/Users/Administrator/.workbuddy/binaries/python/versions/3.13.12/python.exe"
SK="C:/Users/Administrator/.workbuddy/skills/wps-paiban/scripts/paiban.py"
# 1) 先看识别结果(不写文件,最安全)
"$PY" "$SK" "报告.wps" --dry-run
# 2) 确认无误后排版(默认输出到源文件同目录,文件名加"(排版后)")
"$PY" "$SK" "报告.wps" --pages
# 3) 批量
"$PY" "$SK" "D:/材料/待排版" --batch -o "D:/材料/已排版"
标准动作顺序:先 --dry-run 看识别 → 再正式排版 → 读自检结论 → 需要时目视翻页。
用户只说"帮我排一下"时,也要先干跑,因为结构识别错一处,整份文件的层级就乱了。
三、排版规范(默认 profile:gongwen)
| 部位 | 字体 | 字号 | 行距 | 其他 |
|---|---|---|---|---|
| 标题 | 黑体 | 2号(22磅) | 36磅固定 | 居中,段前段后 0 |
| 主送机关 | 仿宋 | 3号(16磅) | 27磅固定 | 顶格,末尾全角冒号 |
| 正文 | 仿宋 | 3号 | 27磅固定 | 两端对齐,首行缩进 2 字符 |
| 一级标题「一、」 | 黑体 | 3号 | 27磅固定 | 首行缩进 2 字符 |
| 二级标题「(一)」 | 楷体 | 3号 | 27磅固定 | 首行缩进 2 字符;句号后的正文改用仿宋3号 |
| 三级标题「1.」 | 仿宋 | 3号 | 27磅固定 | 首行缩进 2 字符 |
| 附件说明 | 仿宋 | 3号 | 27磅固定 | 左空 2 字 |
| 发文机关署名 | 仿宋 | 3号 | 27磅固定 | 右对齐,右空 2 字 |
| 成文日期 | 仿宋 | 3号 | 27磅固定 | 右对齐,右空 2 字 |
| 页码 | 宋体 | 4号(14磅) | 单倍 | 居中,格式 — 1 —,PAGE 域 |
| 页面 | — | A4 | — | 上3.7 下3.5 左2.8 右2.6 cm;页脚1.75 页眉1.5 cm |
西文与数字统一 Times New Roman;表格内文字只统一字体字号,不改表内对齐与列宽。
标题与正文同段的处理(重要)
公文中常见「(一)存款组织有力。对公存款新增1.2亿元……」这种标题与正文挤在同一段、
用句号分隔的写法。本工具按字符切分,句号(或全角冒号)之前用标题字体,之后用仿宋3号:
- 一级标题:
一、总体情况。→ 黑体3号 + 其后全行各项存款……→ 仿宋3号 - 二级标题:
(一)存款组织有力。→ 楷体3号 + 其后对公存款新增……→ 仿宋3号 - 三级标题整段本就是仿宋,不做切分
若整段套一种字体,句号后的正文会错成楷体/黑体,是肉眼即可看出的硬伤,自检中单独有一项
「标题句后正文字体」把关。
四、工作流与判定规则
- 判输入:文件头是 ZIP 走 python-docx;是 OLE(.wps/.doc 的真实形态,含改名文件)走 WPS COM 另存;纯文本按行建文档。
- 判结构:只依据文本形态,不读样式名。实测来源文档常把所有段落都挂在 Heading 1 上,样式名不可信。
- 判是否需要人工确认:
- 出现「发文字号」→ 提醒这是红头文件,本工具不生成版头
- 未识别到成文日期 → 提醒落款需人工核对
- 未发现「一、二、」层级 → 提醒层级可能需人工划分 - 查自检:符合率不是 100% 时,逐条看是哪个字段不符,而不是笼统说"已完成"。
- 查空白页:
--pages报的页数若明显多于按字数估算(3号字27磅行距下每页约 620 字),要打开翻看是否有空白页。
五、命令参数
| 参数 | 作用 |
|---|---|
--dry-run |
只输出识别结果,不写文件 |
--check |
只审计现有文档的排版,不改文件 |
-o |
输出文件,或输出目录(不存在会自动创建) |
--batch |
批量:输入可为目录或通配符 |
--pages |
用 WPS 统计成品页数(查空白页用) |
--open |
排版完成后用 WPS 打开看效果 |
--font-check |
看本机公文字体是否齐全、当前是写国标名还是降级 |
--set a.b=值 |
临时覆盖配置,如 --set sizes.title=18 |
--keep-sections |
保留源文件所有分节符(默认合并页面设置相同者) |
--no-downgrade |
缺字体时不降级(默认已如此,保留兼容) |
--downgrade |
缺字体时强制降级为本机同族字体 |
--json |
结构化输出,便于串进自动化流程 |
六、已知边界(必须向用户说明)
- 字体名按国标写入(默认):正文写
仿宋_GB2312、二级标题写楷体_GB2312,即使本机未安装也不改成仿宋/楷体。
实测 WPS 未装该字体时会自动替换为同族字体(仿宋_GB2312→仿宋、楷体_GB2312→楷体)渲染,显示正常;
字体名合规,文件转到装了该字体的机器即为标准效果。--font-check可看本机缺哪几个。
仅在渲染明显异常时用--downgrade强制降级。 - 不做的事:不加页码以外的版头要素;不补空行(如"附件说明前空一行"需人工);不拆分/合并文字;不处理文本框内文字。
- 加密文件:受保护文档会转换失败,需先解除保护。
- 分节符:仅合并"页面设置与末节完全一致"的多余分节符;确有横向页等多版心文档时保留原样并告警,此时页码连续性需人工确认。
- 行内编号:源文档若用自动编号(列表样式),本工具保留编号并套缩进,但编号格式本身不做改造。
七、故障排查
| 现象 | 处理 |
|---|---|
无法启动 WPS/Word 自动化接口 |
确认 WPS 已安装可正常启动;或让用户用 WPS 打开另存为 .docx 后重试 |
| 转换出来的文件打不开 | WPS 的 SaveAs 过滤器必须用 12(docx);16 会产出旧 .doc,本工具已规避 |
| 页尾大片空白 / 多出空白页 | 多为 keepNext/keepLines 残留或多余分节符;本工具已默认清除与合并,若仍存在用 --dry-run 看是否把长段落误判为标题 |
| 标题被拆成两段 | 源文件本身就是两段;本工具不合并段落(合并会破坏书签与交叉引用),视觉上居中同字号,效果一致 |
页码显示 — 1 — 而不是数字 |
正常:PAGE 是域,WPS 中按 F9 或打印预览即刷新为真实页码 |
| 字体告警但显示正常 | 字体名为国标名、本机缺字体由 WPS 替换渲染,属正常;装上字体即标准效果 |
八、扩展配置
- 规范文件:
profiles/gongwen.json,逐项可改(纸张、边距、字体、字号、行距、缩进、对齐、页码)。 - 本单位惯例与国标的差异已在
_notes中标注,例如成文日期右空字数、标题字号。 - 换一套规范:复制一份 json 改名,用
-p 新名字调用;也可-p 路径/自定义.json。
九、验证基线
本 Skill 的排版结果以《双牌县支行违规使用周转房、违规出国(境)问题专项监督自查报告(排版后).docx》为验收基线:
3 页、每页 21–22 行、正文 27 磅固定行距、标题黑体 2 号居中、落款右对齐。
对该基线再次排版应保持幂等(113 项检查全部通过、页数不变)。