---
name: bilingual_official_document_format
description: Skill for creating bilingual Chinese-English official documents with specific formatting requirements (fonts, sizes, margins, line spacing, heading styles) using python-docx.
version: 1.0.0
author: Hermes Agent
license: MIT
dependencies: [python-docx]
metadata:
  hermes:
    tags: [document, formatting, bilingual, official, word, docx]
---

# 双语公文格式要求 Skill

本技能提供根据特定公文格式要求创建中英双语 Word 文档的步骤和示例代码。适用于需要严格遵循字体、字号、页边距、行距及标题层级的正式文档（如通知、制度等）。

## 格式要求摘要

| 项目 | 要求 |
|------|------|
| **中文字体** | 标题：方正小标宋简体；一级标题：黑体；二级标题：楷体；三级及以下标题：仿宋；正文：仿宋 |
| **英文字体** | 全文统一使用 Times New Roman |
| **字号** | 标题：二号（22 pt）；一级及以下标题、正文：三号（16 pt） |
| **加粗** | 所有标题加粗；正文不加粗 |
| **页边距** | 上 3.7 cm，下 3.5 cm，左 2.7 cm，右 2.7 cm |
| **行距** | 固定 28 磅（约 9.93 mm） |
| **标题层级** | 中文使用“一、”“（一）”“1.","（1）”；英文采用相应的大写罗马数字或阿拉伯数字（I, II, …；(I), (II), …；1, 2, …；(1), (2), …） |
| **语言** | 中英双语对照，中文段落上、英文段落下 |
| **其他** | 无段落首行缩进；段落间距为0（仅行距） |

## 使用步骤（Python + python-docx）

1. **安装依赖**  
   ```bash
   pip install python-docx googletrans==4.0.0-rc1  # 若需自动翻译
   ```

2. **准备中文内容**  
   将文档内容按层级组织为列表，例如：
   ```python
   paras = [
       "凭证附件管理制度（示例）",
       "一、目的",
       "为规范会计凭证附件的收集、整理、保管和使用，确保财务信息的真实、完整、可追溯，提高会计工作效率，特制定本制度。",
       "二、适用范围",
       "... （其余章节） ..."
   ]
   ```

3. **（可选）自动翻译为英文**  
   使用 `googletrans` 将每段中文翻译为英文，获得 `translations` 列表。

4. **创建文档并设置页面布局**  
   ```python
   from docx import Document
   from docx.shared import Pt, Cm
   from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING
   from docx.oxml.ns import qn
   import re

   doc = Document()
   section = doc.sections[0]
   section.top_margin = Cm(3.7)
   section.bottom_margin = Cm(3.5)
   section.left_margin = Cm(2.7)
   section.right_margin = Cm(2.7)

   def add_run_with_font(run, font_name=None, size_pt=None, bold=False, is_ascii=False):
       if font_name:
           run.font.name = font_name
           r = run._element
           r.rPr.set(qn('w:eastAsia'), font_name)
       if size_pt:
           run.font.size = Pt(size_pt)
       run.font.bold = bold
       if is_ascii:
           run.font.name = 'Times New Roman'
           r = run._element
           r.rPr.set(qn('w:ascii'), 'Times New Roman')
           r.rPr.set(qn('w:hAnsi'), 'Times New Roman')

   def add_paragraph(text, font_name=None, size_pt=None, bold=False, alignment=None, is_ascii=False):
       p = doc.add_paragraph()
       if alignment:
           p.alignment = alignment
       run = p.add_run(text)
       add_run_with_font(run, font_name=font_name, size_pt=size_pt, bold=bold, is_ascii=is_ascii)
       p.paragraph_format.line_spacing_rule = WD_LINE_SPACING.EXACTLY
       p.paragraph_format.line_spacing = Pt(28)
       return p
   ```

5. **添加标题和正文（中英双语）**  
   ```python
   # 标题（第一段）
   title_cn = paras[0]
   title_en = translations[0]  # 若无翻译则可手动填写
   add_paragraph(title_cn, font_name='方正小标宋简体', size_pt=22, bold=True, alignment=WD_ALIGN_PARAGRAPH.CENTER)
   add_paragraph(title_en, font_name='Times New Roman', size_pt=22, bold=True, alignment=WD_ALIGN_PARAGRAPH.CENTER, is_ascii=True)
   doc.add_paragraph()  # 空行

   # 处理其余段落
   for i in range(1, len(paras)):
       cn = paras[i]
       en = translations[i]
       # 判断是否为一级标题（如“一、”“二、”等）
       if re.match(r'^[一二三四五六七八九十]、', cn):
           add_paragraph(cn, font_name='黑体', size_pt=16, bold=True)
           add_paragraph(en, font_name='Times New Roman', size_pt=16, bold=True, is_ascii=True)
       else:
           # 正文或其他层级（这里简化处理，均视为正文）
           add_paragraph(cn, font_name='仿宋', size_pt=16, bold=False)
           add_paragraph(en, font_name='Times New Roman', size_pt=16, bold=False, is_ascii=True)
   ```

6. **保存文档**  
   ```python
   out_path = '/tmp/正式公文_双语.docx'
   doc.save(out_path)
   print(f'Document saved to {out_path}')
   ```

## 注意事项

- 若中文内容已包含二级、三级标题（如“（一）”“1.”，“（1）”），可在判断时加入相应正则，并对应设置字体（**楷体**用于二级，**仿宋**用于三级及四级）。
- 英文标题的编号可参考中文层级：  
  - 一级： I, II, III…  
  - 二级： (I), (II), (III)…  
  - 三级： 1, 2, 3…  
  - 四级： (1), (2), (3)…
- 如需更精准的翻译，建议使用专业翻译工具或人工校对。
- 本技能侧重于格式化；实际业务内容请根据具体公文填写。

## 示例输出

生成的 Word 文档将满足：
- 中英双语对照
- 标题使用指定中文字体及 Times New Roman
- 字号、加粗、页边距、行距均符合要求
- 便于直接打印或作为正式公文使用。

---

> **提示**：若需要将此技能用于其他文档类型（如报告、通知），仅需替换 `paras` 列表内容，其余格式代码保持不变。
