mcpField
B
beamer

beamer

github.com/noi1r文档处理37071 次安装11 周前更新
代码仓库

关于 beamer

用于创建、编译、审阅和润色学术 Beamer 演示文稿的工作流 Skill。它通过分阶段流程和具体的版式、内容及验证规则,支持技术报告制作。

主要功能

  1. 01按阶段引导幻灯片制作
  2. 02规定 Beamer 版式与字体规则
  3. 03支持 XeLaTeX 编译和检查
  4. 04要求进行 PDF 视觉审阅
  5. 05提供参考文献页和备用页指南

适用场景

  1. 01根据研究论文制作报告
  2. 02编译 Beamer 文稿并检查警告
  3. 03检查幻灯片信息密度和视觉溢出
  4. 04为不同演讲时长准备技术演示

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/noi1r/beamer-skill --skill beamer

安装后在 Claude Code 中输入/beamer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
references/
create-workflow.md
review-actions.md
tikz-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. 硬性规则(不可妥协)

  1. 不使用叠加 — 绝不使用 \pause、\onslide、\only、\uncover。渐进式展示请使用多张幻灯片,强调重点请使用颜色。常见替代模式:
    • 公式渐进展开:幻灯片 A 展示基础公式,幻灯片 B 复制该公式并添加下一项(幻灯片 A 中变灰的项保留作上下文)。复制整个 frame 并扩展。
    • 列表逐步呈现:幻灯片 A 展示第 1–2 项,幻灯片 B 展示第 1–4 项(重复第 1–2 项)。对之前展示过的项使用 \textcolor{neutral}{} 使其弱化。
    • 图示渐进构建:幻灯片 A 展示基础结构,幻灯片 B 添加注释/边。复制 tikzpicture 并追加新元素——绝不删除已有元素。
  2. 每张幻灯片最多 2 个彩色框 — 框太多会削弱强调效果。过渡性说明改用普通斜体。
  3. 先讲动机,再讲形式化内容 — 每个概念都先回答“为什么?”,再回答“是什么?”。
  4. 每个定义后 2 张幻灯片内给出实例演算。
  5. 仅使用 XeLaTeX — 绝不使用 pdflatex。
  6. Beamer .tex 是唯一事实来源 — TikZ 图示、内容和符号都以此为源。
  7. 每项任务完成后都要验证 — 编译、检查警告、打开 PDF。
  8. 电报式风格 — 使用关键词短语,而非完整句子。幻灯片是演讲提示,不是讲稿。例外:用于引出定义或转场的铺垫句。每个项目应不超过 2 行(约 15 个单词)——过长时拆分为子项或精简改写。
  9. 每张幻灯片都要有存在的价值 — 每张幻灯片至少包含一个实质性元素(公式、图示、表格、定理或算法)。只有 3 条简短项目且没有其他内容的幻灯片必须合并或充实。
  10. 防止框内内容溢出 — alertblock、exampleblock 和 block 环境会增加内部填充(可用宽度减少约 15%,标题栏和垂直填充额外占用 12–16pt 高度)。在普通幻灯片上能放下的内容,放入框内后两个方向都可能溢出。规则:
    • 垂直溢出(最常见、最难发现):在单个框内同时放置显示公式(\[ \])和其下方文本,很容易超出垂直空间。框内内容限制为一个显示公式,或 2–3 条简短项目——不要两者兼有。绝不在框内激进地使用 \vspace{-Xpt};这样会把底部内容拉到边框之外。
    • 水平溢出:框内绝不使用 \qquad;使用 \quad 或 ,。如果显示公式在普通幻灯片上的宽度超过 \textwidth 的约 70%,放入框内之前先重新排版。
    • Beamer 会屏蔽 block 内的溢出警告 — 编译时没有警告并不意味着视觉上没有溢出。务必在 PDF 中逐一目视检查每个框。
  11. 参考文献幻灯片 — 倒数第二张幻灯片(感谢页之前)必须是列出关键引用作品的参考文献幻灯片。使用 \begin{thebibliography}{9} 和 \small。纳入主要论文及 3–5 篇最相关的参考文献。
  12. 颜色与对比度标准 — 文本与背景的对比度至少为 4.5:1(WCAG AA)。二元对比绝不使用红色+绿色(约 8% 的男性存在色盲)。优先使用蓝色+橙色。导言区定义的语义颜色命令:\pos{} = 正面/正确(蓝色),\con{} = 负面/局限(橙色),\HL{} = 强调/关键发现(绿色),\textcolor{neutral}{} = 弱化显示。这些颜色对色盲友好。总配色限制为 3–5 种。
  13. 字号层级 — 幻灯片标题:20–24pt(beamer 默认值);关键发现/定理:使用普通字号并加粗;辅助文本:普通字号;标签/说明文字:至少 \small。面向用户的内容绝不使用 \tiny。
  14. 备用幻灯片 — 感谢页之后,加入 3–5 张用于回答预期问题的备用幻灯片。在备用部分之前使用 \appendix。使用 \begin{frame}{Backup Slides}\end{frame} 分隔主内容与备用内容。备用幻灯片不应计入时间分配。应包含的内容(根据阶段 0 的材料分析得出):
    • 主定理的完整证明(如果主内容中只展示了证明概要)
    • 参数选择/安全性分析细节(针对密码学/协议论文)
    • 包含更多基线方法的扩展对比表
    • 实验设置细节(硬件、超参数、数据集)
    • 假定听众已知的先决定义(以备有人提问)
  15. 分栏布局 — 并排展示内容时使用 \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 的结果添加针对论文的问题。

最低要求的问题(始终询问):

  1. 时长:演讲有多长?
  2. 听众水平:听众是谁?

可选问题(如果演讲属于期刊俱乐部、答辩,或用户似乎希望获得演练支持,则询问): 3. 演讲者备注:你希望在演示者视图中显示演讲者备注吗?如果希望,每个 frame 都会添加 \note{} 块,其中包含简短的演讲要点(核心信息、过渡提示、预期问题)。要在双屏显示时启用此功能,需在导言区添加 \setbeameroption{show notes on second screen=right}。

以内容为导向的问题(根据阶段 0 的结果拟定,按需提问):

  • 先备知识:列出阶段 0 中确定的具体技术依赖,并询问听众了解哪些。例如:“这篇论文基于 sumcheck 和多项式承诺。需要我介绍一下这些内容吗?”——而不是问“熟悉基础代数吗?”。
  • 内容范围:将论文的实际组成部分列为选项,询问哪些需要重点讲解、略过或简要提及。
  • 深度与广度:如果论文既有直观概述,也有详细构造,询问用户更倾向于哪种讲解方式。
  • 论文特定决策:例如,如果论文比较了两种构造,询问是要同等介绍两者,还是侧重其中一种。

指导原则:

  • 选项应来自论文的实际内容,而不是通用模板。
  • 总计提问 3-6 个;不要问得过多或过少。
  • 如果上下文中已有明显信息(例如用户说了“讨论班”),则直接推断,不要再问。

幻灯片数量估算:每 1.5-2 分钟约安排 1 张幻灯片。

时间分配表:

时长幻灯片总数引言/动机方法/背景核心内容总结/结论
5 分钟(闪电演讲)5-71-20-12-31
10 分钟(短讲)8-1221-24-51
15 分钟(会议报告)10-152-32-35-71-2
20 分钟(研讨会)13-1832-36-92
45 分钟(主题演讲)22-304-55-710-142-3
90 分钟(讲座)45-605-68-1225-353-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、结构性问题
  • 布局: 缺少过渡、缺少引入性句子

间距优先的修复原则(按优先级排序):

  1. 减少垂直间距(结构调整)
  2. 合并列表
  3. 将行间公式改为行内公式
  4. 使用 \resizebox 缩小图像或表格
  5. 最后手段: 使用 \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 代码前,请估算:

    1. 图示上方的文本和方程:统计显示方程数量(每个约 12-15mm)、文本行数(每行约 5mm)和间距
    2. 剩余高度 = 70mm − 文本高度
    3. TikZ 边界框高度 =(最大 y 坐标 − 最小 y 坐标)× yscale × 0.3528mm/pt
    4. 如果图示无法适配:减小 yscale、缩小坐标范围,或将内容移至单独的幻灯片

    混合内容幻灯片的安全默认值:xscale=0.5-0.7、yscale=0.4-0.6。全页图示使用:scale=0.9-1.1。

  • 短箭头上的边缘标签:在方框之间的箭头上放置 node[midway, above] 标签时,标签文本可能会超出箭头端点,延伸到相邻方框边框上。预防规则:

    1. 估算标签文本宽度与箭头长度(right= 间距)的比例。如果标签宽度超过间距的约 80%,增大间距或缩小标签字体(\scriptsize/\tiny)。
    2. 使用 above=4pt(或更大值),不要只写 above,以便在标签与方框边框之间留出垂直间隙。
    3. 对于含 3 个或更多方框的流程图:总宽度 =(N × 方框宽度)+((N-1) × 间距)。必须 ≤ 14cm,适用于 16:9 的 Beamer。同步调整方框的 text width 和间距。
    4. 如有疑问,请编译并目视检查,确保标签没有与任何方框边框重叠。

提取为 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 调用:

  1. 视觉审查 Agent——“阅读 [file]。检查每张幻灯片是否存在:内容溢出、字体不一致、方框过多(2 个以上)、间距问题、缺少过渡。按幻灯片报告问题及严重程度。遵循优先调整间距的修复原则。”
  2. 教学法审查 Agent——“阅读 [file]。验证 13 种教学法模式(先激发学习动机再讲形式化内容、逐步引入符号、例题演示等)以及整套演示文稿的检查项(叙事弧线、节奏、视觉韵律、符号一致性)。逐项报告模式及状态。”
  3. 校对 Agent——“阅读 [file]。检查语法、错别字、引文一致性(\citet/\citep)、符号一致性和学术质量。逐项报告问题及位置和修复方案。”
  4. TikZ 审查 Agent(如果文件包含 \begin{tikzpicture})——“阅读 [file]。检查每个 TikZ 图表中的标签重叠、几何准确性、视觉语义和间距。严格审查,找出所有问题。逐项报告问题及确切坐标和修复方案。”
  5. 领域审查 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-20-5可以进行演示(≈ 第 5 阶段评分 ≥ 90)
良好3-56-15只需细微调整(≈ 第 5 阶段评分为 80-89)
需要改进6-1016-30需要大幅修改(≈ 第 5 阶段评分 < 80)
较差11+31+需要大幅重构
2.8 devils-advocate [file]

通过 5-7 个具体的教学法问题,对幻灯片设计提出质疑。

质疑类别:

  1. 顺序——“如果先讲 X 再讲 Y,学生会不会更容易理解?”
  2. 先备知识——“学生是否具备理解这些内容所需的背景知识?”
  3. 内容缺口——“这里是否应该加入一个直观例子?”
  4. 其他呈现方式——“还有 2 种呈现这一概念的方式”
  5. 符号冲突——“这个符号与前文的用法冲突”
  6. 认知负荷——“这张幻灯片上的新符号太多了”
  7. 独立可读性——“本节能否独立成章,作为教材的一章阅读?”
2.9 visual-check [file]

**通过 PDF→图像进行系统化视觉审查。**将编译后的 PDF 转换为图像,然后逐张检查幻灯片的视觉效果。此方法可以发现源代码中看不到、编译器又未提示的问题(尤其是方框内部溢出)。

**这很重要的原因:**Beamer 会抑制 block/alertblock/exampleblock 环境中的内容溢出警告。编译警告为零并不意味着视觉溢出为零。此操作可提供真实依据。

工作流:

  1. 编译(如果尚未编译):

    xelatex -interaction=nonstopmode FILE.tex
    
  2. 使用 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 文件。

  3. 逐张系统检查——使用 Read 工具查看每张图像,检查:

    • 各边缘(上、下、左、右)均无文本溢出
    • 彩色方框内均无内容溢出(检查每个 alertblock/exampleblock/block)
    • 所有文本均清晰可读(在演示观看距离下,文字大小应足以辨认)
    • 表格和公式均适合幻灯片宽度
    • TikZ 标签没有与线条、点或其他标签重叠
    • 同类幻灯片的字号保持一致
    • 文本与背景之间的对比度充足
    • 没有视觉杂乱(过多元素争夺注意力)
  4. 逐项报告问题:

    ### Slide N: [slide title]
    - **Issue:** [description]
    - **Severity:** Critical / Major / Minor
    - **Fix:** [specific recommendation]
    
2.10 validate [file] [duration]

自动量化验证。 检查可测量的属性,不读取内容。

执行的检查:

  1. 幻灯片数量与时长(如果提供了时长):

    # Get page count
    pdfinfo FILE.pdf | grep "Pages:"
    

    与时间分配表(第 2.2 节,阶段 1)进行比较。如果超出建议范围,则标记。

  2. 宽高比:

    pdfinfo FILE.pdf | grep "Page size:"
    

    预期值:364.19 x 272.65 pts(10pt 下的 16:9)或类似的 16:9 比例。如果是 4:3(旧投影仪格式),则标记。

  3. 文件大小:

    • > 50 MB:警告(共享/通过电子邮件发送速度较慢)
    • > 100 MB:严重(可能包含未压缩的图像)
  4. 编译状态(来自 .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
    
  5. 源代码静态检查(来自 .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 重新绘制时使用。

工作流
  1. 确定目标图 — 如果用户没有指定页码,请使用原生 Read 工具(带 pages 参数)查看 PDF 并定位图。如果目标不明确,请询问用户要提取哪些图。

  2. 使用 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 可以直接提取原始图像对象。

  3. 按照命名约定重命名:

    mv figures/page-3.png figures/fig-LABEL.png
    

    命名约定:fig-<descriptive-label>.png(例如,fig-architecture.png、fig-results-table.png)。

  4. 生成 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}
    
  5. 裁剪指南 — 如果提取的图像包含应移除的周围文字或边距,请使用 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 个角度进行审查:

  1. 假设压力测试 — 是否陈述了所有假设?它们是否充分且必要?
  2. 推导验证 — 每一步是否都推导合理?分解后的各部分之和是否等于整体?
  3. 引用忠实度 — 幻灯片是否准确呈现了引用论文的内容?
  4. 代码与理论的一致性 — 代码是否实现了幻灯片中的确切公式?
  5. 逆向逻辑检查 — 从结论→设定反向阅读,每项主张是否都有依据?

严重级别:CRITICAL = 数学错误。MAJOR = 缺少假设。MINOR = 表述可以更清晰。


5. 故障排除

错误: ! Undefined control sequence. \llbracket 原因: 缺少提供双括号的 stmaryrd 包。 解决方法: 在导言区添加 \usepackage{stmaryrd}。或者定义 \newcommand{\llbracket}{[\![} 作为备用方案。

错误: 某张幻灯片上出现 Overfull \vbox 原因: 内容过多,超出页面框架的高度。 解决优先级:

  1. 减小 \vspace 的值
  2. 缩短文本(采用电报式风格)
  3. 拆分为两张幻灯片
  4. 对单个元素使用 \small(不要用于整张幻灯片)
  5. 最后手段:使用 \footnotesize(绝不要使用 \tiny)

错误: XeLaTeX 报错 Font "XXX" not found 原因: 未安装系统字体,或字体名称不正确。 解决方法: 使用 fc-list | grep "FontName" 检查可用字体。如果自定义字体不可用,则回退到默认的 Latin Modern。

错误: 公式超出幻灯片宽度 原因: 多项过长的公式。 解决优先级:

  1. 使用 \begin{align},在自然位置(=、+)换行
  2. 引入中间变量以缩短表达式
  3. 最后手段是使用 \resizebox{\textwidth}{!}{...}(会降低可读性)

错误: PDF 图像无法在 Quarto/网页中渲染 原因: 浏览器无法内嵌显示 PDF。 解决方法: 转换为 SVG:pdf2svg input.pdf output.svg。图表绝不要使用 PNG(栅格图像会模糊)。

错误: alertblock/exampleblock/block 中的内容在视觉上溢出,但编译器报告 0 条警告 原因: Beamer 会抑制块环境中的溢出警告。有两种不同的故障模式:

  • 垂直方向:显示公式加上其下方的文本超出方框的垂直容量;底部内容溢出下边框。\vspace{-Xpt} 会加剧这一问题。
  • 水平方向:块内边距会使有效宽度减少约 15%,因此较宽的公式会横向溢出。 解决优先级(垂直方向 — 最常见):
  1. 移除或减小方框内的 \vspace{-Xpt}
  2. 精简方框内容:只放一个显示公式或几条项目符号,不要两者都放
  3. 将解释性文本移到公式下方、方框外(放在 \end{...block} 之后的普通文本中)
  4. 拆分成两个独立方框或幻灯片 解决优先级(水平方向):
  5. 将 \qquad 替换为 \quad 或 ,
  6. 将次要符号标记(例如采样箭头)移到单独一行
  7. 在自然位置使用 \\ 拆分公式
  8. 将公式移到方框外 绝不要只依赖编译警告 — 务必在 PDF 中目视检查每个彩色方框。

评论

支持 Markdown