# 党政机关公文格式规范（official_document）

> 本规范依据《党政机关公文格式》国家标准（GB/T 9704-2012）制定。
> 作为独立的公文模板规则，用于指导模型自动生成符合国标的公文 Word 文档。

---

## 一、文档结构层次

公文正文的标题层级和编号规则如下：

```
# 文档标题（自动识别为公文大标题）

## 一、一级标题

### （一）二级标题

正文段落内容。

**1. **带加粗前缀的三级标题段落

（1）四级标题段落

①五级标题段落
```

### 层级编号规范

| 层级 | 编号格式 | 示例 | 字体 | 字号 | 加粗 | 独占一行 |
|------|---------|------|------|------|------|---------|
| 大标题 | 无编号 | `关于印发XXX的通知` | 方正小标宋简体 | 2号（22pt） | 否 | ✅ 居中 |
| 一级标题 | `一、` `二、` `三、` | `一、总体要求` | 黑体 | 3号（16pt） | 否（黑体本身即粗） | ✅ |
| 二级标题 | `（一）` `（二）` `（三）` | `（一）指导思想` | 楷体_GB2312 | 3号（16pt） | 否 | ✅ |
| 三级标题 | `1.` `2.` `3.` | `1. 加强组织领导` | 仿宋_GB2312 | 3号（16pt） | ✅ 加粗 | ❌ 不另起一行，与正文同段 |
| 四级标题 | `（1）` `（2）` `（3）` | `（1）建立工作机制` | 仿宋_GB2312 | 3号（16pt） | 否 | ❌ 不另起一行 |
| 五级标题 | `①` `②` `③` | `①做好前期准备` | 仿宋_GB2312 | 3号（16pt） | 否 | ❌ 不另起一行 |

### 层级规则要点

1. **三级及以下标题不另起一行**，直接接正文内容，之间用句号或空格分隔
2. **一级标题编号**使用中文数字 + 顿号：`一、` `二、` `三、`
3. **二级标题编号**使用中文圆括号 + 中文数字：`（一）` `（二）`（注意是全角括号）
4. **三级标题编号**使用阿拉伯数字 + 实心句点：`1.` `2.`（注意是半角句点）
5. **四级标题编号**使用中文圆括号 + 阿拉伯数字：`（1）` `（2）`
6. **五级标题编号**使用带圈数字：`①` `②` `③`

---

## 二、字体规范

### 字体对照表

| 元素 | 中文字体 | 西文/数字字体 | 字号 | 磅值 | 特殊说明 |
|------|---------|-------------|------|------|---------|
| **公文标题** | 方正小标宋简体 | — | 2号 | 22pt | 不加粗，居中排布 |
| **主送机关** | 仿宋_GB2312 | Times New Roman | 3号 | 16pt | 顶格，后接冒号 |
| **一级标题** | 黑体 | Times New Roman | 3号 | 16pt | 不加粗（黑体本身视觉已粗） |
| **二级标题** | 楷体_GB2312 | Times New Roman | 3号 | 16pt | 不加粗 |
| **三级标题** | 仿宋_GB2312 | Times New Roman | 3号 | 16pt | **加粗** |
| **正文** | 仿宋_GB2312 | Times New Roman | 3号 | 16pt | 不加粗 |
| **附件说明** | 仿宋_GB2312 | Times New Roman | 3号 | 16pt | "附件："二字后接附件名称 |
| **发文机关署名** | 仿宋_GB2312 | — | 3号 | 16pt | 右空四字编排 |
| **成文日期** | 仿宋_GB2312 | Times New Roman | 3号 | 16pt | 右空四字编排，用阿拉伯数字 |
| **附注** | 仿宋_GB2312 | Times New Roman | 3号 | 16pt | 圆括号括注 |
| **抄送机关** | 仿宋_GB2312 | Times New Roman | 4号 | 14pt | 左空一字 |
| **印发机关和日期** | 仿宋_GB2312 | Times New Roman | 4号 | 14pt | 印发机关左空一字，日期右空一字 |
| **页码** | 宋体 | Times New Roman | 4号 | 14pt | 格式：`- 1 -`，居中或外侧 |

### 字体兼容性说明

| 标准字体 | macOS 替代 | Linux 替代 | 说明 |
|---------|-----------|-----------|------|
| 方正小标宋简体 | STSong / 华文宋体 | Noto Serif CJK SC | 需单独安装方正字体 |
| 黑体 | STHeiti / 黑体-简 | Noto Sans CJK SC Bold | 系统自带 |
| 楷体_GB2312 | STKaiti / 楷体-简 | AR PL UKai CN | 部分系统需安装 |
| 仿宋_GB2312 | STFangsong / 华文仿宋 | Noto Serif CJK SC | 部分系统需安装 |
| 宋体 | STSong / 宋体-简 | Noto Serif CJK SC | 系统自带 |

### 字号与磅值对照

| 字号 | 磅值(pt) | 毫米(mm) | 常用位置 |
|------|---------|---------|---------|
| 初号 | 42pt | 14.82mm | — |
| 小初 | 36pt | 12.70mm | — |
| 一号 | 26pt | 9.17mm | — |
| 小一 | 24pt | 8.47mm | — |
| 二号 | 22pt | 7.76mm | **公文标题** |
| 小二 | 18pt | 6.35mm | — |
| 三号 | 16pt | 5.64mm | **正文、各级标题** |
| 小三 | 15pt | 5.29mm | — |
| 四号 | 14pt | 4.94mm | **页码、抄送** |
| 小四 | 12pt | 4.23mm | — |

---

## 三、段落格式

### 基础段落设置

| 属性 | 值 | 说明 |
|------|------|------|
| **行间距** | 固定值 28 磅 | 公文标准行距，不可使用"单倍行距"或"多倍行距" |
| **段前间距** | 0 磅 | 公文不设段前间距 |
| **段后间距** | 0 磅 | 公文不设段后间距 |
| **首行缩进** | 2 字符（32 磅） | 3号字（16pt） × 2 = 32pt |
| **对齐方式** | 两端对齐 | 正文默认对齐方式 |
| **孤行控制** | 关闭 | 避免自动分页干扰版面 |

### 特殊段落对齐

| 元素 | 对齐方式 | 补充说明 |
|------|---------|---------|
| 公文标题 | 居中 | 可分一行或多行居中排布，回行注意词意完整 |
| 一级标题 | 首行缩进2字符 | 编号前有缩进 |
| 二级标题 | 首行缩进2字符 | 编号前有缩进 |
| 正文段落 | 首行缩进2字符 + 两端对齐 | 标准格式 |
| 主送机关 | 左对齐，顶格 | 无缩进 |
| 发文机关署名 | 右空四字 | 即右缩进约4个汉字宽度（64pt） |
| 成文日期 | 右空四字 | 与署名右对齐 |

### 标题行距特殊规则

| 元素 | 行距说明 |
|------|---------|
| 公文标题 | 标题下空一行（即加一个空段落） |
| 标题多行 | 标题超过一行时建议行距 35 磅 |
| 一级标题 | 前后不额外空行，与正文同为 28 磅行距 |

---

## 四、页面设置

### 页面尺寸与页边距

| 属性 | 国标值（精确） | 英寸值（近似） |
|------|-------------|-------------|
| **纸张大小** | A4（210mm × 297mm） | 8.27" × 11.69" |
| **上边距** | 37mm（3.7cm） | ≈1.46" |
| **下边距** | 35mm（3.5cm） | ≈1.38" |
| **左边距** | 28mm（2.8cm） | ≈1.10" |
| **右边距** | 26mm（2.6cm） | ≈1.02" |
| **页脚距底边** | 25mm（2.5cm） | ≈0.98" |
| **方向** | 纵向 | — |

> ⚠️ **注意**：国标要求的页边距与 Word 默认值不同。上 37mm、下 35mm、左 28mm、右 26mm 是严格规范，务必精确设置。

### 版心设置

| 属性 | 值 | 说明 |
|------|------|------|
| 每页行数 | 22 行 | 以三号仿宋为标准 |
| 每行字数 | 28 个汉字 | 含标点，3号字标准 |
| 版心宽度 | 156mm（210-28-26） | 左右边距之差 |
| 版心高度 | 225mm（297-37-35） | 上下边距之差 |

### 页码格式

| 属性 | 规范 |
|------|------|
| 字体 | 4号宋体 / Times New Roman |
| 格式 | `- 1 -`（数字两侧各一个半角空格 + 短横线） |
| 位置 | 页脚居中（或奇偶页外侧） |
| 起始页 | 从正文第一页开始编号 |
| 首页 | 如有发文机关标志页，首页不显示页码 |
| 奇偶页设置 | 可设为"奇偶页不同"（单页码居右空一字，双页码居左空一字） |

---

## 五、标点符号规范

### 必须使用的标点形式

| 标点 | 正确形式 | Unicode | 错误形式 | 说明 |
|------|---------|---------|---------|------|
| 中文逗号 | ， | U+FF0C | , | 正文中一律用全角 |
| 中文句号 | 。 | U+3002 | . | 正文中一律用全角 |
| 中文冒号 | ： | U+FF1A | : | 正文中一律用全角 |
| 中文分号 | ； | U+FF1B | ; | 正文中一律用全角 |
| 中文问号 | ？ | U+FF1F | ? | 正文中一律用全角 |
| 中文感叹号 | ！ | U+FF01 | ! | 正文中一律用全角 |
| 左双引号 | \u201c | U+201C | " | 中文引号 |
| 右双引号 | \u201d | U+201D | " | 中文引号 |
| 左单引号 | \u2018 | U+2018 | ' | 中文引号 |
| 右单引号 | \u2019 | U+2019 | ' | 中文引号 |
| 书名号 | 《》 | U+300A U+300B | <> | — |
| 中文括号 | （） | U+FF08 U+FF09 | () | 正文中用全角 |
| 顿号 | 、 | U+3001 | , | 并列词之间 |
| 破折号 | —— | U+2014×2 | -- | 两个一字线 |
| 省略号 | …… | U+2026×2 | ... | 两个三点 |

### 数字与标点规则

- **纯中文语境**中的数字后使用**全角标点**：`第3条，`
- **公文日期**使用阿拉伯数字 + 全角标点：`2026年3月12日`
- **编号中的句点**使用半角：`1.` `2.`（三级标题）
- **百分号**使用半角：`30%`
- **连接号**用一字线 `—`（U+2014），不用短横 `-`

---

## 六、公文要素与排版位置

### 公文组成要素

公文一般由以下要素组成（按排列顺序）：

```
┌─────────────────────────────────────────┐
│              份号（如需标注）              │  ← 顶格，3号阿拉伯数字
│              密级和保密期限                │  ← 顶格，3号黑体
│              紧急程度                     │  ← 顶格，3号黑体
│                                         │
│          ╔═══════════════════╗          │
│          ║   发文机关标志      ║          │  ← 红色，方正小标宋
│          ╚═══════════════════╝          │
│          发文字号                         │  ← 居中/左，3号仿宋
│          签发人（上行文）                  │  ← 3号仿宋 + 楷体
│  ═══════════════════════════════════════ │  ← 红色分隔线
│                                         │
│            公文标题                       │  ← 2号方正小标宋，居中
│                                         │
│  主送机关：                               │  ← 3号仿宋，顶格
│                                         │
│      正文内容......                       │  ← 3号仿宋，缩进2字符
│      一、一级标题                          │  ← 3号黑体
│      （一）二级标题                        │  ← 3号楷体
│      正文继续......                       │  ← 3号仿宋
│                                         │
│  附件：1. XXXXX                          │  ← 3号仿宋
│                                         │
│                    发文机关署名            │  ← 右空四字
│                    2026年3月12日          │  ← 右空四字
│                                         │
│  （联系人及电话：XXX XXXX-XXXXXXXX）      │  ← 附注，3号仿宋
│  ═══════════════════════════════════════ │  ← 分隔线
│  抄送：XXX，XXX。                        │  ← 4号仿宋
│  ═══════════════════════════════════════ │  ← 分隔线
│  XXX办公室                   2026年X月印发 │  ← 4号仿宋
└─────────────────────────────────────────┘
```

### 各要素间距规则

| 要素 | 排版位置 | 间距规则 |
|------|---------|---------|
| 公文标题 | 红色分隔线下空二行 | 居中排列，多行时注意词意完整 |
| 标题与主送机关 | 标题下空一行 | — |
| 主送机关 | 左对齐顶格 | 后接冒号 |
| 正文 | 主送机关下一行起 | 首行缩进2字符 |
| 附件说明 | 正文下空一行 | 左空2字符，"附件："后接名称 |
| 发文机关署名 | 正文/附件说明下空适当行 | 右空四字 |
| 成文日期 | 署名下一行 | 右空四字，与署名对齐 |
| 附注 | 成文日期下一行 | 左空2字符，圆括号括注 |

---

## 七、表格规范

公文中的表格遵循以下规则：

| 属性 | 规范 |
|------|------|
| 字体 | 与正文一致（仿宋_GB2312），可适当缩小（小四或五号） |
| 边框 | 实线，黑色，0.5pt |
| 表头 | 居中，可加粗 |
| 单元格对齐 | 水平居中或左对齐，垂直居中 |
| 表格宽度 | 不超出版心（156mm） |
| 续表 | 跨页表格应标注"续表"并重复表头 |

---

## 八、python-docx 实现参考

> 以下为使用 python-docx 原生 API 实现公文格式的代码片段，供开发公文模板脚本时参考。

### 页面设置（国标精确值）

```python
from docx import Document
from docx.shared import Mm, Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING

doc = Document()
section = doc.sections[0]

# A4 纸张
section.page_width = Mm(210)
section.page_height = Mm(297)

# 国标精确页边距
section.top_margin = Mm(37)
section.bottom_margin = Mm(35)
section.left_margin = Mm(28)
section.right_margin = Mm(26)
```

### 设置字体（中西文分别设置）

```python
from docx.oxml.ns import qn

def set_run_font(run, cn_font, en_font, size, bold=False):
    """设置 run 的中文字体、西文字体、字号和加粗"""
    run.font.name = en_font          # 西文字体
    run.font.size = size
    run.bold = bold
    # 中文字体需通过 XML 设置
    r = run._element
    rPr = r.find(qn('w:rPr'))
    if rPr is None:
        rPr = r.makeelement(qn('w:rPr'), {})
        r.insert(0, rPr)
    rFonts = rPr.find(qn('w:rFonts'))
    if rFonts is None:
        rFonts = rPr.makeelement(qn('w:rFonts'), {})
        rPr.append(rFonts)
    rFonts.set(qn('w:eastAsia'), cn_font)
```

### 设置段落格式

```python
def set_paragraph_format(paragraph, indent=True, alignment=WD_ALIGN_PARAGRAPH.JUSTIFY):
    """设置公文标准段落格式"""
    fmt = paragraph.paragraph_format
    fmt.line_spacing = Pt(28)                          # 固定值 28 磅
    fmt.line_spacing_rule = WD_LINE_SPACING.EXACTLY
    fmt.space_before = Pt(0)
    fmt.space_after = Pt(0)
    fmt.alignment = alignment
    if indent:
        fmt.first_line_indent = Pt(32)                 # 2 字符缩进
    # 关闭孤行控制
    paragraph.paragraph_format.widow_control = False
```

### 添加各层级内容

```python
# 大标题 — 方正小标宋简体 2号，居中
p = doc.add_paragraph()
run = p.add_run("关于印发XXX实施方案的通知")
set_run_font(run, '方正小标宋简体', 'Times New Roman', Pt(22))
set_paragraph_format(p, indent=False, alignment=WD_ALIGN_PARAGRAPH.CENTER)

# 一级标题 — 黑体 3号，不加粗
p = doc.add_paragraph()
run = p.add_run("一、总体要求")
set_run_font(run, '黑体', 'Times New Roman', Pt(16))
set_paragraph_format(p)

# 二级标题 — 楷体_GB2312 3号，不加粗
p = doc.add_paragraph()
run = p.add_run("（一）指导思想")
set_run_font(run, '楷体_GB2312', 'Times New Roman', Pt(16))
set_paragraph_format(p)

# 正文 — 仿宋_GB2312 3号
p = doc.add_paragraph()
run = p.add_run("正文内容...")
set_run_font(run, '仿宋_GB2312', 'Times New Roman', Pt(16))
set_paragraph_format(p)

# 三级标题（加粗前缀 + 正文同段，不另起一行）
p = doc.add_paragraph()
run_prefix = p.add_run("1. ")
set_run_font(run_prefix, '仿宋_GB2312', 'Times New Roman', Pt(16), bold=True)
run_body = p.add_run("具体措施内容...")
set_run_font(run_body, '仿宋_GB2312', 'Times New Roman', Pt(16))
set_paragraph_format(p)
```

### 添加页码

```python
from docx.oxml import OxmlElement
from docx.oxml.ns import qn

def add_page_number(doc):
    """添加公文标准页码：- X -，4号宋体"""
    section = doc.sections[0]
    footer = section.footer
    footer.is_linked_to_previous = False

    p = footer.paragraphs[0]
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER

    # "- "
    run1 = p.add_run("- ")
    run1.font.name = "Times New Roman"
    run1.font.size = Pt(14)  # 四号

    # PAGE 域代码
    fld_begin = OxmlElement('w:fldChar')
    fld_begin.set(qn('w:fldCharType'), 'begin')
    run2 = p.add_run()
    run2._r.append(fld_begin)

    instr = OxmlElement('w:instrText')
    instr.set(qn('xml:space'), 'preserve')
    instr.text = " PAGE "
    run3 = p.add_run()
    run3._r.append(instr)

    fld_end = OxmlElement('w:fldChar')
    fld_end.set(qn('w:fldCharType'), 'end')
    run4 = p.add_run()
    run4._r.append(fld_end)

    # " -"
    run5 = p.add_run(" -")
    run5.font.name = "Times New Roman"
    run5.font.size = Pt(14)
```

### 发文机关署名与日期（右空四字）

```python
def add_signature(doc, org_name, date_str):
    """添加发文机关署名和日期，右空四字"""
    for text in [org_name, date_str]:
        p = doc.add_paragraph()
        run = p.add_run(text)
        set_run_font(run, '仿宋_GB2312', 'Times New Roman', Pt(16))
        fmt = p.paragraph_format
        fmt.alignment = WD_ALIGN_PARAGRAPH.RIGHT
        fmt.right_indent = Pt(64)  # 右空四字 ≈ 4 × 16pt
        fmt.line_spacing = Pt(28)
        fmt.line_spacing_rule = WD_LINE_SPACING.EXACTLY
        fmt.space_before = Pt(0)
        fmt.space_after = Pt(0)
        fmt.first_line_indent = Pt(0)

# 使用
add_signature(doc, "XXX办公室", "2026年3月12日")
```

---

## 九、常见公文类型模板

### 通知类

```markdown
# 关于XXX的通知

各有关单位：

正文内容...

## 一、总体要求

### （一）指导思想

正文段落...

### （二）基本原则

正文段落...

## 二、主要任务

### （一）任务一

**1. **具体措施描述...

## 三、保障措施

正文段落...

附件：1. XXX实施方案
      2. XXX工作清单

                          XXX机关
                          2026年3月12日
```

### 请示类

```markdown
# 关于XXX的请示

上级机关名称：

正文内容（说明请示原因、事项和请求）...

## 一、请示事项

具体说明...

## 二、请示理由

详细阐述...

妥否，请批示。

                          XXX机关
                          2026年3月12日

（联系人：XXX，电话：XXXX-XXXXXXXX）
```

### 报告类

```markdown
# 关于XXX工作情况的报告

上级机关名称：

根据XXX要求，现将有关情况报告如下：

## 一、基本情况

正文段落...

## 二、主要做法

### （一）做法一

正文段落...

## 三、存在问题

正文段落...

## 四、下一步计划

正文段落...

                          XXX机关
                          2026年3月12日
```

### 函件类

```markdown
# 关于XXX事项的函

XXX单位：

正文内容（说明来函背景、商洽事项或答复意见）...

盼复为荷。（或：特此函复。）

                          XXX机关
                          2026年3月12日
```

### 批复类

```markdown
# 关于XXX的批复

XXX单位：

你单位《关于XXX的请示》（X〔2026〕X号）收悉。经研究，现批复如下：

## 一、同意XXXX

正文段落...

## 二、有关要求

正文段落...

此复。

                          XXX机关
                          2026年3月12日
```

---

## 十、格式检查清单

在生成公文文档后，应逐项检查以下内容：

### ✅ 字体检查

- [ ] 标题：方正小标宋简体 2号，居中，不加粗
- [ ] 一级标题：黑体 3号，不加粗
- [ ] 二级标题：楷体_GB2312 3号，不加粗
- [ ] 三级标题：仿宋_GB2312 3号，加粗
- [ ] 正文：仿宋_GB2312 3号
- [ ] 数字/英文：Times New Roman 与中文同号

### ✅ 段落检查

- [ ] 行间距：固定值 28 磅
- [ ] 首行缩进：2 字符（32 磅）
- [ ] 段前段后间距：均为 0
- [ ] 对齐方式：正文两端对齐，标题居中
- [ ] 孤行控制：关闭

### ✅ 页面检查

- [ ] 纸张：A4（210mm × 297mm）
- [ ] 上边距 37mm / 下边距 35mm
- [ ] 左边距 28mm / 右边距 26mm
- [ ] 页码格式：`- 1 -`，4号宋体

### ✅ 内容检查

- [ ] 标题层级编号正确（一、→（一）→ 1. →（1）→①）
- [ ] 全角标点无遗漏（逗号、句号、冒号等）
- [ ] 引号使用中文引号 `""`
- [ ] 括号使用中文全角括号 `（）`
- [ ] 日期格式正确（2026年3月12日）
- [ ] 发文机关署名和日期右空四字

### ✅ 结构检查

- [ ] 三级标题不另起一行
- [ ] 主送机关顶格
- [ ] 附件说明格式正确
- [ ] 如有抄送，位于版记区域
