讲座幻灯片重制
将枯燥的课程幻灯片变成学生真正能学到东西的版本。输出是基于 Slides 工件类型 的幻灯片(每种语言一个)。关于幻灯片格式、文件和发布的所有内容均来自该类型的说明。此技能在此基础上增加了教学设计、动画和命令规则以及希伯来语 RTL 技术。
在编写第一张幻灯片之前,请阅读 references/patterns.md。它包含以下每个模式的现成标记。
1. 首先完整阅读源文件
- PDF:使用
Read工具,每次最多 20 页,直到所有页面都被阅读。PPTX:使用 pptx 技能提取文本和图片。 - 阅读时,列出:主题的顺序、每个命令或代码片段、每个定义、幻灯片中已有的每个测验或问题,以及任何重复显示相同截图但只有一个标注不同的幻灯片。这些重复的幻灯片是首先要合并的。
- 同时列出每张值得保留的图片:照片、真实物体或模型、工具截图,以及显示手绘图无法表达的图形。在
Read预览中记下每张图片的页码和大致位置,因为你稍后需要裁剪它(§6)。 - 保留源文件中的所有事实:姓名、日期、电子邮件、评分、链接、命令标志。切勿发明无法从源文件或示例本身的逻辑中推导出的数字、引文或工具行为。
2. 规划教学内容,然后构建
用一行话向用户说明计划,然后开始。无需等待批准。
- 一个贯穿始终的示例。 选择源文件自己的示例,并赋予它一个具体的物理形象(一个 3 位独热码 FSM 变成了“一个 3 灯追踪器”)。在每张幻灯片上重复使用它:属性变成关于它的简单问题,结果用它的术语来解释。
- 每个概念一个类比,来自日常生活,在幻灯片上以斜体写在正式定义旁边(仿真与形式验证 = 尝试 1000 把钥匙 vs 锁匠证明机制;重置 = “新游戏”;时钟 = 节拍器;边界 = 街上最近的咖啡馆;调试“为什么” = 回到过去的侦探)。
- 每 4–6 张幻灯片一次测验:在运行前预测、手工跟踪、“如果我们改变 X 会怎样”、真/假。答案是固定盒子,通过点击逐步显示;同时将答案写在演讲者备注中。
- 保留源文件中的图片,绘制其余的。 用户希望原始的相关图片出现在幻灯片中。不要为了绘图而丢弃它们。对于你列表中的每张图片:
- 如果它显示的内容与你的绘图相同(分辨率条、工具的真实窗口、前后对比),则使用图片而不是绘图。
- 如果它添加了绘图无法表达的内容(真实照片、真实 3D 模型、真实数据集),则将其与你的运行示例绘图放在同一张幻灯片上,并添加一行说明文字,将两者联系起来。
- 如果它纯粹是装饰性的或重复另一张图片,则将其省略,并在报告中说明。 将源文件中仅用文字描述的内容绘制为 SVG/div(patterns.md):状态图、波形图、时间线、数轴、运行示例的逐步构建。
- 每张幻灯片一个想法,大约 20-26 张。使用节奏:深色陈述幻灯片用于封面、每个章节开场和回顾;浅色内容幻灯片;测验幻灯片使用暖色调背景。
- 以备忘单结束:按顺序排列的每个命令及其 2-3 个字的简要说明,以及关键术语词汇表。
3. 动画是必需的,不是可选的
用户要求更多动画。每套幻灯片必须:
- 在每个章节上放置
data-transition:大部分使用fade,进入新章节时使用push,在显示相同图表两个状态的幻灯片之间使用magic。 - 为每张内容幻灯片至少提供一个构建序列:关键元素是具有
data-build-in="<效果> <顺序>"的position:absolute子元素,以便它们在演示模式下逐个出现。构建只对已固定的子元素有效,因此逐步显示的幻灯片需要使用明确的left/top/width布局。 - 使用有助于教学的构建:逐步揭示流程(
rise 1,rise 2, …),逐箭头绘制状态机(每个箭头组一个固定的 SVG),逐周期演示波形,在定义之后显示类比,最后显示测验答案。 - 使用 magic move 动画化变化:在连续两张幻灯片的匹配固定元素上使用相同的
id(灯亮起、高亮移动到下一个周期、边界区间变窄)。 - 有目的地变化效果:
rise用于列表和步骤,pop用于结果或检查,left/right用于从某个方向出现的内容,fade用于注释,scale用于大揭秘。每张幻灯片使用的构建不超过 6 个。
4. 命令必须从幻灯片中脱颖而出
用户要求更醒目的命令。每个命令、标志或 Tcl/shell 行都使用 patterns.md 中的命令芯片,并且幻灯片上没有其他内容看起来像它:
- 使用单独的块(
<p>),切勿内联在句子中。Spans 只能携带颜色,因此span上的font-family会被静默丢弃。 - 等宽字体(JetBrains Mono),32-40px,加粗。深色芯片背景,一种仅供命令使用的亮色强调色,前缘有粗的强调色条,以及提示符号(Tcl 用
%,shell 用$)。 - 每个芯片旁边,一个简短的标签说明它的作用(“编译”、“全部证明”)。
- 在步骤幻灯片上,命令芯片是标题之后最大的元素,并且首先构建出现。
- 代码清单(整个文件)使用独立的、更安静风格的代码卡片,以便命令仍然突出。
5. 语言
如果用户要求两种语言,则从该类型制作两套独立的幻灯片,使用相同的幻灯片 id 和内容。先构建源语言(或英语),然后构建另一种。希伯来语需要 patterns.md 中的 RTL 技术:用 ⁧…⁩ 隔离每个希伯来语文本块,用 ⁦…⁩ 包裹希伯来语中的内联代码,使用 text-align:right 和 row-reverse 行,反转表格列顺序,在序列中使用 ←,并分别隔离每个 <br> 分隔的行。保持代码、命令芯片、波形图和 GUI 线框从左到右。Rubik 字体涵盖希伯来语和拉丁语。
6. 构建和发布
遵循 Slides 类型关于文件和调用的说明,并遵循使用中得到的以下规则:
- 编写
project/deck.json(完整的order、sections、faces)和封面,发布,然后每轮编写和发布大约 4 张幻灯片。 - 带有
edits的发布不能同时携带files。使用 Edit 工具进行编辑,然后发布文件。 - 如果发布因网络错误失败,则重新发送相同的文件。这是安全的。
- 从 PDF 中裁剪源图片(在编写使用它们的幻灯片之前执行此操作):
- 将 PDF 复制到 scratchpad 中自己的新文件夹,并将裁剪后的图片写入单独的
assets文件夹。 - 使用
python -I -c "import pypdf,sys;print(pypdf.PdfReader(sys.argv[1]).pages[0].mediabox)" <pdf>获取页面大小。PyMuPDF 和 Pillow 未安装;pdftoppm(MiKTeX)已安装。忽略其“需要 Windows 10”的警告。 - 直接从页面裁剪:
pdftoppm -f N -l N -r 250 -x X -y Y -W W -H H -png -singlefile <pdf> <assets>/<name>。坐标来自Read预览:比例 = (250 / 72) × 页面宽度(pt)/ 预览宽度(px)。720pt 的页面预览为 1000px 宽,则比例为 ×2.5。 - 每次裁剪后
Read一次并修复边缘:常见问题是为相邻图片留出一小条边。 - 如果是一行中的多个面板(例如,以 7 种分辨率显示的同一张图片),则每个面板裁剪一次,以便面板可以逐个构建出现。
- 在一次调用中上传所有裁剪后的图片:Artifact publish 使用
url、asset: true和file_paths(最多 25 个)。在<img src>中直接使用每个返回的/_blob/<id>,并配合object-fit:contain以及匹配裁剪后宽高比的宽度/高度。 - 对于 PPTX,获取 pptx 技能提取的图片,然后以相同方式上传。
- 将 PDF 复制到 scratchpad 中自己的新文件夹,并将裁剪后的图片写入单独的
- 预算高度:边距内 824px。标题块约 130px,表格行约 2.1 × 字号每行,固定盒子必须结束于 y 952 之上。在缩小文本之前先缩短它,并将文本保持在 24px 或更大。
- 除非用户要求,否则不要渲染或截图来验证。
7. 报告
提供每套幻灯片的链接,与原始幻灯片相比的变化(运行示例、类比、插图、哪些源图片被保留以及与位置、哪些被省略、测验、动画、命令样式、哪些重复幻灯片被合并),以及你没有检查的内容。提醒用户,这些幻灯片在共享之前是私有的。