hermes 初始配置
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
---
|
||||
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` 列表内容,其余格式代码保持不变。
|
||||
Reference in New Issue
Block a user