--- name: pptx description: "任何时候涉及.pptx文件时使用此技能——作为输入、输出或两者皆有。这包括:创建幻灯片、演示文稿或演示;从任何.pptx文件读取、解析或提取文本(即使提取的内容将在其他地方使用,如在电子邮件或摘要中);编辑、修改或更新现有演示文稿;合并或拆分幻灯片文件;处理模板、布局、演讲者备注或批注。每当用户提及\"deck\"、\"slides\"、\"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视为bug搜寻,而不是确认步骤。如果你在第一次检查中发现零问题,那你看得不够仔细。 ### 内容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张幻灯片。你一直盯着代码,会看到你期望的,而不是实际存在的。子代理有新鲜的眼光。 将幻灯片转换为图像(见[转换为图像](#converting-to-images)),然后使用此提示: ``` 视觉检查这些幻灯片。假设有问题——找到它们。 查找: - 重叠元素(文本穿过形状、线条穿过单词、堆叠元素) - 文本溢出或在边缘/框边界处被切断 - 为单行文本定位的装饰线条,但标题换行为两行 - 与上方内容冲突的源引用或页脚 - 元素太近(< 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转图像