---
name: gov-doc-format
display_name: 公文格式规范
description: 基于GB/T 9704-2012公文格式及JG报送规范的专业公文排版工具。当用户需要生成正式公文(方案、报告、通知、请示)、制作Word文档、排版材料、调整公文格式、设置页面边距/字体/行距/页码时触发。支持AI自动排版,一键生成符合国标的公文Word文档。支持红头、份号、密级、签发人、主送机关、附注等全套公文要素。提供白文/红头/空红头三种模式。
description_zh: 专业公文格式规范工具,严格遵循国家标准和政府报送要求,自动处理页面设置、字体字号、行距缩进、奇偶页页码等。覆盖通知、请示、报告、函、纪要、批复、通报、决定等常用文种。支持红头、份号、密级、签发人、主送机关、附注等全套公文要素。提供白文/红头/空红头三种模式。
triggers:
version: 2.3.1
date: 2026-06-25
category: 文档排版/公文格式
author: 豚豚
tags: 公文, 文档, Word, 格式, 排版, 国标, GB/T 9704, docx, python-docx, 通知, 请示, 报告, 红头, 份号, 密级, 签发人
严格遵循 GB/T 9704-2012 及 GB/T 33476.2-2016《党政机关电子公文格式规范 第2部分:显现》,生成符合标准的正式公文。
`
gov-doc-format/
├── SKILL.md # 主文件(本文件)— 触发逻辑、快速参数
├── *.py # 可执行 Python 脚本
│ ├── create_doc.py # 主入口 — 创建文档,支持全部参数和三种模式
│ ├── set_font.py # 字体设置 — 跨平台字体映射、run/paragraph 设置
│ ├── add_heading.py # 标题生成 — 公文标题、一二三级标题
│ ├── add_page_number.py# 页码插入 — PAGE 域代码、奇偶页、格式 - N -
│ ├── format_body.py # 正文排版 — 28磅行距、首行缩进2字符
│ ├── add_signature.py # 落款生成 — 发文字号、签发人、落款、日期
│ ├── add_footer.py # 版记生成 — 抄送机关、印发机关、印发日期、反线
│ ├── add_redhead.py # 红头模块 — 发文机关标志、红色分隔线、发文字号、签发人
│ ├── add_recipient.py # 主送机关 — 居左顶格、自动补全角冒号
│ ├── add_notes.py # 附注模块 — 圆括号、左空二字
│ └── parse_content.py # 内容解析 — 智能层级识别、多格式输入、日期格式化
└── *.md # 知识库参考文件
├── gb9704_2012.md # GB/T 9704-2012 关键条款摘录
├── gb33476_2_2016.md # GB/T 33476.2-2016 电子公文格式规范
├── jg_standards.md # JG 报送规范(地方标准)
├── font_map.md # 字体安装和映射指南
├── doc_types.md # 各文种格式速查
├── checklist.md # 排版完成后的自查清单
└── CHANGELOG.md # 版本变更日志
`
使用本 skill 生成公文时,需要询问起草人选择排版模式:
`
起草人选择:
├── 白文模式(默认)→ 不排红头,直接输出普通公文
└── 红头模式
├── 带红头的 docx → 输出包含红色发文机关标志的完整文件
└── 空红头的 docx → 空出红头位置,用于红头纸打印
`
| 模式 | mode 参数 | 说明 | 适用场景 |
|---|---|---|---|
| ------ | ---------- | ------ | --------- |
| 白文模式 | 'white' | 不排红头,直接输出普通公文 | 日常办公、内部文件 |
| 红头模式 | 'redhead' | 输出包含红色发文机关标志的完整文件 | 正式发文、电子公文 |
| 空红头模式 | 'redhead_space' | 空出红头位置,用于红头纸打印 | 使用印刷红头纸打印 |
使用本 skill 生成公文后,逐项核对:
`
☐ 纸张 A4(210×297mm)
☐ 页边距 上37mm 下35mm 左28mm 右26mm
☐ 标题:方正小标宋简体 二号(22pt) 居中
☐ 一级标题(一、):黑体 三号(16pt) 左空二字
☐ 二级标题((一)):楷体 三号(16pt) 左空二字
☐ 正文:仿宋 三号(16pt)
☐ 行距:固定值 28磅(标题 32磅)
☐ 首行缩进 2字符
☐ 段前段后 0磅
☐ 页码奇偶页不同(奇数页居右,偶数页居左)
☐ 页码格式:- N -(一字线)
☐ 全文颜色:纯黑 RGB(0,0,0)
☐ 发文字号规范(如有)
☐ 上行文标注签发人(如有)
☐ 版记齐全(如有)
`
| 元素 | 字体 | 字号 | 备注 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| 公文标题 | FZXiaoBiaoSong-B05S | 2号(22pt) 居中 | 方正小标宋简体 |
| 一级标题(一、) | 黑体 | 3号(16pt) 左空二字 | 不加粗 |
| 二级标题((一)) | 楷体 | 3号(16pt) 左空二字 | 不加粗 |
| 三级标题(1.) | 仿宋 | 3号(16pt) | 可加粗 |
| 正文 | 仿宋 | 3号(16pt) | |
| 页码 | 宋体 | 4号(14pt) | 格式:- N - |
| 版记(抄送/印发) | 仿宋 | 4号(14pt) | 末页偶数页 |
`python
from gov-doc-format import create_official_doc
doc, section = create_official_doc(
title="关于印发《公文格式规范》的通知",
content="...",
author="×××办公室",
date="2026年5月25日",
)
doc.save("白文公文.docx")
`
`python
doc, section = create_official_doc(
title="关于进一步加强党建工作的通知",
content="...",
doc_number="X政发〔2026〕12号",
author="XX省人民政府",
date="2026年4月26日",
mode='redhead',
)
doc.save("红头公文.docx")
`
`python
doc, section = create_official_doc(
title="关于进一步加强党建工作的通知",
content="...",
doc_number="X政发〔2026〕12号",
author="XX省人民政府",
date="2026年4月26日",
mode='redhead_space',
)
doc.save("空红头公文.docx")
`
`python
doc, section = create_official_doc(
title="关于XXX的通知",
content="...",
copies="000001", # 份号(6位数字)
secret_level="机密★20年", # 密级和保密期限
urgency="特急", # 紧急程度
)
`
`python
doc, section = create_official_doc(
title="关于XXX的通知",
content="...",
recipient="各市、县人民政府,省直各部门:", # 自动补全角冒号
)
`
`python
doc, section = create_official_doc(
title="关于XXX的通知",
content="...",
notes=["此件公开发布", "联系人:张三,电话:13800138000"],
)
`
`python
doc, section = create_official_doc(
title="关于XXX的通知",
content="...",
cc="省委办公厅,省人大常委会办公厅",
print_author="XX省人民政府办公室",
print_date="2026-04-27",
)
`
自动识别正文中的层次序号:
`
一、二、三、 → 一级标题(黑体)
(一)(二)(三) → 二级标题(楷体)
(1)(2)(3) → 四级标题(仿宋)
`
`python
from gov-doc-format import create_official_doc_from_file
doc, section = create_official_doc_from_file(
input_file="content.md",
title="关于XXX的通知",
author="XX省人民政府",
date="2026年4月26日",
mode='redhead',
)
`
| 常见错误 | 原因 | 解决方法 |
|---|---|---|
| --------- | ------ | --------- |
| 标题显示为 MS Gothic | 只设了 style 没设 run 级别字体 | 使用 set_run_font() |
| 表格里文字也缩进了 | first_line_indent 被继承 | 显式设 first_line_indent=0 |
| 页码打印时不更新 | 域代码没更新 | 打开文件后全选 → F9 更新域 |
| 第一页也显示页码 | 白文模式默认显示 | 设为红头模式 |
| 奇偶页页码都在同一侧 | 没启用 evenAndOddHeaders | 设置 even_and_odd_header_footer=True |
| 段落间距不对 | 段前段后没设 0 | 显式设 space_before=0 space_after=0 |
| Mac 字体显示异常 | 没有 _GB2312 字体 | 使用字体映射回退 |
| 发文字号六角括号显示错误 | 用了 [ ] 代替 〔〕 | 使用全角符号:〔〕U+3014/U+3015 |
| 参数 | 值 |
|---|---|
| ------ | ----- |
| 页边距-上 | 37mm |
| 页边距-下 | 35mm |
| 页边距-左 | 28mm |
| 页边距-右 | 26mm |
| 正文行距 | 固定值 28 磅 |
| 标题行距 | 固定值 32 磅 |
| 首行缩进 | 2 字符(≈32pt) |
| 标题字号 | 2 号(22pt) |
| 正文字号 | 3 号(16pt) |
| 页脚字号 | 4 号(14pt) |
| 页码格式 | - N -(一字线) |
| 纸张 | A4(210×297mm) |
| 段前段后 | 0 磅 |
| 全文颜色 | RGB(0,0,0) |
共 5 个版本