official-document - 通用机关公文技能
基于 GB/T 9704-2012 党政机关公文格式标准,适用于各级机关单位生成正式公文。
适用场景
- 生成党政机关公文(通知、请示、报告、函等)
- 按国家标准排版的正式文档
- 需要规范格式的红头文件
技术方案
- 语言: Python 3
- 库: python-docx
- 编码: UTF-8(文件头声明
# -*- coding: utf-8 -*-)
核心格式参数(GB/T 9704-2012)
| 项目 | 标准值 |
|---|---|
| 纸张 | A4 |
| 上边距 | 3.7cm |
| 下边距 | 3.5cm |
| 左边距 | 2.8cm |
| 右边距 | 2.6cm |
| 公文标题 | 方正小标宋简体 22pt,不加粗,居中 |
| 正文 | 仿宋_GB2312 16pt,首行缩进0.85cm |
| 一级标题 | 黑体 16pt,不加粗 |
| 二级标题 | 楷体_GB2312 16pt,不加粗 |
| 行距 | 固定28.5磅 |
| 页码 | 宋体 12pt,居中或右下 |
公文结构规范
发文字号格式
- 年份必须使用六角括号
〔〕,格式:机关代字〔年份〕顺序号 - 示例:
陕XX〔2026〕28号、中XX〔2026〕28号 - 严禁使用方括号
【】或其他括号代替
各部分间距
| 位置 | 间距要求 |
|---|---|
| 发文字号 → 标题 | 空2行 |
| 标题 → 主送机关 | 空1行 |
| 主送机关 → 正文 | 直接连接,正常行距 |
| 正文段落之间 | 正常行距,无额外段前段后 |
| 附件前 | 空1行 |
| 落款前 | 空3行 |
| 落款 → 日期 | 同一行或相邻行,距右4汉字 |
| 日期 → 联系方式 | 空1行 |
标题字体规范
| 要素 | 字体 | 字号 | 加粗 | 说明 |
|---|---|---|---|---|
| 发文字号 | 仿宋_GB2312 | 16pt | 否 | 右对齐,年份用六角括号 〔〕,如 陕XX〔2026〕28号,不得用方括号 【】 |
| 公文标题 | 方正小标宋简体 | 22pt | 否 | 居中 |
| 主送机关 | 仿宋_GB2312 | 16pt | 否 | 顶格 |
| 正文 | 仿宋_GB2312 | 16pt | 否 | 首行缩进0.85cm |
| 一级标题 | 黑体 | 16pt | 否 | 首行缩进0.85cm |
| 二级标题 | 楷体_GB2312 | 16pt | 否 | 首行缩进0.85cm |
| 落款 | 仿宋_GB2312 | 16pt | 否 | 右对齐 |
| 日期 | 仿宋_GB2312 | 16pt | 否 | 右对齐 |
附件格式
- 单个附件:
附件:文件名 - 多个附件:
(编号左对齐)附件:1.文件名1 2.文件名2
联系方式格式
- 位置:落款日期下方空1行
- 格式:
(联系人:XXX 电话:XXX,地址:XXX) - 首行缩进0.85cm
使用方法
- 加载技能:
use_skill("official-document") - 复制
scripts/generate_docx.py到工作目录 - 修改 CONFIG 配置和 CONTENTS 正文内容
- 运行
python generate_docx.py
Python 编码注意事项
重要:所有字符串使用三引号 """...""" 包裹,避免文本内容中的引号与字符串分隔符冲突。
# 正确示例:正文内容含中文弯引号时,必须用三引号包裹
text = """切实发挥中文弯引号的作用"""
# 错误示例
contact = "联系人:XX.." # 文本中有逗号可能没问题,但引号会有问题
中文引号必须原样保留
中文排版引号为弯引号字符,区分左右(左引号和右引号不同)。生成脚本时必须原样保留用户输入的引号,不得替换为英文直引号。
注意:Markdown 无法正确显示中文弯引号,因此严禁在 SKILL.md 或代码示例中展示引号字符来"示范正确用法"。
文件结构
official-document/
├── SKILL.md # 本文档
├── scripts/
│ └── generate_docxy.py # Python生成脚本
├── references/
│ └── gbt9704-2012.md # GB/T 9704-2012 标准全文
└── assets/
└── template_docx.py # 精简模板