关于 thesis-defense-pptx
thesis-defense-pptx 是用于依据指定模板制作本地、可编辑论文答辩演示文稿的技能,面向需要保留学校或实验室视觉规范的用户。它强调从论文材料提取内容、复用模板原生幻灯片,并通过导出检查版面。
主要功能
- 01依据论文源材料整理答辩内容
- 02复用并填充原生模板幻灯片
- 03生成可编辑的 PPTX 文件
- 04导出图像并检查溢出与视觉问题
适用场景
- 01按学校模板制作论文答辩演示文稿
- 02将论文图表和实验结果编排成幻灯片
- 03检查成稿中的文字溢出和遗留模板内容
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zouchenzhen/ thesis-defense-pptx-skill --skill thesis-defense-pptx安装后在 Claude Code 中输入/thesis-defense-pptx确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
requirements.txtagents/openai.yamlreferences/pptx_quality_gate.mdscripts/clone_template_deck.ps1dump_pptx_content.pyexport_pptx_png.ps1extract_thesis_context.pyinspect_pptx_overflow.ps1make_contact_sheet.pypptx_template_tools.pyscan_pptx_text.py详细介绍
Thesis Defense PPTX
将此技能用于本地、可编辑的 .pptx 论文答辩演示文稿,并确保其遵循提供的大学/实验室/公司 PowerPoint 模板。
操作原则
- 平台:使用 Windows + Microsoft PowerPoint 执行基于 COM 的克隆、导出和溢出检查。在 macOS/Linux 上,仅使用 python-pptx 部分,并跳过基于 COM 的质量检查。
- 将视觉模板视为事实依据。除非用户明确要求重新设计,否则应保留其封面、配色、字体、导航、卡片样式、徽标和幻灯片比例。
- 首先阅读论文源材料:PDF、LaTeX、图片、旧版 PPT、实验脚本、表格和图注。存在源文件时,不要仅根据主题/标题生成内容。
- 放置图片前,先建立源素材清单:从最终版 TeX/PDF 中提取
\includegraphics条目和图注,然后仅使用论文引用的图或用户明确批准的图片。不要仅仅因为模板、旧版进度演示文稿或草稿图片文件夹中的图片看起来相关,就将其沿用。 - 优先复制模板中的原生幻灯片并替换内容,而不是从空白幻灯片重建。
- 保持幻灯片简洁、面向演示。将论文正文转化为答辩要点。
- 默认保留模板的字号和层级。为确保投影时清晰可读,应先缩短文本、拆分内容密集的幻灯片,或使用模板中已有的较大版式;只有当模板本身无法容纳可读内容时,才局部调整字号。
- 始终生成可编辑的
.pptx,不要只生成大纲、图片演示文稿、PDF 或 HTML。 - 最终回复前,始终执行视觉质量检查:导出幻灯片图片,检查缩略图总览和关键幻灯片的全尺寸截图,检查文本溢出和模板中的过时文字/图片,并确认 PPTX 可以打开。
推荐工作流
-
确定输入:
- 论文项目路径或完整论文文档
- 视觉模板 PPTX
- 可选的旧版答辩/报告 PPTX
- 输出目录和所需文件名
-
提取论文背景信息:
- 使用
scripts/extract_thesis_context.py汇总 PDF/TeX 文本并列出候选图。 - 需要了解细节时,直接阅读源文件:摘要、引言、方法、实验、结果、结论。
- 从
\includegraphics和图注中整理出最终论文图片的明确清单。除非用户要求制作新的视觉内容,否则将其作为 PPT 图片的许可清单。 - 收集答辩必需信息:问题、动机、建模、算法、实验设置、基线、指标、关键结果、局限性、未来工作。
- 使用
-
分析模板:
- 如果已安装 PowerPoint,将模板幻灯片导出为 PNG。
- 检查封面、目录、导航、章节页、正文/卡片、图表/图片、总结和结束页的样式。
- 记录字体、字号、红色/品牌色、卡片尺寸、线宽和间距。
-
构建原生模板骨架:
- 如果已安装 PowerPoint,使用 PowerPoint COM(
scripts/clone_template_deck.ps1)。 - 按所需顺序复制或重复使用原模板幻灯片。
- 仅在骨架有效后,使用 python-pptx 替换内容并添加图片/形状。
- 如果已安装 PowerPoint,使用 PowerPoint COM(
-
填充内容:
- 除非用户另有要求,本科答辩使用 12–16 页。
- 常见顺序:封面、目录、背景、问题定义、工作概述、系统/方法、建模、实现、实验设置、训练/结果、对比、鲁棒性/多随机种子、创新点/局限性、总结/展望、致谢。
- 优先使用最终论文中的图片,并对照源素材清单核验每张插入的图片。如果图片来自模板或旧版幻灯片且未在论文中引用,请替换或删除。
- 密集表格仅保留核心指标;将详细文字放入口头备注或省略。优先使用每页一个重点、模板中较大的占位符、指标卡片和简短项目符号,避免缩小文字或添加多列小表格。
- 调整字号前先匹配模板的排版:尽可能保留标题/正文/表格/导航的字号;应先精简内容或拆分页,而非手动缩小字体。
-
质量检查:
- 使用
scripts/export_pptx_png.ps1将最终 PPTX 导出为 PNG。 - 使用
scripts/make_contact_sheet.py创建缩略图总览。 - 运行
scripts/inspect_pptx_overflow.ps1。 - 运行
scripts/scan_pptx_text.py检查幻灯片数量和过时的模板术语。 - 手动检查缩略图总览,然后全尺寸打开有风险的幻灯片。COM 溢出检查并不足够:还要检查可见的裁切、文字越过卡片边框、内容过多导致的文字过小、过时的模板图片、图片纵横比,以及文字与卡片重叠。
- 检查过时的模板文字、占位符、错误的姓名/日期、错误的导航标签、红色活动导航项上的白色文字,以及从模板或旧版进度汇报幻灯片中意外继承的非论文图片。
- 修复问题并重复检查,直至导出的幻灯片整洁无误。
- 使用
-
最终回复:
- 提供完整输出路径、幻灯片总数、主要修改、已执行的验证,以及任何尚未解决、需要人工确认的事项。
脚本用法
提取论文背景信息:
python scripts/extract_thesis_context.py --input "D:\path\to\thesis" --output "D:\path\to\thesis_context.md"
将模板幻灯片克隆到原生骨架中:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/clone_template_deck.ps1 `
-Template "D:\path\template.pptx" `
-Output "D:\path\output.pptx" `
-SlideSequence "1,2,3,4,4,6,7,8,9,10,11,12,13,14,15"
此示例中,第 4 页被刻意重复用作小节页,第 5 页则被跳过。
导出最终幻灯片:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/export_pptx_png.ps1 `
-Pptx "D:\path\output.pptx" `
-OutDir "D:\path\visual_check" `
-Width 1600 -Height 900
检查可能的溢出:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/inspect_pptx_overflow.ps1 `
-Pptx "D:\path\output.pptx" `
-Tolerance 40 `
-OutputJson "D:\path\overflow.json"
创建缩略图总览:
python scripts/make_contact_sheet.py --input "D:\path\visual_check" --output "D:\path\contact_sheet.png"
扫描幻灯片文字和禁用术语:
python scripts/scan_pptx_text.py `
--pptx "D:\path\output.pptx" `
--bad "中期检查,项目简介,系统框图,算法设计,成果展示,总结分析,TODO,占位"
质量标准请参阅 references/pptx_quality_gate.md。
迭代提示
填充内容时,最快的失败方式就是猜字符串,而不是读取字符串。请按以下流程操作:
- 先导出。 运行
scripts/dump_pptx_content.py --pptx <skeleton> --output dump.md,列出每个形状的准确文本,以及所有表格单元格和图片名称。打开dump.md,复制你打算替换的字符串。 - 正文优先使用部分匹配。 如果正文句子可能与模板存在细微差异,例如多了空格、引号的半角/全角形式不同,或
——与—不同,请使用replace_partial_text(slide, {"keyword": "new full text"}),而不是replace_exact_text。传入min_len=20,避免与较短的导航标签发生键冲突。 - 短标签使用
replace_exact_text。 导航标签和章节标题(“项目简介”“工作总结”)较为固定;使用精确匹配更安全,因为它不会误改恰好包含相同词语的正文段落。 - 使用表格/图片辅助函数。
write_table(table, rows)会保留单元格字体、颜色和字号;replace_picture(slide, old_pic, new_path)会替换图片,同时保留位置和尺寸——这两种方式都能省去删除并重新创建形状的繁琐操作。 - 每次填充后重新检查溢出并扫描。 内容变长导致溢出是最常见的问题;先通过精简文案解决,再手动添加
\n换行,只有当模板视觉效果确实允许时才调整文本框大小。 - 编码。 这里提供的所有 Python 脚本都会将
stdout强制设为 UTF-8,PowerShell 脚本也会将控制台输出代码页强制设为 UTF-8,因此 cp936/gbk 控制台不会破坏包含 CJK 路径或 Unicode 符号(−、Δ、✓)的 JSON 输出。
脚本用法
导出所有幻灯片的形状/文本/表格/图片(请在构建替换字典之前运行):
python scripts/dump_pptx_content.py --pptx "D:\path\skeleton.pptx" --output "D:\path\dump.md"
添加 --slide 4,8,9,即可在迭代时仅处理指定幻灯片。
实现说明
- 需要 Python 3.10+ 和
requirements.txt中的程序包。 - 在安装了 Microsoft PowerPoint 的 Windows 系统上,PowerPoint COM 是复制模板幻灯片和检查实际渲染效果最可靠的方式。
python-pptx适用于编辑文本、形状、图片、表格和简单图表,但无法完美模拟 PowerPoint 的所有布局/渲染行为。scripts/pptx_template_tools.py在设置THESIS_PPTX_BRAND_RED后会使用该值(#830604、830604或131,6,4),这样新学校模板就无需修改源代码即可设置主色红色。- 如果 PowerPoint 加载项阻止 COM 自动化,必要时只禁用有问题的加载项自动加载,并报告此操作。
- 覆盖演示文稿前先创建备份。
- 迭代时切勿还原无关的用户文件。
评论
支持 Markdown