讲稿和文章不是同一份东西
一份源文件渲染成文章和幻灯片,看起来省事,实际把对应关系搞错了。
想把一个 idea 既写成文章又讲成演示,最容易想到的办法是写一份源文件,渲染出两种形态。Quarto 和 reveal.js 的 scroll view 都提供这个能力。用下来会觉得别扭,原因不在工具,在于它假设文章和幻灯片是同一份内容的两种样子。
工具把对应关系搞错了
演讲里承担论证的是你说出来的话,幻灯片只是视觉锚点。文章里承担论证的是正文。所以真正同构的两样东西是文章正文和讲稿,幻灯片在文章那边根本没有对应物。
这个错位在写的时候就能感觉到:为了让幻灯片能读,你会往页面上加字,讲的时候听众在读屏幕不听你说;为了让页面干净,你把字删到只剩关键词,导出成文章就什么都没说。
两边真正共用的只有证据
图表、截图、录屏、那几个关键数字——这些两边完全一样,而且是最费工的部分。叙述不一样,载体不一样,只有证据一样。
叙述为什么不能共用,差别在这几行:
| 讲稿 | 文章 | |
|---|---|---|
| 谁控制节奏 | 讲的人 | 读者 |
| 能不能回看 | 不能,过去就过去了 | 能,随时往回翻 |
| 论证放在哪 | 你说出来的话 | 正文 |
| 因此需要 | 重复、铺垫、明确的段落提示 | 标题和目录来导航 |
| 密度 | 低,一次只能进一个意思 | 高,读者自己调速 |
这两种需求没法用同一段文字满足。
落地:一个主题三样东西
topics/<主题>/
assets/ 图表和截图,两边共用
talk.md 幻灯片放证据,论证写在 speaker notes 里
post.md 文章,同一批图,配更完整的图注和上下文
assets/ 用相对路径引用,幻灯片和文章各自解析到同一批文件。改了图,两边同时更新;改了叙述,只影响一边。
talk.md 里一页长这样——页面上只有一句话和一张图,论证全在最后那个注释里:
---
layout: center
---
## 两边真正共用的只有证据

<!--
图表、截图、录屏——这些两边完全一样,而且是最费工的部分。
上面两层各写各的。听众不能回看,所以讲稿要重复、要铺垫;
读者能跳着看,所以文章可以更密,但要靠标题导航。
-->
pnpm notes 把这些注释按页倒出来,就是文章的初稿。
先写散文,再抽幻灯片
先写文章或者长 speaker notes,把论证想清楚,再从里面抽幻灯片。抽的过程本身在逼你决定每页只留哪一个视觉锚点。
反过来先堆幻灯片,容易得到一批看着挺满、但拼不成文章的页面——因为那些页面从来没有承担过论证,它们只是关键词的排列。