一个生成带幻灯片的演讲稿的LaTeX样式包。

我们喜欢使用幻灯片(slides)来辅助演讲。在一些比较重要的学术场合,一份清晰易懂的幻灯片显得非常critical。

但这篇文章并不是要教你怎么制作一份合格的幻灯片,而是要跟你讲除了做幻灯片之外还应该做的东西。有些人幻灯片制作的非常精彩,但一上场,怯场忘词的马脚就露出来了。这是因为他们把大多数时间花在制作幻灯片上,而忘了把自己制作的幻灯片先消化好。

除了幻灯片,你还需要准备什么?——练习!

对于重要的学术场合,做好练习尤为关键。怎么开始自我介绍,碰到个公式怎么解释清楚,怎么起承转合,怎么在演讲过程中跟大家做眼神交流,怎么吸引大家的注意力。这些都是非常 challenging 的东西。单纯准备一份幻灯片显然不足以应付上面所有事情。

怎么练习?——对照讲稿练习20遍!

我在 SIAT 实习的时候,一位指导老师告诉我,他们在做学术汇报前,最起码将演讲稿练习20遍。这个给我非常大的触动。我所认识的很多科研人员,他们的科研任务已经非常繁重,但他们还乐于腾出时间来精心准备自己的演讲,在进行学术交流时将自己的成果以最佳的方式展示给其他人。这何尝不是一种分享精神。

于是,做好幻灯片后,一件不可忽略的事情就是准备好讲稿。将你的幻灯片消化好,并组织成语言。

最简单的方式就是将幻灯片打印下来,然后手动添加标注。类似 PPT 的演示文稿在打印的时候会去除动画效果,省的浪费纸张。如果使用 Beamer 写幻灯片,则可以在引言区一开始带上 handout 参数

1
\documentclass[handout]{beamer}

将幻灯片生成为没有 overlay 的讲义(handouts)。

但直接在讲义上书写会遮盖住原来的内容。对于某些内容比较多的幻灯片,可能还会出现没地方书写的情况。

Handout-With-Notes

为了腾出更多的空间来书写,有人写了一个 Beamer 样式包 Handout-With-Notes ,可以生成有书写笔记的空间的讲义。效果如下:

Handout-With-Notes
Handout-With-Notes

左边是幻灯片,右边留了空间让你自行书写笔记,看起来挺人性化。但有几个不足:

  1. 仅支持用 LaTeX + Beamer 编写的幻灯片。不支持Powerpoint、Libre Impress、WPP这类文档;
  2. 只能手动书写笔记,没法添加电子版的文字到右边的内容。而且每一页的笔记空间有限,如果这一页内容很多的话就得把自己的字写的尽量小。为了不影响对照练习时候的心情,还要尽可能书写工整。这些问题对于写字不如打字快的程序猿而言都是不折不扣的折磨。

总而言之,handoutWithNotes看起来更适合发给听众当笔记手册,不适合用来准备讲稿。另外一种比较直接的方式就是单独写一份讲稿。然后和打印好的幻灯片两份材料一起结合起来练习。但也不够方便。

Handout-With-Script

最理想的方式应该是在编写讲稿的时候自动插入事先编写好的幻灯片,上面是幻灯片,下面是演讲稿,方便对照练习。

针对这个需求,我写了一个样式包 Handout-With-Script,效果如下:

Handout-With-Script有几个优点:

  1. 支持 pdf 格式的讲义文件。因为大多数幻灯片制作系统(PPT、WPP、Libre Impress)都支持导出为 pdf 文件,因此可以支持大多数幻灯片制作系统排版的幻灯片。
  2. 编写讲稿的时候会自动插入该页对应的幻灯片,也可以手动制定要插入哪一页的幻灯片。

不过Handout-With-Script也不是完全轻量级的,它依赖一个叫做 pdftk 的控制命令行工具,用来分割pdf文档。好在它是跨平台的。

使用方法

  1. 将 handout-with-script 项目克隆下来:
1
$ git clone https://gitcafe.com/wzpan/handout-with-script.git
  1. 把你制作好的课件导出成pdf格式,重命名为 slides.pdf ,并放置到项目目录下,即与 script.tex 同一个目录。
  2. 修改 script.tex ,编写你的演示文稿。
  3. 执行 make 命令编译生成演示文稿。
1
$ make

如你在 script.tex 文件里所见,Handout-With-Script自定义了 myscriptpagemyscript 两个环境和一个命令 \click

myscriptpage

第一个要介绍的是 myscriptpage 环境。使用 myscriptpage 环境会 1) 新建一个空白页以编写讲稿内容;2) 在页面顶部插入一页幻灯片,幻灯片的页码由用户指定。使用它需要在后面跟上一个页码。例如:

1
2
3
\begin{myscriptpage}{10}
This page will insert the slide 10.
\end{myscriptpage}

myscript

每次都要指定要插入的幻灯片的页码实在太繁琐,幸运的是,你通常不需要这么做。因为通常我们的幻灯片是顺序播放的,因此我定义了更加人性化的 myscript 环境,它使用一个计数器来自动帮你获取这一页讲稿对应哪一页幻灯片。当你使用 \end{myscript} 结束一页讲稿后,该计数器就自动加1,以指向下一页的幻灯片。例如:

1
2
3
\begin{myscript}
This page will insert the slide \theslidenum.
\end{myscript}

click

对于动画或overlay比较多的幻灯片,我们不仅要关心讲的内容,还要注意什么时候点击鼠标触发动画。因此,我自定义了一个 \click 命令,可以生成一个 click 图标,用于示意什么时候该点击鼠标触发动画。

项目信息

  1. 项目地址: https://github.com/wzpan/handout-with-script
  2. 欢迎 fork 我的项目 并做出你的创新!
  3. 我的 一个范例

Comments