关于 beamer
用于创建、编译、审阅和润色学术 Beamer 演示文稿的工作流 Skill。它通过分阶段流程和具体的版式、内容及验证规则,支持技术报告制作。
主要功能
- 01按阶段引导幻灯片制作
- 02规定 Beamer 版式与字体规则
- 03支持 XeLaTeX 编译和检查
- 04要求进行 PDF 视觉审阅
- 05提供参考文献页和备用页指南
适用场景
- 01根据研究论文制作报告
- 02编译 Beamer 文稿并检查警告
- 03检查幻灯片信息密度和视觉溢出
- 04为不同演讲时长准备技术演示
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ noi1r/ beamer-skill --skill beamer安装后在 Claude Code 中输入/beamer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdreferences/create-workflow.mdreview-actions.mdtikz-standards.md详细介绍
Beamer 幻灯片工作流
用于学术 Beamer 演示文稿的通用技能。覆盖完整生命周期: 创建 → 编译 → 审阅 → 润色 → 验证。
0. 参考导言区
创建新幻灯片时,除非用户有自定义模板,否则默认使用此导言区。
\documentclass[aspectratio=169,10pt]{beamer}
\usetheme{Madrid}
\usecolortheme{default}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}[frame number]
\usepackage{amsmath,amssymb,amsthm,booktabs,mathtools}
\usepackage{stmaryrd} % for \llbracket, \rrbracket
\usepackage{graphicx} % for \includegraphics (extracted figures)
\usepackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning,decorations.pathreplacing}
% Semantic colors — use in BOTH text and TikZ for global consistency
\definecolor{positive}{HTML}{0173B2} % blue (correct, advantage)
\definecolor{negative}{HTML}{DE8F05} % orange (limitation, drawback)
\definecolor{emphasis}{HTML}{029E73} % green (highlight, key finding)
\definecolor{neutral}{gray}{0.55} % muted context
\definecolor{cbPurple}{HTML}{CC78BC} % additional accent
\newcommand{\pos}[1]{\textcolor{positive}{#1}}
\newcommand{\con}[1]{\textcolor{negative}{#1}}
\newcommand{\HL}[1]{\textcolor{emphasis}{#1}}
规则:
- 始终使用
10pt——11pt或12pt会导致幻灯片内容过大、过于稀疏。 - 始终使用
aspectratio=169——现代投影仪采用 16:9。 - 默认演讲者:
\author{Presenter: [name]}和\institute{Shanghai Jiao Tong University}。仅在用户另有指定时覆盖。 - 如果用户提供了自定义导言区、头文件或主题,请使用用户提供的内容。
- 按需添加领域专用宏(例如
\newcommand{\F}{\mathbb{F}})。 - 算法/代码宏包(仅在需要时添加):
- 算法:
\usepackage[ruled,lined]{algorithm2e}——设置\SetAlgoLined、\DontPrintSemicolon - 代码清单:
\usepackage{listings}——设置basicstyle=\ttfamily\small、keywordstyle=\bfseries\color{positive}、commentstyle=\color{neutral}。每张幻灯片最多放 10 行代码;使用escapeinside={(*@}{@*)}和\colorbox突出显示关键行。 - 伪代码:
\usepackage{algorithmic}——比 algorithm2e 更简单,适用于简短过程。
- 算法:
- 数据绘图(仅在需要时添加):
\usepackage{pgfplots}+\pgfplotsset{compat=1.18}——用于数据驱动的绘图(柱状图、散点图、误差线、直方图)。在数据可视化方面,比手动使用 TikZ 坐标绘图高效得多。\usepackage{subcaption}——通过\begin{subfigure}{0.48\textwidth}在同一帧中放置多个子图。
- 定理环境:Beamer 开箱即提供
theorem、lemma、corollary、definition、example、proof。这些环境的样式由主题决定。正式陈述请使用这些环境——它们会自动编号,并保持样式一致。使用\setbeamertemplate{theorems}[numbered]或[ams style]进行自定义。
1. 硬性规则(不可妥协)
- 不使用叠加 — 绝不使用
\pause、\onslide、\only、\uncover。渐进式展示请使用多张幻灯片,强调重点请使用颜色。常见替代模式:- 公式渐进展开:幻灯片 A 展示基础公式,幻灯片 B 复制该公式并添加下一项(幻灯片 A 中变灰的项保留作上下文)。复制整个 frame 并扩展。
- 列表逐步呈现:幻灯片 A 展示第 1–2 项,幻灯片 B 展示第 1–4 项(重复第 1–2 项)。对之前展示过的项使用
\textcolor{neutral}{}使其弱化。 - 图示渐进构建:幻灯片 A 展示基础结构,幻灯片 B 添加注释/边。复制
tikzpicture并追加新元素——绝不删除已有元素。
- 每张幻灯片最多 2 个彩色框 — 框太多会削弱强调效果。过渡性说明改用普通斜体。
- 先讲动机,再讲形式化内容 — 每个概念都先回答“为什么?”,再回答“是什么?”。
- 每个定义后 2 张幻灯片内给出实例演算。
- 仅使用 XeLaTeX — 绝不使用 pdflatex。
- Beamer .tex 是唯一事实来源 — TikZ 图示、内容和符号都以此为源。
- 每项任务完成后都要验证 — 编译、检查警告、打开 PDF。
- 电报式风格 — 使用关键词短语,而非完整句子。幻灯片是演讲提示,不是讲稿。例外:用于引出定义或转场的铺垫句。每个项目应不超过 2 行(约 15 个单词)——过长时拆分为子项或精简改写。
- 每张幻灯片都要有存在的价值 — 每张幻灯片至少包含一个实质性元素(公式、图示、表格、定理或算法)。只有 3 条简短项目且没有其他内容的幻灯片必须合并或充实。
- 防止框内内容溢出 —
alertblock、exampleblock和block环境会增加内部填充(可用宽度减少约 15%,标题栏和垂直填充额外占用 12–16pt 高度)。在普通幻灯片上能放下的内容,放入框内后两个方向都可能溢出。规则:- 垂直溢出(最常见、最难发现):在单个框内同时放置显示公式(
\[ \])和其下方文本,很容易超出垂直空间。框内内容限制为一个显示公式,或 2–3 条简短项目——不要两者兼有。绝不在框内激进地使用\vspace{-Xpt};这样会把底部内容拉到边框之外。 - 水平溢出:框内绝不使用
\qquad;使用\quad或,。如果显示公式在普通幻灯片上的宽度超过\textwidth的约 70%,放入框内之前先重新排版。 - Beamer 会屏蔽 block 内的溢出警告 — 编译时没有警告并不意味着视觉上没有溢出。务必在 PDF 中逐一目视检查每个框。
- 垂直溢出(最常见、最难发现):在单个框内同时放置显示公式(
- 参考文献幻灯片 — 倒数第二张幻灯片(感谢页之前)必须是列出关键引用作品的参考文献幻灯片。使用
\begin{thebibliography}{9}和\small。纳入主要论文及 3–5 篇最相关的参考文献。 - 颜色与对比度标准 — 文本与背景的对比度至少为 4.5:1(WCAG AA)。二元对比绝不使用红色+绿色(约 8% 的男性存在色盲)。优先使用蓝色+橙色。导言区定义的语义颜色命令:
\pos{}= 正面/正确(蓝色),\con{}= 负面/局限(橙色),\HL{}= 强调/关键发现(绿色),\textcolor{neutral}{}= 弱化显示。这些颜色对色盲友好。总配色限制为 3–5 种。 - 字号层级 — 幻灯片标题:20–24pt(beamer 默认值);关键发现/定理:使用普通字号并加粗;辅助文本:普通字号;标签/说明文字:至少
\small。面向用户的内容绝不使用\tiny。 - 备用幻灯片 — 感谢页之后,加入 3–5 张用于回答预期问题的备用幻灯片。在备用部分之前使用
\appendix。使用\begin{frame}{Backup Slides}\end{frame}分隔主内容与备用内容。备用幻灯片不应计入时间分配。应包含的内容(根据阶段 0 的材料分析得出):- 主定理的完整证明(如果主内容中只展示了证明概要)
- 参数选择/安全性分析细节(针对密码学/协议论文)
- 包含更多基线方法的扩展对比表
- 实验设置细节(硬件、超参数、数据集)
- 假定听众已知的先决定义(以备有人提问)
- 分栏布局 — 并排展示内容时使用
\begin{columns}[T]+\column{W\textwidth}。规则:- 对比/并行内容:两栏各占
0.48\textwidth(留出 0.04 的间距)。 - 图示 + 文本:图示栏占
0.45-0.55,文本栏占0.40-0.50,间距为0.05。 - 最多三栏:每栏
≤ 0.30\textwidth,仅用于简短内容(图标、统计数据、一句话)。 - 绝不在分栏中嵌套分栏。
- 除非有意垂直居中,否则始终使用
[T](顶部对齐)。 - 分栏内容遵循与普通幻灯片相同的密度限制。
- 对比/并行内容:两栏各占
2. 操作
解析 $ARGUMENTS,确定要运行的操作。如果未指定操作,请询问。
2.1 compile [file]
运行 3 遍 XeLaTeX + bibtex,以解析所有引用。
# Adapt TEXINPUTS/BIBINPUTS to your project's preamble/bib locations
xelatex -interaction=nonstopmode FILE.tex
bibtex FILE
xelatex -interaction=nonstopmode FILE.tex
xelatex -interaction=nonstopmode FILE.tex
编译后检查:
- 在日志中搜索
Overfull \\hbox警告(统计数量和位置) - 搜索
Undefined control sequence或undefined citations - 搜索
Label(s) may have changed - 打开 PDF 进行视觉检查
- 报告:成功/失败、overfull 数量、未定义项、页数
2.2 create [topic]
协作式、迭代式地创建讲座。严格遵守阶段门槛——绝不提前进入后续阶段。
阶段 0:材料分析(如果提供了论文/材料)
先阅读,后提问。 必须先理解内容,再提出有意义的问题。
- 接受
.pdf、.md或混合的论文/材料输入。 - 如果提供了 Markdown,将其作为理解章节层级、公式、定理陈述、图注、参考文献和符号的主要语义来源。
- 如果同时提供 Markdown 和 PDF,使用 Markdown 理解结构和文本,使用 PDF 查看图表、页面上下文、视觉参考并进行提取。
- 如果只提供 PDF,且解析时结构丢失,请询问用户是否可以提供 Markdown 转换版本。不要要求或运行特定的 PDF 转 Markdown 转换器。
- 彻底阅读整篇论文/全部材料
- 提取:核心贡献、关键技术、主要定理、与先前工作的比较
- 整理符号约定
- 确定论文的逻辑结构,以及适合做成幻灯片的部分
- 在内部记录:先备知识、自然的章节边界,以及可略过或扩展的内容
此时不要呈现结果或提问——直接进入阶段 1。
阶段 1:需求访谈(必须执行——参考阶段 0)
通过 AskUserQuestion 开展以内容为导向的访谈。以下问题是最低要求——你还必须根据阶段 0 的结果添加针对论文的问题。
最低要求的问题(始终询问):
- 时长:演讲有多长?
- 听众水平:听众是谁?
可选问题(如果演讲属于期刊俱乐部、答辩,或用户似乎希望获得演练支持,则询问):
3. 演讲者备注:你希望在演示者视图中显示演讲者备注吗?如果希望,每个 frame 都会添加 \note{} 块,其中包含简短的演讲要点(核心信息、过渡提示、预期问题)。要在双屏显示时启用此功能,需在导言区添加 \setbeameroption{show notes on second screen=right}。
以内容为导向的问题(根据阶段 0 的结果拟定,按需提问):
- 先备知识:列出阶段 0 中确定的具体技术依赖,并询问听众了解哪些。例如:“这篇论文基于 sumcheck 和多项式承诺。需要我介绍一下这些内容吗?”——而不是问“熟悉基础代数吗?”。
- 内容范围:将论文的实际组成部分列为选项,询问哪些需要重点讲解、略过或简要提及。
- 深度与广度:如果论文既有直观概述,也有详细构造,询问用户更倾向于哪种讲解方式。
- 论文特定决策:例如,如果论文比较了两种构造,询问是要同等介绍两者,还是侧重其中一种。
指导原则:
- 选项应来自论文的实际内容,而不是通用模板。
- 总计提问 3-6 个;不要问得过多或过少。
- 如果上下文中已有明显信息(例如用户说了“讨论班”),则直接推断,不要再问。
幻灯片数量估算:每 1.5-2 分钟约安排 1 张幻灯片。
时间分配表:
| 时长 | 幻灯片总数 | 引言/动机 | 方法/背景 | 核心内容 | 总结/结论 |
|---|---|---|---|---|---|
| 5 分钟(闪电演讲) | 5-7 | 1-2 | 0-1 | 2-3 | 1 |
| 10 分钟(短讲) | 8-12 | 2 | 1-2 | 4-5 | 1 |
| 15 分钟(会议报告) | 10-15 | 2-3 | 2-3 | 5-7 | 1-2 |
| 20 分钟(研讨会) | 13-18 | 3 | 2-3 | 6-9 | 2 |
| 45 分钟(主题演讲) | 22-30 | 4-5 | 5-7 | 10-14 | 2-3 |
| 90 分钟(讲座) | 45-60 | 5-6 | 8-12 | 25-35 | 3-4 |
不同演讲类型的提示:
| 演讲类型 | 重点 | 常见错误 |
|---|---|---|
| 闪电演讲(5 分钟) | 一个核心信息,不回顾背景 | 把完整演讲塞进 5 分钟 |
| 会议报告(10-20 分钟) | 1-2 个关键结果,快速概述方法 | 技术细节过多,缺乏全局视角 |
| 研讨会(45 分钟) | 可以深入讲解,但需要注意视觉节奏 | 整场都是公式,没有示例 |
| 答辩/论文报告 | 展示扎实掌握,系统全面地讲解 | 略过动机,匆忙讲结果 |
| 期刊俱乐部 | 批判性分析,促进讨论 | 只做总结,不作评价 |
| 项目申请陈述 | 重要性 → 可行性 → 影响 | 技术性太强,没有充分说明“为何重要” |
时间分配原则:将 40-50% 的时间用于核心内容(结果/技术)。连续讲解理论的幻灯片最多安排 3-4 张,然后应加入一个演算示例或视觉休息。
阶段 2:结构规划(关卡——起草前须经用户批准)
提供一份详细提纲。对每个部分列出:
- 部分标题
- 分配的幻灯片数量
- 每张幻灯片的关键内容要点(每项 1-2 行)
- 计划使用的 TikZ 图示或图片(简要说明)
- 需要引入的符号
**向用户展示规划。**询问:结构是否合适?是否需要扩展、缩减或删去任何内容?
用户批准前,不要开始起草。
阶段 3:起草(迭代、分批)
此阶段最为关键。严格遵守所有子规则。
3a. 写作风格
- 电报式关键词,而非完整句子。例外:每张幻灯片可用一句引入句设定背景。
- 公式与分析紧密交错——定义一个量后,立即在同一张幻灯片上说明其成本、性质或影响。绝不将公式单独放在一张幻灯片上,再把分析放到下一张。
- 不使用对话式含糊表达——绝不写“等等,不完全是”“其实,让我澄清一下”或类似表达。如果某个观点需要限定,从一开始就准确说明。
- 首次引入关键术语时使用
\textbf{};用\pos{...}表示正面属性,用\con{...}表示缺点或局限,用\HL{...}标注关键发现(在导言区定义)。
3a-2. 开场与收尾策略
开场幻灯片(选择一种策略):
- 令人意外的统计数据——用一个违背直觉的数字挑战既有认知
- 引人深思的问题——提出一个观众无法立即回答的问题
- 现实中的失败或问题——“系统 X 因为……而失败” → “我们如何防止这种情况?”
- 视觉演示——先展示现象,再进行解释
开场应营造悬念或好奇心,并由演讲后续内容加以解答。
收尾策略:
- 呼应开场——重提开场的问题或难题,并给出答案(环形叙事)
- 3 个关键要点——编号列出,使用电报式表达,放在一张幻灯片上。观众会记住最后看到的内容。
- 开放问题/未来方向——留给观众思考,并自然引出问答环节
- 绝不以单独的“Thank You”收尾——倒数第二张内容幻灯片应留下深刻印象。Thank You 幻灯片只是礼貌致意,不是总结。
3b. 数学幻灯片模式
每张数学内容较多的幻灯片都应采用以下一种模式:
定义幻灯片:
[Framing sentence: why this definition matters]
[Formal definition in display math]
[Key properties / immediate consequences as 2-3 bullet items]
构造/算法幻灯片:
[One-line goal statement]
[Core equation / algorithm steps]
[Complexity analysis: prover cost, verifier cost, soundness]
比较幻灯片:
[Side-by-side table: prior work vs this work]
[1-2 lines highlighting the key difference]
洞见/备注幻灯片(补充论文之外的价值):
[Observation the paper doesn't emphasize, or a comparison with related work]
[Why this matters / what it implies]
每张幻灯片都必须有明确的要点——观众应该记住的核心内容。
定理/证明幻灯片(用于正式的数学陈述):
[Framing sentence: informal statement of the result]
\begin{theorem}[Optional name]
[Formal statement in display math]
\end{theorem}
[Key implication or "why this matters" as 1-2 bullets]
- 证明放在下一张幻灯片上(绝不在一张幻灯片上塞入定理和证明)。
- 对于较长的证明:展示证明概要(仅列关键步骤),将完整证明放入备用幻灯片。
- 使用
\begin{proof}[Proof sketch]标明略述的证明。
幻灯片间的交叉引用:
- 在关键幻灯片的 frame 内使用
\label{slide:construction}添加标签。 - 在其他幻灯片中引用:
see Slide~\ref{slide:construction},或使用可点击的\hyperlink{slide:construction}{\beamerbutton{Back to Construction}}。 - 对问答环节尤其有用——可快速跳回引用的结果。
- 在备用幻灯片中,务必添加链接,返回其所依据的主幻灯片。
3c. 内容密度限制
上限(每张幻灯片):
- ≤ 7 个项目符号或条目
- ≤ 2 个展示公式(更多则拆分)
- ≤ 5 个新引入的符号
- ≤ 2 个彩色框(alertblock/exampleblock)
下限(每张幻灯片):
- 每张幻灯片都必须至少包含一个实质性元素:公式、图示、表格、定理陈述或算法
- 只有 ≤ 3 条简短纯文本项目符号的幻灯片过于稀疏——应与相邻幻灯片合并,或添加公式/图示
- 纯文本项目符号幻灯片不得超过整套幻灯片的 30%
每批次后的密度自检:
- 统计没有公式/图示/表格的幻灯片数量 → 若超过该批次的 30%,则标记
- 统计项目不超过 3 条且没有数学内容的幻灯片 → 作为合并候选
3d. 批次工作流
- 按照已获批准的结构,每批处理 5-10 张幻灯片
- 每批完成后,运行 编译(
xelatex -interaction=nonstopmode),及早发现错误——在第 5 阶段修复 10 张幻灯片批次中的 2 个问题,远比修复 40 张整套幻灯片中的 12 个问题容易 - 每批完成后进行自检:符号一致性、密度限制、先说明动机再引入形式化内容
- 仅在当前批次通过编译且自检合格后,才继续下一批
3e. 表格最佳实践
- 始终将表格居中——用
\begin{center}...\end{center}包裹每个独立表格。左对齐的表格在幻灯片上看起来会不协调。 - 不要将表格紧接在框架标题后面——Madrid 等主题使用彩色标题栏,其底边在视觉上会与
\toprule融为一体,让表格看起来像嵌在标题中。务必在标题和第一个\toprule之间插入\vspace{4pt}(或介绍性文字)。编译器对此不会发出任何警告——只能通过目视检查发现。 - 始终使用
booktabs(\toprule、\midrule、\bottomrule)——不要使用竖线(|)。 - 列对齐方式:数字右对齐(
r),文本左对齐(l),短标签居中(c)。 - 每张幻灯片最多 6–7 列、8–10 行。超出时 → 按以下分页规则拆分到多张幻灯片:
- 每张续页都重复完整的表头行(
\toprule+ 表头 +\midrule)。 - 在框架标题后添加 " (cont'd)":
\frametitle{Results (cont'd)}。 - 在逻辑行组的边界处拆分(例如,在算法系列或数据集组之间)——不要在组内拆分。
- 最后一页至少要有 3 行数据;如果不足,则与前一页合并。
- 如果某个子集呈现出不同的结果,每一页都应在表格下方添加自己的总结句。
- 每张续页都重复完整的表头行(
- 仅在最后不得已时使用
\resizebox{\textwidth}{!}{...}——优先减少列数或行数。 - 使用
\cellcolor{positive!15}或\textbf{}突出关键单元格——吸引视线关注结果。 - 对于比较表:将每行或每列中的最佳结果加粗。
- 在表格下方用
\small添加标题,或将框架标题作为隐式标题。
3f. 算法和代码展示
- 每张幻灯片上的伪代码不超过 10 行。如果更长,应拆分为“高层概述”和“关键子程序”两张幻灯片。
- 突出关键行:在 listings 中使用
escapeinside,或在 algorithm2e 中使用\colorbox。 - 在算法顶部清楚注明输入/输出。
- 命名保持一致:变量使用数学斜体(
$x$),函数使用无衬线字体或打字机字体。 - 对于代码(而非伪代码):使用
\ttfamily\small,并通过 listings 进行语法高亮。只展示相关片段——不要倾倒整个源文件。
阶段 4:图表
- Beamer 源码中的 TikZ 图表(唯一事实来源)
- 遵循 TikZ 质量标准(参见第 2.6 节)
- 需要时使用 R/Python 脚本
数据可视化指南(期刊图表 ≠ 幻灯片图表):
- 大幅简化 — 移除次要网格线和详细图例(直接在图中标注),以及辅助坐标轴。只展示支持当前幻灯片观点的数据。
- 放大所有内容 — 坐标轴标签 ≥ 18pt,线宽 2-4pt,标记大小 8-12pt。如果在距离笔记本 2-3 英尺处看不清,投影时就不合格。
- 直接标注 — 直接标注线条/柱形,而不是使用单独的图例。这样可以降低认知负担。
- 每张图传达一个信息 — 将多面板期刊图拆分到多张幻灯片中。每张幻灯片只展示一种对比。
- 突出结果 — 用醒目的饱和色突出关键数据,用柔和的灰色显示对比数据。关键发现使用
\textcolor{blue!70!black}{...},参考数据使用灰色。 - 使用色盲友好型调色板 — 优先使用蓝色(
#0173B2)+ 橙色(#DE8F05),而非红色 + 绿色。添加不同的线型(实线/虚线/点线)作为冗余编码。在 TikZ 中:\definecolor{cbBlue}{HTML}{0173B2} \definecolor{cbOrange}{HTML}{DE8F05} \definecolor{cbGreen}{HTML}{029E73} \definecolor{cbPurple}{HTML}{CC78BC} - 渐进式呈现 — 对于复杂图表,逐步构建:坐标轴 → 第一组数据 → 对比 → 标注发现。使用单独的幻灯片(不要使用
\pause)。 - 子图 — 使用
\begin{subfigure}{0.48\textwidth}(需要subcaption宏包)在同一帧中并排放置面板。每个子图都有自己的\caption{(a) ...}。当面板需要单独的标题时,优先使用此方式,而非直接并排使用\includegraphics。每张幻灯片最多放 2 个子图(4 个面板 = 拆分为 2 张幻灯片)。
使用 pgfplots 绘制数据驱动图表(优于手动编写 TikZ 数据图表):
绘制数值数据时,请始终使用 pgfplots。它可以自动处理坐标轴、图例、缩放和数据加载。
% Bar chart from inline data
\begin{tikzpicture}
\begin{axis}[
ybar, bar width=12pt,
xlabel={Method}, ylabel={Accuracy (\%)},
symbolic x coords={Baseline, Ours, Oracle},
xtick=data, ymin=0, ymax=100,
nodes near coords, every node near coord/.append style={font=\small},
width=0.85\textwidth, height=5cm
]
\addplot coordinates {(Baseline,72) (Ours,89) (Oracle,95)};
\end{axis}
\end{tikzpicture}
% Line plot from CSV file
\begin{tikzpicture}
\begin{axis}[
xlabel={Epoch}, ylabel={Loss},
legend pos=north east, grid=major,
width=0.85\textwidth, height=5cm
]
\addplot table[x=epoch, y=train_loss, col sep=comma] {data/results.csv};
\addplot table[x=epoch, y=val_loss, col sep=comma] {data/results.csv};
\legend{Train, Validation}
\end{axis}
\end{tikzpicture}
% Scatter plot with error bars
\begin{axis}[xlabel={$x$}, ylabel={$y$}]
\addplot+[only marks, error bars/.cd, y dir=both, y explicit]
coordinates {(1,2)+-(0,0.3) (2,3.5)+-(0,0.5) (3,5.1)+-(0,0.4)};
\end{axis}
- 始终显式设置
width和height,以防止内容溢出。 - 使用
\addplot table[col sep=comma]{file.csv}从文件加载数据,使 .tex 文件保持简洁。 - 用于演示时:放大刻度标签(
tick label style={font=\small}),加粗线条(thick),使用语义化颜色(color=positive)。
第 5 阶段:质量循环(强制 — 迭代进行)
完成完整初稿后,进入质量循环:
┌─→ 5a. Compile (2-pass XeLaTeX)
│ 5b. Self-Review (structure + content + visual)
│ 5c. Score (apply rubric)
│ 5d. Fix all issues found
└── If score < 90 and round < 3: loop back to 5a
If score ≥ 90 or round = 3: report to user
5a. 编译
- 使用 XeLaTeX 编译 2 次(此处不需要 bibtex — 已在第 3 阶段的批量编译中解决)
- 检查:错误、过满的 hbox、未定义的引用
- 打开 PDF 进行目视检查
5b. 自我审查 — 重新阅读 .tex 并核实:
结构:
- 幻灯片数量符合计划(容差 ±2)
- 逻辑流畅:动机 → 背景 → 技术 → 结果 → 总结
- 没有任何章节连续超过 4 张正式幻灯片而没有实例讲解或视觉分隔
- 各主要章节之间有过渡句
内容密度:
- 没有幻灯片仅包含不超过 3 个简短要点,且没有数学公式或图表
- 纯文本幻灯片不超过整套幻灯片的 30%
- 没有幻灯片超出上限(7 个要点、2 个公式、5 个符号、2 个框)
TikZ 和视觉效果:
- 标签与标签之间、标签与曲线之间均无重叠
- 没有内容超出幻灯片边界
- 彩色框内部没有内容溢出(alertblock/exampleblock/block 的有效宽度约为 85%;请在 PDF 中逐一目视核实每个框)
- TikZ 图表适合幻灯片剩余空间 — 对于混合幻灯片(文本 + 图表),请核实图表边界框高度 + 文本高度 ≤ 约 70mm。常见问题:TikZ 的
scale较大,且上方有多个公式,导致图表底部被裁切 - 所有标记点都位于曲线上 — 对于每个应位于所绘曲线上的
\fill、\node或\draw端点,请核实其 y 坐标是通过\pgfmathsetmacro使用同一个函数计算得出的,而非硬编码。请在 PDF 中目视检查圆点/标记是否落在曲线上 - 虚线参考线终止于曲线处 — 垂直/水平辅助线应恰好在与曲线相交处终止,而不是终止于任意 y 值
- 表格适合幻灯片宽度
- 所有独立表格均已居中(
\\begin{center}...\\end{center}) - 没有表格的
\toprule与标题栏在视觉上融为一体(在首个表格前添加\vspace{4pt}或文本) - TikZ 中的字号 ≥
\footnotesize - 所有图表的样式保持一致
符号说明:
- 同一符号在全文中使用一致
- 每个符号在使用前都有定义
5c. 质量评分
从 100 分开始。按以下标准扣分:
| 严重程度 | 问题 | 扣分 |
|---|---|---|
| 严重 | 编译失败 | -100 |
| 严重 | 公式溢出(幻灯片或框内部) | -20 |
| 严重 | TikZ 图表超出幻灯片边界(底部/右侧被裁切) | 每个图表 -15 |
| 严重 | 未定义的控制序列/引用 | -15 |
| 严重 | 过满的 hbox > 10pt | -10 |
| 主要 | 彩色框内内容溢出(垂直或水平,仅视觉问题) | 每个框 -10 |
| 主要 | TikZ 标记点不在曲线上(y 值硬编码而非计算得出) | 每个图表 -8 |
| 主要 | 幻灯片内容稀疏(≤3 个项目,且无公式/图表) | 每张幻灯片 -5 |
| 主要 | TikZ 标签重叠 | -5 |
| 主要 | 缺少参考文献幻灯片 | -5 |
| 主要 | 表格未居中(独立表格未使用 \begin{center}) | 每个表格 -3 |
| 主要 | 表格的 \toprule 与标题栏在视觉上融为一体(标题栏后没有留白) | 每张幻灯片 -5 |
| 主要 | 符号说明不一致 | -3 |
| 次要 | \vspace 使用过多(每张幻灯片 >3 次) | -1 |
| 次要 | 缩小字号(\footnotesize 等) | 每张幻灯片 -1 |
阈值:
- ≥ 90:可以交付。向用户报告。
- 80-89:可以接受。尽可能修复剩余的主要问题,并说明存在的不足。
- < 80:必须修复。返回循环并解决严重/主要问题。
5d. 修复 — 修复所有严重和主要问题。重新编译。如果分数提高至 ≥ 90,则退出循环。最多进行 3 轮,避免无限循环。
创建后检查清单(最终关卡)
[ ] Compiles without errors
[ ] No overfull hbox > 10pt
[ ] All citations resolve
[ ] Score ≥ 90
[ ] Every definition has motivation + worked example
[ ] Max 2 colored boxes per slide
[ ] No sparse slides (all slides have substantive content)
[ ] TikZ diagrams visually verified — no overlaps, no overflow, all marked points on curves
[ ] Tables fit within slide boundaries, are centered, and separated from title bar
[ ] No content overflow inside colored boxes (visual PDF check)
[ ] References slide present (second-to-last, before Thank You)
2.3 review [file] 或 proofread [file]
只读报告,不修改文件。
5 个检查类别:
| 类别 | 检查内容 |
|---|---|
| 语法 | 主谓一致、冠词、介词、时态一致性 |
| 拼写错误 | 拼写错误、搜索替换残留、重复词语、未替换的占位符([name]、[TODO]、[XXX]、模板残留) |
| 溢出 | 未使用 \resizebox 的长公式、每张幻灯片上的条目过多 |
| 一致性 | 引用格式(\citet/\citep)、符号、术语、方框用法、各张幻灯片之间的分母一致性 |
| 学术质量 | 非正式缩写、缺失词语、没有引用支持的论断、含义模糊的缩写(同一缩写用于不同术语) |
每个问题的报告格式:
### Issue N: [Brief description]
- **Location:** [slide title or line number]
- **Current:** "[exact text]"
- **Proposed:** "[fix]"
- **Category / Severity:** [Category] / [High|Medium|Low]
2.4 audit [file]
视觉布局审查。只读报告。
检查维度:
- 溢出: 内容超出边界、表格或公式过宽
- 字体一致性: 行内字号覆盖、字号不一致
- 方框疲劳: 每张幻灯片有 2 个以上方框、方框类型不当
- 间距: 过度使用
\vspace、结构性问题 - 布局: 缺少过渡、缺少引入性句子
间距优先的修复原则(按优先级排序):
- 减少垂直间距(结构调整)
- 合并列表
- 将行间公式改为行内公式
- 使用
\resizebox缩小图像或表格 - 最后手段: 使用
\footnotesize(绝不使用\tiny)
2.5 pedagogy [file]
整体教学审查。只读报告。
13 种模式待验证:
| # | 模式 | 警示信号 |
|---|---|---|
| 1 | 先讲动机,再讲形式化内容 | 定义缺少背景 |
| 2 | 逐步引入符号 | 单张幻灯片上出现 5 个以上新符号 |
| 3 | 定义后给出例题 | 连续出现 2 个定义,没有例题 |
| 4 | 逐步提高复杂度 | 先讲高级概念,后讲其前置知识 |
| 5 | 分步揭示(问题→解决方案) | 一次性展示完整的复杂定理 |
| 6 | 在转折点使用突出显示的幻灯片 | 主题突然跳转,没有过渡 |
| 7 | 复杂定理采用两张幻灯片的策略 | 在 1 张幻灯片上塞入复杂定理 |
| 8 | 语义化使用颜色 | 二元对比使用同一种颜色 |
| 9 | 方框层级 | 内容使用了错误的方框类型 |
| 10 | 方框疲劳 | 单张幻灯片上有 3 个以上方框 |
| 11 | 融入苏格拉底式提问 | 整套幻灯片中没有问题 |
| 12 | 复杂概念优先使用视觉呈现 | 先给出符号,再进行可视化 |
| 13 | 对比内容并列展示 | 相关定义放在连续的幻灯片中讲解 |
整套幻灯片检查项: 叙事脉络、节奏(示例前最多讲解 3-4 张理论幻灯片)、视觉节奏(每隔 5-8 张幻灯片设置章节分隔页)、符号一致性、对学生前置知识的假设。
2.6 tikz [file]
TikZ 图示审查与提取。
质量标准:
-
标签绝不能与曲线、线条、点或其他标签重叠
-
两个标签处于相近的垂直位置时,应错开摆放
-
视觉语义:实线=观测值,虚线=反事实;实心=观测值,空心=反事实
-
线宽:坐标轴=
thick,数据=thick,注释=thick(而非very thick) -
标准比例:全宽图示使用
[scale=1.1] -
点的半径:数据点使用
4pt -
任意标签与最近图形元素之间至少间隔 0.2 个单位
-
绘制点的数学准确性:对于应位于绘制曲线上的点、标记或虚线端点,绝不能硬编码 y 坐标。所有此类坐标都必须通过
\pgfmathsetmacro,使用绘制曲线时相同的函数计算得出。适用于:- 标记在单条曲线上的点(例如标注特殊值,如“ℓ=2 时的 BiPerm”)
- 终止于曲线的垂直/水平虚线
- 两条曲线的交点
- 锚定在曲线上位置的任何注释
常见错误(错误——硬编码的 y 值与曲线不匹配):
\draw[thick] plot[domain=0.8:10] (\x, {0.3*\x + 2.7/\x}); \draw[dashed] (2, 0) -- (2, 3.2); % BAD: 3.2 is not 0.3*2+2.7/2=1.95 \node at (2, 3.2) {BiPerm}; % BAD: label floats above the curve正确模式(始终根据函数计算):
\draw[thick] plot[domain=0.8:10] (\x, {0.3*\x + 2.7/\x}); \pgfmathsetmacro{\yTwo}{0.3*2 + 2.7/2} % = 1.95, exactly on curve \draw[dashed] (2, 0) -- (2, \yTwo); \fill (2, \yTwo) circle (2pt); \node[above left] at (2, \yTwo) {BiPerm};对于曲线交点,先代数求解方程组,再写入精确公式:
% Intersection of y=0.5x and y=2.5/x+0.3: % 0.5x = 2.5/x + 0.3 => x^2 - 0.6x - 5 = 0 => x = (0.6+sqrt(20.36))/2 \pgfmathsetmacro{\xint}{(0.6 + sqrt(20.36))/2} \pgfmathsetmacro{\yint}{0.5*\xint} \fill (\xint, \yint) circle (3pt); -
混合内容幻灯片上的 TikZ 图示尺寸:与文本/方程共享幻灯片的 TikZ 图示必须适合剩余的垂直空间。10pt 的 Beamer 16:9 幻灯片在标题栏下方约有 70mm 的可用高度。编写 TikZ 代码前,请估算:
- 图示上方的文本和方程:统计显示方程数量(每个约 12-15mm)、文本行数(每行约 5mm)和间距
- 剩余高度 = 70mm − 文本高度
- TikZ 边界框高度 =(最大 y 坐标 − 最小 y 坐标)× yscale × 0.3528mm/pt
- 如果图示无法适配:减小
yscale、缩小坐标范围,或将内容移至单独的幻灯片
混合内容幻灯片的安全默认值:
xscale=0.5-0.7、yscale=0.4-0.6。全页图示使用:scale=0.9-1.1。 -
短箭头上的边缘标签:在方框之间的箭头上放置
node[midway, above]标签时,标签文本可能会超出箭头端点,延伸到相邻方框边框上。预防规则:- 估算标签文本宽度与箭头长度(
right=间距)的比例。如果标签宽度超过间距的约 80%,增大间距或缩小标签字体(\scriptsize/\tiny)。 - 使用
above=4pt(或更大值),不要只写above,以便在标签与方框边框之间留出垂直间隙。 - 对于含 3 个或更多方框的流程图:总宽度 =(N × 方框宽度)+((N-1) × 间距)。必须 ≤ 14cm,适用于 16:9 的 Beamer。同步调整方框的
text width和间距。 - 如有疑问,请编译并目视检查,确保标签没有与任何方框边框重叠。
- 估算标签文本宽度与箭头长度(
提取为 SVG(用于 Web/Quarto):
xelatex -interaction=nonstopmode extract_tikz.tex
PAGES=$(pdfinfo extract_tikz.pdf | grep "Pages:" | awk '{print $2}')
for i in $(seq 1 $PAGES); do
idx=$(printf "%02d" $((i-1)))
pdf2svg extract_tikz.pdf tikz_exact_$idx.svg $i
done
TikZ 检查清单:
[ ] No label-label overlaps
[ ] No label-curve overlaps
[ ] No edge labels overlapping adjacent nodes (check label width vs. arrow length)
[ ] Diagram bounding box fits within remaining slide space (especially mixed text+diagram slides)
[ ] ALL marked points/dots/line-endpoints on curves computed via \pgfmathsetmacro from the SAME function — no hardcoded y-values
[ ] Dashed reference lines terminate exactly at the curve, not at arbitrary coordinates
[ ] Consistent dot style (solid=observed, hollow=counterfactual)
[ ] Consistent line style (solid=observed, dashed=counterfactual)
[ ] Arrow annotations: FROM label TO feature
[ ] Axes extend beyond all data points
[ ] Labels legible at presentation size
[ ] Minimum spacing between labels and graphical elements
常见 TikZ 图示模式:
将以下内容作为起点,再按需自定义。所有模式都假设已加载 arrows.meta、positioning、decorations.pathreplacing 库(默认导言区中已包含)。
流程图(水平):
\begin{tikzpicture}[
box/.style={draw, rounded corners, minimum width=2.2cm, minimum height=0.8cm,
font=\small, fill=positive!10},
arr/.style={-{Stealth}, thick}
]
\node[box] (A) {Step 1};
\node[box, right=1.5cm of A] (B) {Step 2};
\node[box, right=1.5cm of B] (C) {Step 3};
\draw[arr] (A) -- node[above, font=\scriptsize] {label} (B);
\draw[arr] (B) -- (C);
\end{tikzpicture}
- 16:9 的宽度总计 ≤ 14cm。公式:N × 方框宽度 + (N-1) × 间距。
- 垂直流程:使用
below=,而非right=。
时间线:
\begin{tikzpicture}
\draw[-{Stealth}, thick] (0,0) -- (12,0) node[right] {Time};
\foreach \x/\lab in {1.5/Event A, 5/Event B, 9/Event C} {
\draw[thick] (\x, 0.15) -- (\x, -0.15);
\node[above=3pt, font=\small] at (\x, 0.15) {\lab};
}
\end{tikzpicture}
树形图:
\begin{tikzpicture}[
level distance=1.2cm, sibling distance=2.5cm,
every node/.style={draw, rounded corners, font=\small, minimum width=1.5cm}
]
\node {Root}
child { node {A} child { node {A1} } child { node {A2} } }
child { node {B} child { node {B1} } };
\end{tikzpicture}
带注释的大括号:
\draw[decorate, decoration={brace, amplitude=6pt, raise=2pt}]
(start) -- (end) node[midway, above=10pt, font=\small] {annotation};
带计算交点的坐标图:
\begin{tikzpicture}[scale=1.1]
\draw[-{Stealth}, thick] (0,0) -- (6,0) node[right] {$x$};
\draw[-{Stealth}, thick] (0,0) -- (0,4) node[above] {$y$};
\draw[thick, positive] plot[smooth, domain=0.5:5.5] (\x, {0.5*\x});
\draw[thick, negative, dashed] plot[smooth, domain=0.5:5.5] (\x, {2.5/\x + 0.3});
% Exact intersection via \pgfmathsetmacro (see quality standards above)
\end{tikzpicture}
决策菱形(用于算法流程图):
\node[diamond, draw, aspect=2, inner sep=1pt, font=\small] (D) {condition?};
\draw[arr] (D) -- node[right, font=\scriptsize] {yes} ++(0,-1.2);
\draw[arr] (D) -- node[above, font=\scriptsize] {no} ++(2.5,0);
TikZ 图示迭代审查循环(适用于复杂图示):
当 TikZ 图示含有 ≥ 5 个节点或包含绘制曲线时,请进行迭代审查:
┌─→ Step 1: Mentally render — trace every coordinate, compute where each element appears
│ Step 2: Check for issues — overlaps, misalignments, inconsistent semantics
│ Step 3: Classify — CRITICAL (overlap, wrong semantics, geometric error),
│ MAJOR (poor spacing, readability), MINOR (aesthetic)
│ Step 4: Fix all CRITICAL and MAJOR issues
│ Step 5: Re-compile and visually verify in PDF
└── If CRITICAL or MAJOR remain and round < 3: loop back to Step 1
If all clear or round = 3: declare APPROVED or report remaining issues
评判标准:
- APPROVED:无 CRITICAL、无 MAJOR → 图示完整
- NEEDS REVISION:仍有 CRITICAL 或 MAJOR 问题 → 列出所需的具体修正
- REJECTED:存在根本性的结构问题 → 考虑重新设计图示
2.7 excellence [file]
全面的多维度审查。使用 Agent 工具并行调度审查 Agent,以提高效率。
并行调度 Agent——并发发起以下 Agent 调用:
- 视觉审查 Agent——“阅读 [file]。检查每张幻灯片是否存在:内容溢出、字体不一致、方框过多(2 个以上)、间距问题、缺少过渡。按幻灯片报告问题及严重程度。遵循优先调整间距的修复原则。”
- 教学法审查 Agent——“阅读 [file]。验证 13 种教学法模式(先激发学习动机再讲形式化内容、逐步引入符号、例题演示等)以及整套演示文稿的检查项(叙事弧线、节奏、视觉韵律、符号一致性)。逐项报告模式及状态。”
- 校对 Agent——“阅读 [file]。检查语法、错别字、引文一致性(
\citet/\citep)、符号一致性和学术质量。逐项报告问题及位置和修复方案。” - TikZ 审查 Agent(如果文件包含
\begin{tikzpicture})——“阅读 [file]。检查每个 TikZ 图表中的标签重叠、几何准确性、视觉语义和间距。严格审查,找出所有问题。逐项报告问题及确切坐标和修复方案。” - 领域审查 Agent(可选)——“阅读 [file]。验证实质内容是否正确:假设、推导、引文忠实度。”
所有 Agent 返回结果后,综合生成报告:
# Slide Excellence Review: [Filename]
## Overall Quality Score: [EXCELLENT / GOOD / NEEDS WORK / POOR]
| Dimension | Critical | Major | Minor |
|-----------|----------|-------|-------|
| Visual/Layout | | | |
| Pedagogical | | | |
| Proofreading | | | |
| TikZ (if any) | | | |
### Critical Issues (Immediate Action Required)
### Major Issues (Next Revision)
### Recommended Next Steps
质量评分标准(用于多 Agent excellence 审查,与第 5 阶段的数值评分互为补充;第 5 阶段的评分用于 create):
| 评分 | 严重问题 | 中等问题 | 含义 |
|---|---|---|---|
| 优秀 | 0-2 | 0-5 | 可以进行演示(≈ 第 5 阶段评分 ≥ 90) |
| 良好 | 3-5 | 6-15 | 只需细微调整(≈ 第 5 阶段评分为 80-89) |
| 需要改进 | 6-10 | 16-30 | 需要大幅修改(≈ 第 5 阶段评分 < 80) |
| 较差 | 11+ | 31+ | 需要大幅重构 |
2.8 devils-advocate [file]
通过 5-7 个具体的教学法问题,对幻灯片设计提出质疑。
质疑类别:
- 顺序——“如果先讲 X 再讲 Y,学生会不会更容易理解?”
- 先备知识——“学生是否具备理解这些内容所需的背景知识?”
- 内容缺口——“这里是否应该加入一个直观例子?”
- 其他呈现方式——“还有 2 种呈现这一概念的方式”
- 符号冲突——“这个符号与前文的用法冲突”
- 认知负荷——“这张幻灯片上的新符号太多了”
- 独立可读性——“本节能否独立成章,作为教材的一章阅读?”
2.9 visual-check [file]
**通过 PDF→图像进行系统化视觉审查。**将编译后的 PDF 转换为图像,然后逐张检查幻灯片的视觉效果。此方法可以发现源代码中看不到、编译器又未提示的问题(尤其是方框内部溢出)。
**这很重要的原因:**Beamer 会抑制 block/alertblock/exampleblock 环境中的内容溢出警告。编译警告为零并不意味着视觉溢出为零。此操作可提供真实依据。
工作流:
-
编译(如果尚未编译):
xelatex -interaction=nonstopmode FILE.tex -
使用 PyMuPDF 将 PDF 转换为图像:
import fitz doc = fitz.open('FILE.pdf') n = doc.page_count # cache before iterating or closing zoom = 200 / 72 # 200 DPI matrix = fitz.Matrix(zoom, zoom) for i in range(n): page = doc.load_page(i) pixmap = page.get_pixmap(matrix=matrix) pixmap.save(f'/tmp/slide-{i+1:03d}.jpg', output='jpeg') doc.close() print(f'Exported {n} slides')或通过 bash 执行:
python3 -c "import fitz; ..."备用方案(如果 PyMuPDF 不可用):直接使用 Read 工具读取 PDF——Claude Code 支持多模态,可逐页读取 PDF 文件。
-
逐张系统检查——使用 Read 工具查看每张图像,检查:
- 各边缘(上、下、左、右)均无文本溢出
- 彩色方框内均无内容溢出(检查每个
alertblock/exampleblock/block) - 所有文本均清晰可读(在演示观看距离下,文字大小应足以辨认)
- 表格和公式均适合幻灯片宽度
- TikZ 标签没有与线条、点或其他标签重叠
- 同类幻灯片的字号保持一致
- 文本与背景之间的对比度充足
- 没有视觉杂乱(过多元素争夺注意力)
-
逐项报告问题:
### Slide N: [slide title] - **Issue:** [description] - **Severity:** Critical / Major / Minor - **Fix:** [specific recommendation]
2.10 validate [file] [duration]
自动量化验证。 检查可测量的属性,不读取内容。
执行的检查:
-
幻灯片数量与时长(如果提供了时长):
# Get page count pdfinfo FILE.pdf | grep "Pages:"与时间分配表(第 2.2 节,阶段 1)进行比较。如果超出建议范围,则标记。
-
宽高比:
pdfinfo FILE.pdf | grep "Page size:"预期值:364.19 x 272.65 pts(10pt 下的 16:9)或类似的 16:9 比例。如果是 4:3(旧投影仪格式),则标记。
-
文件大小:
- > 50 MB:警告(共享/通过电子邮件发送速度较慢)
- > 100 MB:严重(可能包含未压缩的图像)
-
编译状态(来自 .log 文件):
grep -c "Overfull \\\\hbox" FILE.log grep -c "Undefined control sequence" FILE.log grep -c "Citation.*undefined" FILE.log grep -c "multiply defined" FILE.log -
源代码静态检查(来自 .tex 文件):
- 统计
\pause/\onslide/\only的用法 → 必须为 0(硬性规则 1) - 统计包含超过 2 个彩色框的幻灯片数量 → 标记违规项(硬性规则 2)
- 统计
\tiny的用法 → 必须为 0(硬性规则 13) - 检查是否存在
\begin{thebibliography}→ 如果缺失则发出警告(硬性规则 11)
- 统计
报告格式:
# Validation Report: [Filename]
| Check | Result | Status |
|-------|--------|--------|
| Slide count | N slides / Xmin duration | OK / WARNING |
| Aspect ratio | 16:9 | OK |
| File size | X.X MB | OK / WARNING |
| Overfull hbox | N warnings | OK / CRITICAL |
| Undefined references | N | OK / CRITICAL |
| Overlay commands | N found | OK / VIOLATION |
| Box fatigue violations | N slides | OK / WARNING |
| References slide | Present / Missing | OK / WARNING |
Overall: PASS / PASS WITH WARNINGS / FAIL
2.11 extract-figures [pdf] [pages]
从论文 PDF 中提取图,并准备将其插入 Beamer 幻灯片。
当用户想要重用现有论文(自己的论文或引用的作品)中的图,而不是用 TikZ 重新绘制时使用。
工作流
-
确定目标图 — 如果用户没有指定页码,请使用原生
Read工具(带pages参数)查看 PDF 并定位图。如果目标不明确,请询问用户要提取哪些图。 -
使用
pdftoppm(poppler)从指定页面提取图像:# Render each target page to a high-res PNG (300 dpi), saved to figures/ pdftoppm -png -r 300 -f PAGE -l PAGE PDF_PATH figures/page # → figures/page-PAGE.png (original resolution at the chosen dpi, zero token cost)此命令会渲染整页;在第 5 步中使用
trim/clip裁剪出图。如果页面上只有一个清晰的内嵌位图,pdfimages -png -f PAGE -l PAGE PDF_PATH figures/img可以直接提取原始图像对象。 -
按照命名约定重命名:
mv figures/page-3.png figures/fig-LABEL.png命名约定:
fig-<descriptive-label>.png(例如,fig-architecture.png、fig-results-table.png)。 -
生成 LaTeX 代码片段 — 输出可直接粘贴的代码:
全宽图:
\begin{frame}{Frame Title} \begin{center} \includegraphics[width=0.85\textwidth]{figures/fig-LABEL.png} \end{center} \vspace{-6pt} {\small Source: \citet{author2024paper}} \end{frame}图文并排(分栏布局):
\begin{frame}{Frame Title} \begin{columns}[T] \column{0.50\textwidth} \includegraphics[width=\textwidth]{figures/fig-LABEL.png} {\small Source: \citet{author2024paper}} \column{0.45\textwidth} Key observations: \begin{itemize} \item Point 1 \item Point 2 \end{itemize} \end{columns} \end{frame}两图并排(子图):
\begin{frame}{Frame Title} \begin{figure} \begin{subfigure}{0.48\textwidth} \includegraphics[width=\textwidth]{figures/fig-LEFT.png} \caption{(a) Description} \end{subfigure}\hfill \begin{subfigure}{0.48\textwidth} \includegraphics[width=\textwidth]{figures/fig-RIGHT.png} \caption{(b) Description} \end{subfigure} \end{figure} \end{frame} -
裁剪指南 — 如果提取的图像包含应移除的周围文字或边距,请使用
trim和clip选项:\includegraphics[width=0.85\textwidth, trim=LEFT BOTTOM RIGHT TOP, clip]{figures/fig-LABEL.png}- 单位为
bp(大点)。根据渲染后的图像尺寸进行估算(例如,sips -g pixelWidth -g pixelHeight figures/fig-LABEL.png)。 - 常见情况:使用
trim=50 200 50 100, clip移除页面边距和周围文字。 - 编译后务必进行目视检查 — 裁剪坐标只是估算值。
- 单位为
规则
- 务必注明来源 — 除非是用户自己的论文,否则在每个提取的图下方添加
{\small Source: ...}。 - 优先使用矢量图 — 如果页面上只有一个清晰的图,提取质量通常足够。对于包含多个复杂图的页面,可考虑使用 TikZ 重新绘制关键图,以获得更好的质量和一致性。
- 检查分辨率 — 如果提取的图像宽度小于 800px,请提醒用户它在投影仪上可能会出现像素化。建议寻找更高分辨率的来源,或使用 TikZ 重新绘制。
- 不要提取表格 — PDF 中的表格栅格化后效果很差。务必使用
booktabs在 LaTeX 中重新创建表格。 - 导言区依赖 — 确保导言区包含
\usepackage{graphicx}(如果缺失则添加)。如果使用子图,还要确保包含\usepackage{subcaption}。
3. 验证协议
每项任务都必须以验证结束。 这是不可妥协的要求。
[ ] Compiled without errors (xelatex exit code 0)
[ ] No overfull hbox > 10pt
[ ] All citations resolve
[ ] PDF opens and renders correctly
[ ] Visual spot-check of modified slides
4. 领域审查(模板)
针对实质正确性(而非呈现效果),从 5 个角度进行审查:
- 假设压力测试 — 是否陈述了所有假设?它们是否充分且必要?
- 推导验证 — 每一步是否都推导合理?分解后的各部分之和是否等于整体?
- 引用忠实度 — 幻灯片是否准确呈现了引用论文的内容?
- 代码与理论的一致性 — 代码是否实现了幻灯片中的确切公式?
- 逆向逻辑检查 — 从结论→设定反向阅读,每项主张是否都有依据?
严重级别:CRITICAL = 数学错误。MAJOR = 缺少假设。MINOR = 表述可以更清晰。
5. 故障排除
错误: ! Undefined control sequence. \llbracket
原因: 缺少提供双括号的 stmaryrd 包。
解决方法: 在导言区添加 \usepackage{stmaryrd}。或者定义 \newcommand{\llbracket}{[\![} 作为备用方案。
错误: 某张幻灯片上出现 Overfull \vbox
原因: 内容过多,超出页面框架的高度。
解决优先级:
- 减小
\vspace的值 - 缩短文本(采用电报式风格)
- 拆分为两张幻灯片
- 对单个元素使用
\small(不要用于整张幻灯片) - 最后手段:使用
\footnotesize(绝不要使用\tiny)
错误: XeLaTeX 报错 Font "XXX" not found
原因: 未安装系统字体,或字体名称不正确。
解决方法: 使用 fc-list | grep "FontName" 检查可用字体。如果自定义字体不可用,则回退到默认的 Latin Modern。
错误: 公式超出幻灯片宽度 原因: 多项过长的公式。 解决优先级:
- 使用
\begin{align},在自然位置(=、+)换行 - 引入中间变量以缩短表达式
- 最后手段是使用
\resizebox{\textwidth}{!}{...}(会降低可读性)
错误: PDF 图像无法在 Quarto/网页中渲染
原因: 浏览器无法内嵌显示 PDF。
解决方法: 转换为 SVG:pdf2svg input.pdf output.svg。图表绝不要使用 PNG(栅格图像会模糊)。
错误: alertblock/exampleblock/block 中的内容在视觉上溢出,但编译器报告 0 条警告
原因: Beamer 会抑制块环境中的溢出警告。有两种不同的故障模式:
- 垂直方向:显示公式加上其下方的文本超出方框的垂直容量;底部内容溢出下边框。
\vspace{-Xpt}会加剧这一问题。 - 水平方向:块内边距会使有效宽度减少约 15%,因此较宽的公式会横向溢出。 解决优先级(垂直方向 — 最常见):
- 移除或减小方框内的
\vspace{-Xpt} - 精简方框内容:只放一个显示公式或几条项目符号,不要两者都放
- 将解释性文本移到公式下方、方框外(放在
\end{...block}之后的普通文本中) - 拆分成两个独立方框或幻灯片 解决优先级(水平方向):
- 将
\qquad替换为\quad或, - 将次要符号标记(例如采样箭头)移到单独一行
- 在自然位置使用
\\拆分公式 - 将公式移到方框外 绝不要只依赖编译警告 — 务必在 PDF 中目视检查每个彩色方框。