---
name: pptx
description: "在任何涉及 .pptx 文件的任务中使用本技能——无论是作为输入、输出或两者兼有。包括：创建幻灯片、路演文稿或演示文稿；读取、解析或从任何 .pptx 文件中提取文字（即使提取的内容将用于其他地方，如邮件或摘要）；编辑、修改或更新现有演示文稿；合并或拆分幻灯片文件；处理模板、布局、演讲者备注或批注。每当用户提到\"deck\"、\"slide\"、\"presentation\"或引用 .pptx 文件名时触发，无论他们之后打算如何处理内容。如果需要打开、创建或操作 .pptx 文件，请使用本技能。"
license: 专有。完整条款见 LICENSE.txt
---

# PPTX 技能

## 快速参考

| 任务 | 指南 |
|------|------|
| 读取/分析内容 | `python -m markitdown presentation.pptx` |
| 编辑或从模板创建 | 阅读 [editing.md](editing.md) |
| 从零创建 | 阅读 [pptxgenjs.md](pptxgenjs.md) |

---

## 读取内容

```bash
# 文字提取
python -m markitdown presentation.pptx

# 视觉概览
python scripts/thumbnail.py presentation.pptx

# 原始 XML
python scripts/office/unpack.py presentation.pptx unpacked/
```

---

## 编辑工作流

**详细内容请阅读 [editing.md](editing.md)。**

1. 使用 `thumbnail.py` 分析模板
2. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包

---

## 从零创建

**详细内容请阅读 [pptxgenjs.md](pptxgenjs.md)。**

当没有模板或参考演示文稿时使用。

---

## 设计思路

**不要创建无聊的幻灯片。** 白底黑字的纯项目符号无法打动任何人。以下是每个幻灯片可参考的设计思路。

### 开始之前

- **选择大胆且与内容相关的配色方案**：配色应让你感觉是为这个特定主题设计的。如果换到完全不同的演示文稿仍能"正常工作"，说明你做的选择还不够具体。
- **主次分明**：一种颜色应占主导（60-70% 的视觉权重），配以 1-2 种辅助色和一种锐利的点缀色。永远不要让所有颜色权重相同。
- **明暗对比**：标题和结论幻灯片使用深色背景，内容页使用浅色（"三明治"结构）。或者全部使用深色以营造高级感。
- **坚持视觉主题**：选择一个独特的元素并重复使用——圆角图片框、彩色圆圈内的图标、粗单侧边框。让它在每张幻灯片中贯穿始终。

### 配色方案

选择与主题匹配的颜色——不要默认使用通用蓝色。以下配色方案供参考：

| 主题 | 主色 | 辅助色 | 点缀色 |
|------|------|--------|--------|
| **午夜行政风** | `1E2761`（深蓝） | `CADCFC`（冰蓝） | `FFFFFF`（白） |
| **森林苔藓** | `2C5F2D（森林绿）` | `97BC62`（苔藓绿） | `F5F5F5`（奶油色） |
| **珊瑚能量** | `F96167`（珊瑚） | `F9E795`（金色） | `2F3C7E`（深蓝） |
| **暖陶土** | `B85042`（陶土） | `E7E8D1`（沙色） | `A7BEAE`（鼠尾草） |
| **海洋渐变** | `065A82`（深蓝） | `1C7293`（青绿） | `21295C`（午夜蓝） |
| **炭灰极简** | `36454F`（炭灰） | `F2F2F2`（米白） | `212121`（黑） |
| **青绿信任** | `028090`（青绿） | `00A896`（海沫） | `02C39A`（薄荷） |
| **浆果奶油** | `6D2E46`（浆果红） | `A26769`（灰粉） | `ECE2D0`（奶油色） |
| **鼠尾草宁静** | `84B59F`（鼠尾草） | `69A297`（桉树绿） | `50808E`（石板灰） |
| **樱桃大胆** | `990011`（樱桃红） | `FCF6F5`（米白） | `2F3C7E`（深蓝） |

### 每张幻灯片

**每张幻灯片都需要一个视觉元素**——图片、图表、图标或形状。纯文字幻灯片很容易被遗忘。

**布局选项：**
- 两栏（左文字，右图示）
- 图标+文字行（彩色圆圈中的图标、粗体标题、下方描述）
- 2x2 或 2x3 网格（一侧图片，另一侧内容块网格）
- 半出血图片（整左侧或右侧）配合内容叠加

**数据显示：**
- 大号数据标注（大字 60-72pt，下方小号标签）
- 对比栏（前后对比、优缺点、并列选项）
- 时间线或流程（编号步骤、箭头）

**视觉润色：**
- 章节标题旁的小型彩色圆图标
- 关键统计或标语用斜体点缀文字

### 字体排印

**选择有趣的字体搭配**——不要默认使用 Arial。选择有特色的标题字体，搭配清晰的正文字体。

| 标题字体 | 正文字体 |
|----------|----------|
| Georgia | Calibri |
| Arial Black | Arial |
| Calibri | Calibri Light |
| Cambria | Calibri |
| Trebuchet MS | Calibri |
| Impact | Arial |
| Palatino | Garamond |
| Consolas | Calibri |

| 元素 | 字号 |
|------|------|
| 幻灯片标题 | 36-44pt 粗体 |
| 章节标题 | 20-24pt 粗体 |
| 正文 | 14-16pt |
| 说明文字 | 10-12pt 浅色 |

### 间距

- 最小边距 0.5 英寸
- 内容块之间 0.3-0.5 英寸
- 留出呼吸空间——不要塞满每一寸

### 避免（常见错误）

- **不要重复相同的布局**——在幻灯片之间变化列、卡片和标注样式
- **不要居中正文**——左对齐段落和列表；只居中标题
- **不要吝啬大小对比**——标题需要 36pt+ 才能从 14-16pt 正文中脱颖而出
- **不要默认使用蓝色**——选择反映特定主题的颜色
- **不要随机混用间距**——选择 0.3 英寸或 0.5 英寸的间距并一致使用
- **不要只美化一张幻灯片而其余保持平淡**——要么全心投入，要么全文保持简洁
- **不要创建纯文字幻灯片**——添加图片、图标、图表或视觉元素；避免仅标题+项目符号
- **不要忘记文本框内边距**——在排列线条或形状与文字边缘对齐时，设置文本框 `margin：0` 或相应偏移形状
- **不要使用低对比度元素**——图标和文字都需要与背景有强烈对比；避免浅色背景上的浅色文字或深色背景上的深色文字
- **永远不要在标题下使用装饰线**——这是 AI 生成幻灯片的标志；改用留白或背景色

---

## QA（必需）

**假设存在问题。你的工作就是找到它们。**

第一次渲染几乎从不会是完美的。将 QA 视为排查漏洞，而非确认步骤。如果第一次检查发现零问题，说明你没有认真查找。

### 内容 QA

```bash
python -m markitdown output.pptx
```

检查内容缺失、拼写错误、顺序不对。

**使用模板时，检查是否残留占位文本：**

```bash
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
```

如果 grep 有结果，在宣布成功之前修复它们。

### 视觉 QA

**⚠️ 使用子代理**——即使只有 2-3 张幻灯片也是如此。你一直盯着代码，会看到你期望的内容而非实际内容。子代理有全新的视角。

将幻灯片转换为图片（参见[转换为图片](#转换为图片)），然后使用以下提示：

```
视觉检查这些幻灯片。假设存在问题——找到它们。

查找：
- 重叠元素（文字穿过形状、线条穿过文字、堆叠元素）
- 文字溢出或在边缘/框边界处被截断
- 装饰线为单行文字定位但标题换行为两行
- 来源引用或页脚与上方内容碰撞
- 元素间距太近（< 0.3 英寸间隙）或卡片/章节几乎相接
- 间距不均匀（一处大面积空白，另一处拥挤）
- 距离幻灯片边缘边距不足（< 0.5 英寸）
- 列或类似元素未一致对齐
- 低对比度文字（如奶油色背景上的浅灰文字）
- 低对比度图标（如深色背景上的深色图标，无对比色圆圈）
- 文本框过窄导致过多换行
- 残留占位内容

对每张幻灯片，列出问题或关注点，即使是很小的。

阅读并分析这些图片：
1. /path/to/slide-01.jpg（预期：[简要描述]）
2. /path/to/slide-02.jpg（预期：[简要描述]）

报告所有发现的问题，包括小的。
```

### 验证循环

1. 生成幻灯片 → 转换为图片 → 检查
2. **列出发现的问题**（如未发现问题，请更批判性地审查）
3. 修复问题
4. **重新验证受影响的幻灯片**——一次修复往往会产生新的问题
5. 重复直到完整一轮检查未发现新问题

**在完成至少一轮修复-验证循环之前，不要宣布成功。**

---

## 转换为图片

将演示文稿转换为单个幻灯片图片以便视觉检查：

```bash
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
```

这会创建 `slide-01.jpg`、`slide-02.jpg` 等。

修复后重新渲染特定幻灯片：

```bash
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
```

---

## 依赖项

- `pip install "markitdown[pptx]"` - 文字提取
- `pip install Pillow` - 缩略图网格
- `npm install -g pptxgenjs` - 从零创建
- LibreOffice（`soffice`）- PDF 转换（通过 `scripts/office/soffice.py` 为沙箱环境自动配置）
- Poppler（`pdftoppm`）- PDF 转图片
