---
name: Document Formatting
slug: document-formatting
category: Quality
description: Validates Chinese litigation documents against 10 content rules, 10 text cleaning rules, 6 structural norms, and 12 post-conversion checks before Word output. Ensures court-ready formatting compliance.
github: "https://github.com/Youchu-lawhub/cn-litigation-toolkit/tree/main/skills/document-formatting"
language: Python
stars: 19
forks: 2
install: "npx degit https://github.com/Youchu-lawhub/cn-litigation-toolkit/tree/main/skills/document-formatting ~/.claude/skills/document-formatting"
installs_to: ~/.claude/skills/document-formatting
source_path: skills/document-formatting/SKILL.md
collection_size: 23
category_size: 1354
collection_url: "https://dirskills.com/collections/Youchu-lawhub/cn-litigation-toolkit"
added: 2026-08-11T07:22:24.144Z
last_synced: 2026-08-11T07:22:24.144Z
canonical_url: "https://dirskills.com/skills/document-formatting"
---

# Document Formatting

Validates Chinese litigation documents against 10 content rules, 10 text cleaning rules, 6 structural norms, and 12 post-conversion checks before Word output. Ensures court-ready formatting compliance.

**Install:**

```bash
npx degit https://github.com/Youchu-lawhub/cn-litigation-toolkit/tree/main/skills/document-formatting ~/.claude/skills/document-formatting
```

## README

# 文书排版（document-formatting）· 输出侧格式合规闸门

> 本技能是本套件**正式 Word 文件输出前的格式合规围栏**。法院提交的 5 个诉讼文书技能——主诉诉状、被诉答辩状、质证意见、代理词、程序性文书系列——在将 Markdown 草稿转换为 Word（.docx）**之前**，必须先经本技能核验内容规范、执行文本清洗与结构规范化，转换后再执行 Word 后验校验。全部通过方可交付；不通过则退回修正或自动修复。
>
> **与法律核验对称**：法律核验守"引用真实性"（输出侧闸门·内容合规），本技能守"格式合规性"（输出侧闸门·格式合规）。两道闸门并列，均为强制不可跳过。

---

## 0 | 定位与适用范围

### 适用

本技能仅适用于**法院提交的诉讼文书**，即以下 5 个技能的 Word 输出：

| 序号 | 文书技能 | 典型文书 |
|------|----------|----------|
| 1 | 主诉诉状 | 起诉状、上诉状、再审申请书、仲裁申请书、仲裁反申请书 |
| 2 | 被诉答辩状 | 答辩状、上诉答辩状、再审答辩状、仲裁答辩状、仲裁反请求答辩状 |
| 3 | 质证意见 | 质证意见书 |
| 4 | 代理词 | 代理意见、补充代理意见 |
| 5 | 程序性文书系列 | 保全申请书、调查取证申请书、管辖权异议申请书等四十余种 |

### 不适用

以下技能/场景**不经过**本闸门：

- 新法解读（纯研究报告，不提交法院）
- 法律研究报告（内部参考）
- 庭审提纲（庭前准备材料，非正式提交件）
- 证据目录（逻辑层编排，非排版对象）
- 证据装册（物理装订顺序，不走排版流程）
- 要件攻防分析（内部分析文件）
- 财产线索调查（内部尽调报告）
- 案件事实梳理（内部工作底稿）

### 闸门地位

```
起草 md 草稿 → 【法律核验闸门】→ 引用全部准确？
                  ├─ 否 → 退回修正
                  └─ 是 ↓
               【文书排版闸门】→ 格式合规？
                  ├─ 否 → 退回修正 / 自动修复
                  └─ 是 → 交付 .docx + 排版核验报告
```

两道闸门并列、顺序执行，均**强制不可跳过**。

---

## 0.5 | 两种调用模式

### 模式一：输出前自动闸门（其他技能调用，默认）

文书生成技能在转 Word 前，把 Markdown 草稿交给本技能核验：

```
md 草稿 → 【文书排版闸门】→ 10 项硬规则 + 清洗 + 结构规范 + 转换 + 后验
   ├─ 全部通过 → 交付 .docx + 排版核验报告
   └─ 不通过   → 退回修正（硬规则）/ 自动修复（后验偏差）→ 重新核验 → 直至放行
```

闸门为**强制、不可跳过**。文书生成技能不得绕过本闸门直接输出 .docx。

### 模式二：独立排版核验（用户直接调用）

用户粘贴 Markdown 文本或给出文件路径，本技能执行完整核验流程并输出排版核验报告。用户可选择是否继续执行 Word 转换。

---

## 1 | 闸门工作流（6 步）

```
Markdown 草稿输入
    ↓
Step 1：内容规范检查（10 项硬规则，R1-R10）
    ↓ 不通过 → 退回修正（逐条列出违规项与修正建议）
Step 2：文本清洗（10 项清洗规则，C1-C10）
    ↓ 自动执行，不需人工干预
Step 3：结构规范化（6 项规范，S1-S6）
    ↓ 自动执行
Step 4：调用 md2docx_legal.py 转换
    ↓
Step 5：Word 后验校验（12 项参数比对，V1-V12）
    ↓ 不通过 → 自动修复（1-2 项偏差）或退回（3+ 项失败）
Step 6：交付 .docx + 排版核验报告
```

---

## 2 | Step 1：内容规范检查（10 项硬规则，R1-R10）

本步骤对 Markdown 草稿执行 10 项硬规则检查。**任一项不通过即退回修正，不得带病进入下一步。**

| # | 规则 | 检查方法 | 违规示例 |
|---|------|---------|---------|
| R1 | 禁止"法律依据"独立章节 | 正则匹配 `^#{1,3}\s*(法律依据\|法律适用)` | `### 七、法律依据` |
| R2 | 禁止正文引用被屏蔽的书籍/作者 | 从 `format-spec.md` §9.1 读取 `blocked_authors` / `blocked_books` 清单（默认为空）进行匹配；用户按需填入 | 视用户清单而定 |
| R3 | 附件区域禁止列证据 | 检查 `## 附` 下是否含 `证据\|笔录\|合同\|截图` | `1. 行政处罚决定书；2. 谈话笔录` |
| R4 | 主体信息禁止冗余工商字段 | 检查当事人板块是否含 `企业类型\|成立日期\|注册资本\|经营范围` | `- 企业类型：有限责任公司` |
| R5 | 来源标记仅用白名单格式 | 从 `format-spec.md` §9.2 读取 `citation_tags` 白名单进行匹配，其他格式一律报错 | `[参见 X 教授 X 书第 X 章]`（未列入白名单） |
| R6 | 禁止 HTML 标签残留 | 正则匹配 `<(sup\|sub\|br\|div\|span\|p\|!--)` | `<sup>[1]</sup>` |
| R7 | 禁止 Markdown 语法残留 | 检测正文行内残留 `^#{1,6}\s\|^\*{1,2}\|^\-{3}\|^>\s`（标题行、加粗、分割线、引用块不应出现在正文段落内部） | `### 一、原告主体介绍`（作为正文行时） |
| R8 | 同一主体仅允许一个住所地 | 检测当事人板块内"住所地"/"地址"/"住址"出现次数，>1 则报错 | 法人同时写"注册地址：XX"和"办公地址：YY" |
| R9 | 自然人主体禁止写入职务信息 | 检测自然人板块内"职务"/"职位"/"岗位"/"担任"等字段 | `- 职务：总经理`（自然人被告） |
| R10 | 法人主体仅允许法定代表人附带职务 | 检测法人板块内除"法定代表人"外是否出现其他职务描述 | `- 总经理：张三`（法人原告的高管列表） |

### 硬规则检查结果输出

```
━━━ Step 1：内容规范检查 ━━━
R1  禁止"法律依据"独立章节        ✅ 通过
R2  禁止正文引用特定书籍/作者      ✅ 通过
R3  附件区域禁止列证据            ❌ 不通过 → "## 附件"下发现"1. 谈话笔录"，应删除或移至证据目录
R4  主体信息禁止冗余工商字段       ✅ 通过
R5  来源标记仅用两种格式          ✅ 通过
R6  禁止 HTML 标签残留            ✅ 通过
R7  禁止 Markdown 语法残留        ✅ 通过
R8  同一主体仅允许一个住所地       ✅ 通过
R9  自然人主体禁止写入职务信息     ✅ 通过
R10 法人主体仅允许法定代表人附带职务 ✅ 通过
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
结论：⛔ 拦截（1 项不通过），请修正后重新提交
```

全部通过后方可进入 Step 2。

---

## 3 | Step 2：文本清洗（10 项清洗规则，C1-C10）

通过硬规则检查后，自动执行以下 10 项文本清洗，无需人工干预：

| # | 清洗规则 | 操作 | 示例 |
|---|---------|------|------|
| C1 | Markdown 标题标记清除 | 移除行首 `#{1,6}\s`，保留标题文字 | `## 事实与理由` → `事实与理由` |
| C2 | 加粗标记清除 | 移除 `**...**` 和 `__...__`，保留内部文字 | `**事实与理由**` → `事实与理由` |
| C3 | 列表标记规范化 | 统一 `-` / `*` / `+` 为编号或圆点，按上下文判定 | `- 第一项` → `1. 第一项`（有序上下文） |
| C4 | HTML 上标清除 | 移除 `<sup>...</sup>` 标签，保留内容 | `<sup>[1]</sup>` → `[1]` |
| C5 | HTML 标签清除 | 移除所有残余 HTML 标签 `<...>` | `<br/>` → 换行符 |
| C6 | Markdown 引用标记清除 | 移除行首 `>\s`，保留正文 | `> 综上` → `综上` |
| C7 | 水平分割线清除 | 移除 `---` / `***` / `___` 分割线 | `---` → 删除 |
| C8 | 直双引号转中文 | `"..."` → `"…"` | `"违约"` → `"违约"` |
| C9 | 直单引号转中文 | `'...'` → `'…'` | `'善意'` → `'善意'` |
| C10 | 连续空行压缩 | 连续 3 行及以上空行压缩为 2 行 | `\n\n\n\n` → `\n\n` |

---

## 4 | Step 3：结构规范化（6 项规范，S1-S6）

清洗完成后，执行以下 6 项结构规范化：

| # | 规范 | 说明 |
|---|------|------|
| S1 | 当事人板块分隔 | 原告、被告、第三人各板块之间插入一个空行分隔，板块内部不插入多余空行 |
| S2 | 事实与理由大标题格式 | "事实与理由"作为一级大标题，不加粗，宋体四号 |
| S3 | 附件净化 | "## 附件"/"## 附"区域仅保留"附件：本起诉状副本 X 份"等非证据性内容，证据类条目在 Step 1（R3）已拦截 |
| S4 | 签名区右对齐 | 落款人行（"具状人：/答辩人：/申请人：/上诉人：/提交人：/落款人："）及紧随其后的日期行右对齐；日期支持"YYYY年 M 月 D 日"或"YYYY年  月  日"（月/日留白）两种模板 |
| S5 | 此致格式 | "此致"独占一行，首行缩进2字符 |
| S6 | 法院名称格式 | "此致"下一行法院全称，左对齐无缩进（顶格），不加书名号 |

### 4.1 落款识别规则（S4 落款细则）

签名区落款采用两条互补路径识别，均由 `md2docx_legal.py` 内置：

1. **通用落款关键词白名单**：以下 6 个关键词后紧跟中文冒号/英文冒号视为落款起始，命中即置 `in_signature_area=True` 并写入右对齐段落。
   - 具状人、答辩人、申请人、上诉人（诉状/答辩状/上诉状本体落款）
   - 提交人、落款人（证据目录、质证意见、庭前证据交换记录等辅助文书落款）
   
   正则：`^(具状人|答辩人|申请人|上诉人|提交人|落款人)[：:]`

2. **落款前瞻判定**（避免与文书开头"答辩人：/被答辩人："当事人板块冲突）：当行首命中 PARTY_KEYWORDS（原告/被告/答辩人/被答辩人/申请人/被申请人/上诉人/被上诉人）时，向下跳过空行前瞻一行——若前瞻行匹配日期行正则 `^\d{4}\s*年\s*\d{0,2}\s*月\s*\d{0,2}\s*日`，则本行为落款而非当事人板块，直接右对齐并置 `in_signature_area=True`，跳过 `process_party_block` 分支。

3. **日期行留白兼容**：签名区日期行支持完整日期与模板留白两种写法，均命中同一正则 `\d{0,2}`：
   - 完整：`2026年 7 月 15 日`
   - 留白：`2026年  月  日`（月/日字段留空供手工填写，交付前常见）
   
   两种写法均在 `in_signature_area=True` 状态下右对齐。

**违规示例**：
- ❌ 结尾"答辩人：[公司全称] / 2026年  月  日"若未命中前瞻，会被误当当事人板块处理，写出左对齐段落——V10 校验会拦截。

---

## 5 | 排版规范参数（来源：`format-spec.md`）

**参数源**：本套件所有排版参数——字体、字号、行距、边距、对齐、缩进、颜色——统一在套件根目录的 `format-spec.md` 集中定义。`md2docx_legal.py` 与 `verify_docx.py` 均以此文件为参数源。

**默认值来源**：中国最高人民法院诉讼文书样式模版 v2020（6 份 `.docx` 实测提取，5/6 一致为准）。

**用户覆写**：用户可直接编辑 `format-spec.md`，或复制为 `format-spec.<court-name>.md` 并在 `profile.md` 的 `format_spec_path` 字段指向该文件；`md2docx_legal.py` 会优先读取指向的文件，未覆写字段沿用默认值。

**核心规范速查**（详见 `format-spec.md`）：

| 元素 | 字体 | 字号 | 对齐 | 其他 |
|------|------|------|------|------|
| 文书标题 | 宋体 | 二号 (22pt, sz=44) | 居中 | 不加粗 |
| 正文段落 | 宋体 | 四号 (14pt, sz=28) | 左对齐 | 首行缩进 2 字符，行距固定 25 磅 |
| 段落标题 | 宋体 | 四号 | 左对齐 + 首行缩进 | 不加粗，冒号结尾 |
| "此致" | 宋体 | 四号 | 左对齐 + 首行缩进 | — |
| 法院名称 | 宋体 | 四号 | 左对齐（顶格） | — |
| 签名/日期 | 宋体 | 四号 | 右对齐 | 落款人白名单+日期模板兼容见 §4.1；日期支持月/日留白 |
| 附件 | 宋体 | 四号 | 左对齐 + 首行缩进 | — |

**页面设置**：A4（11906×16838 twips），上/下 1440 twips，左/右 1800 twips。

如需为特定法域/法院定制样式，请编辑或衍生 `format-spec.md`，本 SKILL 无需改动。

---

## 6 | Step 4：Markdown → Word 转换（DOCX.* 4 级降级链）

结构规范化完成后，按 **DOCX.* 能力槽**执行 4 级降级链。所有层级共用 `format-spec.md` 参数源，确保输出一致。

```
Tier 1 —— md2docx_legal.py（内置，首选）
   └── python-docx 精确控制段落样式，读取 format-spec.md
      ├── 成功 → 进入 Step 5 后验校验
      └── 失败 ↓
Tier 2 —— 外部 DOCX MCP（外置转换服务，如 docx-mcp / doc-generator）
   └── 通过 MCP 协议调用外部转换器，传入 format-spec.md 参数
      ├── 成功 → 进入 Step 5 后验校验（标注"外部 MCP 转换"）
      └── 失败 ↓
Tier 3 —— pandoc + templates/reference.docx（通用工具降级）
   └── pandoc --reference-doc=templates/reference.docx
      ├── 成功 → 进入 Step 5 后验校验（标注"pandoc 降级转换"）
      └── 失败 ↓
Tier 4 —— 纯 Markdown 兜底交付
   └── 交付清洗后的 .md，告知用户 Word 转换失败与恢复步骤
```

**首选命令**：

```bash
python3 scripts/md2docx_legal.py --spec format-spec.md input.md output.docx
```

脚本内置 `clean_text()` 覆盖 C1-C10 清洗 + `verify_docx()` 覆盖 V1-V12 后验，转换完成后自动执行校验。

**为什么要 4 级降级**：本套件跨平台运行（Agent 运行时 / Claude Code / Cursor / Gemini CLI / OpenCode），不同环境的 Python / pandoc / MCP 可用性差异极大。4 级降级保证在最恶劣的环境下仍能交付。

---

## 7 | Step 5：Word 后验校验（12 项参数比对，V1-V12）

转换完成后，`md2docx_legal.py` 内置的 `verify_docx()` 自动执行 12 项参数比对；亦可独立调用 `scripts/verify_docx.py`：

```bash
python3 scripts/verify_docx.py --spec format-spec.md output.docx
```

参数（如 sz=28、line=500、firstLine=560）均从 `format-spec.md` 读取，用户覆写后校验自动跟随。

| # | 校验项 | 期望值（默认，可通过 format-spec.md 覆写） |
|---|--------|--------|
| V1 | 页面尺寸 | A4 (11906×16838 twips) |
| V2 | 页边距 | 上/下 1440, 左/右 1800 twips |
| V3 | 标题字体+字号 | 宋体, sz=44 (二号) |
| V4 | 标题对齐 | 居中 (center) |
| V5 | 正文字体+字号 | 宋体, sz=28 (四号) |
| V6 | 正文行距 | 固定值 25 磅 (line=500, lineRule=exact) |
| V7 | 正文首行缩进 | 560 twips (2 字符) |
| V8 | 当事人间空段落 | 每个当事人板块前有空段落 |
| V9 | 事实与理由标题加粗 | 节标题(一、二、…)加粗 |
| V10 | 签名区右对齐 | jc=right |
| V11 | 无 Markdown 残留 | 全文无 ###/**/\<sup\> 等 |
| V12 | 无直引号 | 全文无 " / ' |

### 后验校验结果输出

```
━━━ Step 5：Word 后验校验 ━━━
V1  页面尺寸            ✅ A4
V2  页边距              ✅ 标准
V3  标题字体+字号       ✅ 宋体 sz=44
V4  标题对齐            ✅ center
V5  正文字体+字号       ✅ 宋体 sz=28
V6  正文行距            ✅ 固定值 25 磅
V7  正文首行缩进        ✅ 560 twips
V8  当事人间空段落       ✅ 分隔正确
V9  事实与理由标题加粗   ✅ b=true
V10 签名区右对齐        ✅ jc=right
V11 无 Markdown 残留    ✅ 无残留
V12 无直引号            ✅ 无直引号
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
结论：✅ 全部通过（12/12）
```

---

## 8 | 降级与错误恢复

### 8.1 转换失败降级（DOCX.* 4 级）

见 §6 中的 4 级降级链。任一层失败自动降级到下一层，直到 Tier 4 交付纯 Markdown 兜底。每次降级须在最终交付报告中标注实际使用的转换器。

### 8.2 后验校验失败处理

阈值来自 `format-spec.md` §9.3 的 `verify_thresholds` 字段（默认 `auto_fix_max: 2` / `reject_min: 3`）：

| 失败项数 | 处理策略 |
|----------|----------|
| 0 项 | 直接交付 |
| 1 ≤ 项 ≤ `auto_fix_max` | 自动修复：针对偏差项调用 python-docx 定向修正 → 重新校验 → 通过则交付 |
| 项 ≥ `reject_min` | 退回人工检查：输出差异报告（逐项列出期望值 vs 实际值），不自动修复 |

### 8.3 自动修复范围

自动修复仅覆盖以下可精确定向修正的偏差：

- 字体名/字号偏差（V3-V5）：直接写入正确的 `run.font.name` / `run.font.size`
- 行距偏差（V6）：直接写入 `paragraph_format.line_spacing`
- 缩进偏差（V7）：直接写入 `paragraph_format.first_line_indent`
- 页边距偏差（V1-V2）：直接写入 `section.*_margin`

签名对齐（V10）和 Markdown 残留（V11）涉及内容结构，不自动修复，失败即退回。

---

## 9 | 与其他技能的关系

### 9.1 与法律核验：并列闸门

```
md 草稿 → 【法律核验闸门】→ 引用真实性 ✅
              ↓
         【文书排版闸门】→ 格式合规性 ✅
              ↓
         交付 .docx
```

- 法律核验**先过**（守输入侧——引用是否真实、现行有效）
- 排版闸门**后过**（守输出侧——格式是否符合法院提交标准）
- 两道闸门独立运行，互不替代

### 9.2 与文书生成技能：强制调用

以下 5 个技能在转 Word 前**必须**调用本闸门：

| 技能 | 调用时机 |
|------|----------|
| 主诉诉状 | 起诉状/上诉状/再审申请书/仲裁申请书 md 完成后、交付 .docx 前 |
| 被诉答辩状 | 答辩状 md 完成后、交付 .docx 前 |
| 质证意见 | 质证意见书 md 完成后、交付 .docx 前 |
| 代理词 | 代理意见/补充代理意见 md 完成后、交付 .docx 前 |
| 程序性文书系列 | 各类程序性文书 md 完成后、交付 .docx 前 |

文书生成技能不得绕过本闸门直接输出 .docx，也不得在闸门未通过时带病交付。

### 9.3 与 md2docx_legal.py：转换执行器

本闸门在 Step 4（Tier 1）调用 `scripts/md2docx_legal.py` 执行 Markdown → Word 转换。脚本基于 python-docx 实现，运行时读取 `format-spec.md` 精确设置段落样式，且内置 `verify_docx()` 函数自动完成后验。

### 9.4 与 verify_docx.py：独立后验校验器

`scripts/verify_docx.py` 为独立命令行工具，可对任何已生成的 .docx 执行 12 项后验校验。既可被本闸门 Step 5 调用，也可由用户手动执行。校验期望值同样从 `format-spec.md` 读取，输出 JSON 格式校验报告，退出码：0=全通过, 1=有警告, 2=有错误。

### 9.5 与 format-spec.md：参数单点源

`format-spec.md` 是本套件排版规范的**唯一权威源**。SKILL（本文件）定义**方法学**与**流程**，`format-spec.md` 定义**参数**，`md2docx_legal.py` / `verify_docx.py` 是**执行器**。三层解耦：改参数不改 SKILL 与脚本，改流程不改参数与脚本，换执行器不改流程与参数。

---

## 10 | 排版核验报告模板

Step 6 交付时附带的排版核验报告格式如下：

```
╔══════════════════════════════════════════╗
║         排版核验报告                      ║
╠══════════════════════════════════════════╣
║ 文书类型：民事起诉状                       ║
║ 生成技能：plaintiff-complaint v1.2.0                  ║
║ 核验时间：2026-07-15 14:32:08             ║
╠══════════════════════════════════════════╣
║ Step 1 内容规范检查   10/10 通过    ✅     ║
║ Step 2 文本清洗       10/10 执行    ✅     ║
║ Step 3 结构规范化      6/6  执行    ✅     ║
║ Step 4 转换           md2docx_legal ✅     ║
║ Step 5 后验校验       12/12 通过    ✅     ║
╠══════════════════════════════════════════╣
║ 闸门结论：✅ 放行                          ║
║ 交付文件：民事起诉状.docx                  ║
╚══════════════════════════════════════════╝
```

如有退回/修复项，报告中逐项列出：

```
━━━ 退回/修复记录 ━━━
Step 1 R3：附件区域发现证据列表 → 已退回，删除后重新提交
Step 5 V3：正文字体偏差（实际：Arial，期望：宋体）→ 已自动修复
━━━━━━━━━━━━━━━━━━━━
```
