PKUNMUN 2026 学术标准技能
基于《2026年北京大学全国中学生模拟联合国大会学术标准手册(修订版)》提供学术指导。
核心能力
- 学术准备指导:规则解读、立场文件撰写规范、背景资料解读、资料检索方法
- 会议流程模拟:完整会议流程指导,从点名到投票表决全部环节
- 文件格式规范:立场文件、工作文件、决议草案、修正案、指令草案的格式、结构与撰写要求
- 排版规范:标题格式、编号规则、国家名排列顺序、中英文格式差异
- 针对性内容生成:根据用户需求生成符合学标规范的学术内容
⚠️⚠️⚠️ DOCX 文档生成 — 最高优先级规则 ⚠️⚠️⚠️
> 当且仅当用户请求创建/生成 Word/docx 文件时,本节具有最高优先级,必须最先阅读并严格执行。
> 致命错误模式(绝对禁止):
> - ❌ para.add_run("整段文字").bold = True → 整段加粗是错误的
> - ❌ para.add_run("整段文字").italic = True → 整段斜体是错误的
> - ❌ para.add_run("整段文字").underline = True → 整段下划线是错误的
> - ✅ 正确做法:把每一段拆成多个 Run,每个 Run 单独设置格式
格式粒度铁律
┌─────────────────────────────────────────────────────────────┐
│ 铁律一:加粗(Bold)只允许用于以下位置 │
│ ✓ 条款编号:"第一条"、"第二条"、1.、2. │
│ ✓ 标签文字:"起草国:"、"委员会:"、"附议国:" │
│ ✗ 绝对不允许对正文整段加粗 │
│ │
│ 铁律二:斜体(Italic)只允许用于以下位置 │
│ ✓ 起草国/附议国的国家名称 │
│ ✗ 序言性条款正文不用斜体 │
│ ✗ 行动条款正文绝不用斜体 │
│ ✗ 立场文件正文绝不用斜体 │
│ │
│ 铁律三:下划线(Underline)只允许用于以下位置 │
│ ✓ 序言条款开头的一个动词词(回顾、注意到、Recalling...) │
│ ✗ 绝对不允许整句下划线 │
│ │
│ 铁律四:国家名列表必须逐字拆分 Run │
│ ✓ Run1:"起草国:"[B] + Run2:"国家A"[BI] + │
│ Run3:"、"[] + Run4:"国家B"[BI] │
│ ✗ 禁止 Run1:"起草国:国家A、国家B"[BI] │
└─────────────────────────────────────────────────────────────┘
---
## 逐行代码模板(创建 docx 时直接套用)
> **以下模板可直接复制使用。每个模板都展示了正确的 Run 拆分方式。**
### 模板 A:决议草案 — 中文文件头
```python
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()
# === 文件头(逐 Run 拆分) ===
# 第一行:决议草案 + 编号
p = doc.add_paragraph()
r = p.add_run("决议草案 ")
r.bold = True
r.font.size = Pt(14)
r2 = p.add_run("1.2")
r2.bold = True
r2.font.size = Pt(14)
# 第二行:委员会名称
p2 = doc.add_paragraph()
r3 = p2.add_run("联合国大会")
r3.bold = True
r3.font.size = Pt(14)
# 第三行:议题名称
p3 = doc.add_paragraph()
r4 = p3.add_run("1947巴勒斯坦问题")
r4.bold = True
r4.font.size = Pt(14)
# === 起草国区域(每个国家名单独 Run) ===
p4 = doc.add_paragraph()
label_r = p4.add_run("起草国:")
label_r.bold = True
label_r.italic = True # 标签加粗斜体
countries = ["大不列颠及北爱尔兰联合王国", "黎巴嫩共和国", "南非联邦", "伊朗国"]
for i, country in enumerate(countries):
if i > 0:
p4.add_run("、") # 分隔符:无格式,单独 Run
c_run = p4.add_run(country) # 国家名:单独 Run
c_run.bold = True # 加粗
c_run.italic = True # 斜体
模板 B:决议草案 — 序言性条款(仅动词下划线,其余无格式)
# === 序言条款(只有开头动词下划线,其余无任何特殊格式) ===
clause_text = "回顾为审议解决巴勒斯坦问题而成立的联合国巴勒斯坦特别委员会作出的有关行动及调查结果"
p5 = doc.add_paragraph()
# Step 1: 提取开头动词(中文序言条款以动词开头)
parts = clause_text.split(None, 1) # 按空格/首词分割,最多分成两部分
verb = parts[0] # "回顾"
rest = parts[1] if len(parts) > 1 else ""
# Step 2: 动词 Run — 仅下划线,不加斜体
v_run = p5.add_run(verb)
# v_run.italic 不设置 → 不斜体 ✅
v_run.underline = True # 仅动词下划线
# Step 3: 剩余文字 Run — 无任何内联格式(正体、无下划线)
rest_run = p5.add_run(rest)
# rest_run.italic 不设置 → 不斜体 ✅
# rest_run.underline 不设置 → 无下划线 ✅
# Step 4: 结尾标点 — 同样无格式
comma_run = p5.add_run(",")
# comma_run.italic 不设置 ✅
模板 C:决议草案 — 行动性条款(仅编号加粗)
def add_operative_clause(doc, number, text, sub_clauses=None):
"""添加行动性条款 — 只有编号加粗,正文不加粗"""
p = doc.add_paragraph()
p.paragraph_format.first_line_indent = Pt(0) # 取消首行缩进
# 编号 Run — 加粗
num_run = p.add_run(number) # 如 "第一条" 或 "1."
num_run.bold = True # ✅ 仅编号加粗
# 正文 Run — 不加粗、不加斜体
text_run = p.add_run(" " + text) # 注意空格分隔
# text_run.bold = False # 默认就是 False,不需要显式设置
# text_run.italic = False # 默认就是 False
# 子项(如果有)— 全部不加粗
if sub_clauses:
for sub in sub_clauses:
sp = doc.add_paragraph()
sp.paragraph_format.left_indent = Pt(24) # 缩进
sp.paragraph_format.first_line_indent = Pt(0)
sr = sp.add_run(sub) # 子项内容
# sr.bold = 不设置 # 正体即可
return p
# 使用示例:
add_operative_clause(
doc,
"第一条",
"支持在巴勒斯坦地区成立一个统一的国家;",
None
)
add_operative_clause(
doc,
"第二条",
"申明大不列颠及北爱尔兰联合王国结束委任统治有关事宜:",
[
"(一)英国对巴勒斯坦地区委任统治的结束是开展托管理事会工作的前提;",
"(二)委任统治国应立即停止其委任统治。",
]
)
模板 D:工作文件 — 中文格式
# === 工作文件标题区 ===
doc = Document()
# 文件类型标题
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.LEFT
r = p.add_run("工作文件 ")
r.bold = True
r.font.size = Pt(12)
# 委员会
p2 = doc.add_paragraph()
r2 = p2.add_run("《联合国气候变化框架公约》第28次缔约方大会")
r2.bold = True
# 议题
p3 = doc.add_paragraph()
r3 = p3.add_run("协力促进全球低碳经济发展")
r3.bold = True
# 起草国(逐个 Run 拆分!)
p4 = doc.add_paragraph()
label = p4.add_run("起草国:")
label.bold = True
label.italic = True
sponsors = ["埃塞俄比亚联邦民主共和国", "阿尔及利亚民主人民共和国",
"德国", "俄罗斯联邦", "沙特阿拉伯王国", "印度尼西亚"]
for idx, nation in enumerate(sponsors):
if idx > 0:
p4.add_run("、") # 分隔符无格式
nr = p4.add_run(nation)
nr.bold = True
nr.italic = True
# === 工作文件正文条目(普通正文,不加任何内联格式) ===
clauses = [
"呼吁各国加强气候变化领域的国际合作与技术交流",
"支持发展中国家向绿色能源经济转型的努力",
"鼓励私营部门在可再生能源领域增加投资"
]
for clause in clauses:
cp = doc.add_paragraph()
cp.paragraph_format.first_line_indent = Pt(24) # 首行缩进2字符
cr = cp.add_run(clause)
# ❌ 不要写 cr.bold = True 或 cr.italic = True
# 正文保持正体即可
模板 E:立场文件 — 中文格式
# === 立场文件封面信息 ===
doc = Document()
# 标题
tp = doc.add_paragraph()
tr = tp.add_run("立场文件")
tr.bold = True
tr.font.size = Pt(16)
# 信息行 — 标签加粗,值不加粗
info_lines = [
("委员会:", "历史安全理事会"),
("议题:", "纳戈尔诺-卡拉巴赫局势"),
("国家:", "美利坚合众国"),
("代表:", "李相霖、张镜如"),
]
for label, value in info_lines:
ip = doc.add_paragraph()
lr = ip.add_run(label) # 标签 Run
lr.bold = True # ✅ 标签加粗
vr = ip.add_run(value) # 值 Run
# vr.bold 不设置 # ✅ 值不加粗
# vr.italic 不设置 # ✅ 值不斜体
# === 立场文件正文(完全不加内联格式) ===
body_sections = [
("一、议题归纳概括", "运用自己的语言对议题进行..."),
("二、国际社会已有措施回顾", "简要回顾国际社会..."),
("三、本国已采取行动", "着眼于本国..."),
("四、本国立场表述和建议措施", "不需要采用决议草案格式..."),
]
for section_title, section_body in body_sections:
# 小节标题 — 加粗
stp = doc.add_paragraph()
strun = stp.add_run(section_title)
strun.bold = True
# 正文 — 不加任何格式
sbp = doc.add_paragraph()
sbp.paragraph_format.first_line_indent = Pt(24)
sbrun = sbp.add_run(section_body)
# sbrun.bold / italic / underline → 全部不设置 ✅
模板 F:修正案 — 中文格式
# === 修正案文件头 ===
doc = Document()
hp = doc.add_paragraph()
hr = hp.add_run("修正案 1.2.1")
hr.bold = True
hr.font.size = Pt(14)
# 类型选择
type_p = doc.add_paragraph()
type_p.add_run("☑ 增加条款 ☐ 删除条款 ☐ 修改条款")
# === 增加条款示例 ===
add_p = doc.add_paragraph()
add_p.add_run('在"第一条"后增加:') # 普通文字
new_clause_p = doc.add_paragraph()
ncq = new_clause_p.add_run('"') # 左引号
nc1 = new_clause_p.add_run("第一条 之 一 成立专门委员会负责协调各方行动")
nc1.italic = True # 新增内容用引号+斜体
ncz = new_clause_p.add_run('";') # 右引号+标点
# === 删除条款示例 ===
del_p = doc.add_paragraph()
del_label = del_p.add_run('删除')
del_label.italic = True # 删除操作词斜体?按规范来
del_content = del_p.add_run('"')
del_text = del_p.add_run("第二条中的'相关内容'")
del_text.strike = True # 删除内容用删除线
del_end = del_p.add_run('"')
# === 修改条款示例 ===
mod_p = doc.add_paragraph()
mod_p.add_run('将"')
orig_text = mod_p.add_run("原文内容") # 原文
orig_text.strike = True # 删除线表示删除
mod_p.add_run('"修改为:"')
new_text = mod_p.add_run("新文本内容") # 新文
# new_text 无特殊格式 # 正常字体即可
mod_p.add_run('"')
格式自检清单(生成完 docx 后必须逐一核对)
生成文档后,必须打开生成的 docx 文件,逐项确认:
- [ ] 决议草案序言条款:只有第一个词有下划线,后面没有,且没有其他特殊格式 ✓
- [ ] 决议草案行动条款:只有"第一条""第二条"等编号加粗 ✓,后面的文字是正常字体 ✓
- [ ] 起草国列表:每个国家名是加粗+斜体 ✓,但顿号/逗号是普通字体 ✓
- [ ] "起草国:"标签:加粗 ✓,后面的国家名单从第二个 Run 开始 ✓
- [ ] 工作文件正文:没有任何内联格式(不加粗、不斜体、不下划线)✓
- [ ] 立场文件正文:标签加粗 ✓,值不加粗 ✓
- [ ] 如果以上任何一项不符 → 回退代码重新拆分 Run
## 工作流程
收到用户请求后,按以下步骤处理:
**【前置判断】用户是否请求创建/生成 Word/docx 文件?**
- **是** → **必须先阅读上方的「DOCX 文档生成 — 最高优先级规则」**,然后跳到第 3 步
- **否** → 从第 1 步开始
1. **识别需求类型**:判断用户请求属于哪类需求(规则咨询、文件撰写指导、流程模拟、格式规范等)
2. **加载相关参考资料**:根据需求类型读取对应的 reference 文件获取详细规范
3. **【docx 生成专用】格式规则加载(此步不可跳过)**:
- 第一步:重新阅读上方「⚠️ DOCX 文档生成 — 最高优先级规则」中的铁律
- 第二步:读取 `references/formatting-guide.md` 获取完整排版方法
- 第三步:读取 `references/document-formats.md` 确认文件结构规范
- 第四步:对照下方的「逐行代码模板」编写代码,**逐 Run 拆分**
4. **生成内容**:严格依据学标原文规范生成指导或内容
5. **标注依据**:在关键规则处标明来源页码或章节
## 参考文件索引
根据用户需求选择加载以下文件:
| 文件 | 内容 | 适用场景 |
|------|------|---------|
| `references/rules-of-procedure.md` | 常规委员会议事规则(最完整) | 会议流程咨询、规则解释、流程模拟 |
| `references/document-formats.md` | 全部文件格式规范 | 文件撰写指导、格式咨询、排版规范 |
| `references/formatting-guide.md` | Word/DOCX 排版方法与内联格式规范 | **文档创建/docx 生成类请求必须加载** |
| `references/terminology.md` | 术语与基本概念、代表权利义务 | 概念解释、入门指导 |
| `references/preparation-guide.md` | 学术准备与参会指导 | 会前准备方法、资料检索、演讲谈判技巧 |
| `references/special-committees.md` | MPC特殊规则 | 主新闻中心规则咨询 |
**加载策略**:
- 简单概念/术语类 → 直接回答,必要时查阅 `terminology.md`
- 规则流程类 → 查阅 `rules-of-procedure.md`
- 文件格式类(文字描述)→ 查阅 `document-formats.md`
- **文档创建/docx 文件生成类 → 必须同时查阅 `formatting-guide.md` 和 `document-formats.md`**
- 会前准备类 → 查阅 `preparation-guide.md`
- 特殊委员会类 → 查阅 `special-committees.md`
- 综合性需求 → 加载多个相关参考文件
## 关键注意事项
- **忠于原文**:所有规则、格式、流程描述必须与refenences一致,不得自行添加或修改规则
- **区分中英文**:明确标注适用于中文会场还是英文会场的规范
- **编号规范**:文件编号规则严格按照学标执行(代表不自行编号,由主席团决定)
- **多数计算**:简单多数 = 出席数×1/2向下取整+1;三分之二多数 = 出席数×2/3向上取整;20%数 = 出席数×20%向上取整
- **文件三分之二多数**:赞成票与反对票总数×2/3向上取整,弃权票不计入。当弃权票达简单多数时文件不通过
- **适用对象**:主要面向常规委员会代表,特殊委员会(MPC)另有专门规则
---
## 文档生成格式控制规范(完整参考)
> **本节是「⚠️ DOCX 文档生成 — 最高优先级规则」和「逐行代码模板」的补充详细说明。**
> **如果上方铁律和代码模板已足够,本节作为备查。**
### 格式应用层级总则
| 层级 | 适用范围 | 说明 |
|------|----------|------|
| **段落级格式** | 字体、字号、行距、对齐方式、首行缩进 | 对整个段落设置,如正文全部用宋体小四 |
| **词语级/Run级格式** | 加粗(B)、斜体(I)、下划线(U)、删除线 | 仅对特定词语生效,其余文字不受影响 |
| **禁止行为** | ❌ 将整段设为斜体 | ❌ 将整段设为下划线 |
### 各文件类型精确格式对照表
#### 1. 决议草案 — 序言性条款(中文)
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| 整个条款文本 | 正体(无特殊格式) | ✓ 全部正文无内联格式 |
| 条款开头的动词(回顾、注意到、强调...) | 下划线 | **仅该动词**,后续文字无下划线 |
| 条款其余内容(包括标点) | 无额外格式 | 正体,无斜体、无下划线 |
正确示例:
<u>回顾</u>为审议解决巴勒斯坦问题而成立的联合国巴勒斯坦特别委员会作出的有关行动及调查结果,
<u>注意到</u>委任统治国对委任统治放弃的意愿,
错误示例一(整句下划线):
<u>回顾为审议解决巴勒斯坦问题而成立的联合国巴勒斯坦特别委员会作出的有关行动及调查结果</u>
(❌ 整句下划线是错误的)
错误示例二(整段斜体):
<i>回顾为审议解决巴勒斯坦问题而成立的...</i>
(❌ 序言性条款不需要整段斜体)
#### 2. 决议草案 — 序言性条款(英文)
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| 整个条款文本 | 正体(无特殊格式) | ✓ 全部正文无内联格式 |
| 条款开头的动名词(Recalling, Noting...) | 下划线 | **仅该单词** |
| 其余内容(包括标点) | 无额外格式 | 正体,无斜体、无下划线 |
#### 3. 决议草案 — 行动性条款(中文)
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| 条款编号(第一条、第二条) | 加粗 | **仅编号** |
| 条款正文 | 正体(不加粗、不加斜体) | 全文正体 |
| 子项编号((一)、(二)) | 不加粗 | 正体 |
| 子项内容 | 正体 | 正体 |
正确示例:
<b>第一条</b> 支持在巴勒斯坦地区成立一个统一的国家; ← 只有"第一条"加粗
<b>第二条</b> 申明大不列颠及北爱尔兰联合王国结束委任统治有关事宜:
(一)英国对巴勒斯坦地区委任统治的结束是开展托管理事会工作的前提;(子项不加粗)
(二)委任统治国应立即停止其委任统治。
错误示例:
<b>第一条 支持在巴勒斯坦地区成立一个统一的国家</b> ← ❌ 整条加粗错误
#### 4. 决议草案 — 行动性条款(英文)
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| 条款编号(1., 2., 3.) | 加粗 | **仅编号** |
| 其余正文 | 正体 | 不加斜体 |
#### 5. 起草国与附议国区域
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| "起草国:" / "附议国:" 标签 | 加粗 | 仅标签文字 |
| "Sponsors:" / "Signatories:" 标签 | 加粗 | 仅标签文字 |
| 每个国家名称 | 加粗 + 斜体 | **仅国家名称本身** |
| 国家之间的标点符号(顿号、逗号) | 不加格式 | 保持普通样式 |
正确示例:
<b><i>埃塞俄比亚联邦民主共和国</i></b>、<b><i>阿尔及利亚民主人民共和国</i></b>、<b><i>德国</i></b>
错误示例:
<b><i>埃塞俄比亚联邦民主共和国、阿尔及利亚民主人民共和国、德国</i></b>
(❌ 连标点一起加格式的做法错误)
#### 6. 工作文件
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| 文件类型标题行(工作文件 / WORKING PAPER) | 加粗 | 整行加粗 |
| 委员会名称 | 加粗 | 整行加粗 |
| 议题名称 | 加粗 | 整行加粗 |
| 起草国标签"起草国:" / "Sponsors:" | 加粗 | 仅标签 |
| 起草国家名称 | 加粗 + 斜体 | **每个国家名称单独处理** |
| 正文条目 | 不加粗、不加斜体 | 普通正文 |
#### 7. 立场文件
| 目标元素 | 格式操作 | 范围 |
|----------|----------|------|
| 文件标题"立场文件" | 加粗 | 整标题 |
| 信息标签(委员会:/Committee:) | 加粗 | 仅标签 |
| 标签值(具体名称) | 不加粗 | 普通文字 |
| 正文标题(如有小标题) | 加粗 | 仅标题文字 |
| 正文内容 | 不加任何内联格式 | 普通正文 |
### 使用 docx 技能创建文档时的实现要求
1. **必须使用 Run 级别的格式控制**:
- 在 docx 库中,一个 Paragraph 包含多个 Run
- 每个 Run 可以独立设置 bold/italic/underline
- 必须将需要不同格式的部分拆分为不同的 Run
2. **禁止的操作**:
- ❌ `paragraph.add_run(text).bold = True` (整段加粗)
- ❌ `paragraph.add_run(text).italic = True` (整段斜体)
- ✅ `run1 = paragraph.add_run("第一条"); run1.bold = True; run2 = paragraph.add_run(" 支持方案")` (拆分 Run)
3. **国家名列表的正确写法**(以 Python-docx 为例):
```python
# 错误写法——整段加粗斜体
para.add_run("起草国:" + ", ".join(countries)).bold = True
para.runs[0].italic = True
# 正确写法——逐个 Run 处理
para.add_run("起草国:").bold = True # 标签加粗
for i, country in enumerate(countries):
if i > 0:
para.add_run("、") # 分隔符无格式
run = para.add_run(country) # 国家名
run.bold = True # 单独加粗
run.italic = True # 单独斜体
- 序言条款的下划线写法(以中文为例):
# 错误写法一——整句下划线
para.add_run(clause_text).underline = True
# 错误写法二——整段斜体 + 下划线
para.add_run(clause_text).italic = True # ❌ 不需要斜体
# 正确写法——仅动词下划线,其余无任何格式
verb = clause_text.split(" ")[0] # 提取开头动词
rest = clause_text[len(verb):] # 提取剩余内容
para.add_run(verb).underline = True # 仅动词下划线,不加斜体
para.add_run(rest) # 其余无下划线、无斜体 ✅
- 行动条款编号的加粗写法:
# 错误写法
para.add_run(f"{num} {text}").bold = True
# 正确写法
para.add_run(num).bold = True # 编号加粗
para.add_run(" " + text) # 正文不加粗