札记(八)——Beamer演示文稿
又是一年毕业季~ 这次把做了这么久beamer的一些心得分享一下。
首先,推荐阅读一下beamer的手册(The beamer class User Guide for version 3.72.,通过命令行texdoc beamer
即可获得),也有中文翻译版(但是年份比较早,针对的还是3.24版)。在手册中其实已经很详尽的说明了如何创建一个beamer演示文稿,这里我就粗略的说明一下吧~
Beamer的上手还是很简单的,有个模版往里面填论文的内容就可以啦~ 我学位论文答辩的beamer模版也已经放在Github里,如果想要改为自己学校的样式,换换logo、配色方案、主图就可以叻,都还是挺简单的~
鉴于我也学艺不精,本篇札记主要分为以下几部分:
- 入门
- 是什么
- 基本结构
- 进阶
- 与常见的article相比,beamer独特的用法
- 突出强调(structure & alert)
- 块(block)
- 列表(enumerate & itemize & description)
- 使Beamer更“演示”的一些方式
- 帧、叠层、动画
- 多列并排
- 公式的优雅注解
- 页面脚注
- “演讲者备注”的实现——笔记页
- 与常见的article相比,beamer独特的用法
- 其他应用
- poster制作(先咕咕咕~)
如果还有什么想到了在加~
Beamer入门
引子
引子(一)
在小红书上之前有这样一个问题“PPT上面的这个是怎么做的”(图自小红书用户ID:10987385808)
而我关注很久的“旁门左道PPT”在PPT最上面这个是啥?咋做的呀?中回复ppt的导航栏就可以完成这样的操作。真的是这样的吗?
注意到上面的小圆点是会跟随页面的递进而变化的,同时圆圈的透明度代表当前页面属于哪一小节。这样的操作真的能通过ppt简单的实现吗?其实是很困难的,如果只是实现简单的章节导航栏,ppt还是可以实现的,但是对于这种每页都不同的,对于ppt来说就是难上加难了,尤其当你要加减页面时,那就更加痛苦了。
很显然,这个演示文档并不是使用powerpoint制作的,而是采用beamer制作的,文字风格和主题也是非常默认的风格~而顶部这个导航栏则是通过选用相应的beamer主题自动实现的,它会根据你的章节分配自动实现这样的小圆点。
例如上图这样,该页所属的节(section)的标题会重点突出,其他节会轻微透明;当前页面的圆圈会显示为实心,当前页面所属小节的圆圈会显示为更深的颜色。
引子(二)&是什么?
我最开始接触到beamer是在数模美赛培训期间,想要将论文用类似ppt的手段展示出来,但是把latex写的内容转化成ppt也很麻烦,于是就搜到了beamer这个东西。
当然latex公式要想在ppt中完美显示也有很多手段,我首推IguanaTex(A Free LaTeX Add-In for PowerPoint on Windows and Mac)。
如果你本地安装了texlive/mactex,那么这个工具属于是即插即用,直接把论文的公式复制过来就可以了。生成的公式是矢量格式,对每个元素都可以更换颜色等等,很方便。虽然界面是丑了点~
写着写着就歪了~
言归正传,beamer可以直接把你的论文转化为一个适合演示的pdf,放在大屏上展示你的成果~
beamer 是LATEX 的一个文档类(class), 它可用于创建用投影机(projector) 放映的演示稿(presentations),也可用于制作幻灯片(slides)。
Beamer的基本结构
Beamer和一般创建的latex文件类似,都有导言区和正文组成。
导言区
在beamer的导言区中通常包括以下部分:
-
文件分类,即
beamer
或者ctexbeamer
(引入中文的相关环境)。在documentclass
中我们还可以加上对应的选项来采用需要的页面比例(aspectratio)、字体大小(如10pt)、输出版本(如handout会取消所有叠层,输出可供分发的版本)。例如在我提供的模版中,1
\documentclass[aspectratio=169,xcolor=table,10pt]{ctexbeamer}
其中
xcolor=table
是为表格颜色提供的选项。 -
主题 🆕:beamer包含五类主题,这五个主题相互影响,与先后放置排列顺序甚至也有影响。这里不加赘述,具体每种主题能够带来什么样的效果可以参考beamer手册第III部分。在提供的模版中,我新定义了一种SEU颜色主题,其中定义了SEUcolor(东大绿), SEUyellow, SEUdarkyellow, SEUred, SEUblue五种颜色,在模版中主要采用东大绿、东大黄作为主色调,其余颜色大家可以按需选用。
- 演示主题
\usetheme
- 颜色主题
\usecolortheme
- 字体主题
\usefonttheme
- 内部主题
\useinnertheme
- 外部主题
\useoutertheme
- 演示主题
-
标题、作者、单位、日期——这一部分基本与article一致。我们可以采用
[]
,{}
设置简略、完整版本的文本,用于封面和页脚。 -
相关的字体设置、宏包应用
- 字体相关设置可以参考“LaTeX札记(四):字体”的相关设置。在模版中,中文主字体为采用“更纱黑体”、斜体采用“霞鹜文楷”;西文主字体采用computer modern的非衬线体与cmbright的组合,以满足公式中字体同样统一;并且定义了
\XWWK
直接调用“霞鹜文楷”,方便霞鹜文楷与直立英文文本并排。 - 其余相关图片、表格、画图等宏包
- 字体相关设置可以参考“LaTeX札记(四):字体”的相关设置。在模版中,中文主字体为采用“更纱黑体”、斜体采用“霞鹜文楷”;西文主字体采用computer modern的非衬线体与cmbright的组合,以满足公式中字体同样统一;并且定义了
-
其余常用command定义
-
标题页面 🆕:封面页面定义、节标题页面定义、小节标题页面定义——其中,节标题、小节标题的实现方式其实就是在每个出现节、小节的开头位置,新增一个页面,显示相应的内容,大家可以按需调整。
-
封面标题——加入了校标、院徽,四牌楼校区的楼
1
2
3
4
5
6
7
8
9
10
11
12\titlegraphic {
\begin{tikzpicture}[overlay,remember picture]
\node[above left] at (current page.332){
\includegraphics[width=.6\textwidth]{seu_building.png}
};
\node[above=0.5cm] at (current page.220){
% \includegraphics[width=.25\textwidth]{logo_color_green.pdf}
\includegraphics[width=.13\textwidth]{SEUlogo.pdf}
\includegraphics[width=.13\textwidth]{RADIOlogo.pdf}
};
\end{tikzpicture}
} -
节标题——修改了编号样式(改为“Part I”的样式,虽然这不是真的part),增加了该节出现的小节标题。注意这里小节标题的放置比较丑陋,暂时没有想到更好的居中对齐方式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23\AtBeginSection[]{
% \let\insertsectionnumber\relax
\let\sectionname\relax
\frame{\sectionpage}
}
\renewcommand{\thesection}{\Roman{section}}
\setbeamertemplate{section page}
{
\begin{centering}
{\usebeamerfont{section title} \textsc{Part} \thesection}
\vspace{10pt}
\begin{beamercolorbox}[sep=12pt,center,colsep=-4bp,rounded=true,shadow=true]{part title}
\usebeamerfont{section title}\bfseries\insertsection\par
\end{beamercolorbox}
\vspace{20pt}\begin{minipage}
{.35\linewidth}
\tableofcontents[sectionstyle=hide,subsectionstyle=show/shaded/hide]
\end{minipage}
\end{centering}
} -
小节标题(暂未启用)——表示该小节在整体结构中的位置
1
2
3
4
5
6
7
8
9\AtBeginSubsection[]
{
\begin{frame}[shrink]
\centering
\tableofcontents[sectionstyle=show/shaded,subsectionstyle=show/shaded/hide]
\end{frame}
}
-
正文
正文部分可以采用\part
, \section
, \subsection
来进行划分章节,同时也存在对应的*
版本用于不编号,在目录中不进行显示。
-
注意到论文答辩一般是一个比较简短的演示文稿,所以一般不会用到
\part
来区分。对于不同的part会一般分别采用新的tableofcontent目录,包括顶部或侧边的导航栏,即导航栏和目录中只显示当前part的节。 -
\section
(节)的标题一般会显示在导航栏中,其样式根据主题区分。 -
\subsection
(小节)的标题根据不同的主题可能会显示/不显示在导航栏或页面顶端。对于论文答辩一般也不会区分到小节,所以可用可不用~ -
此外,类似于latex论文中,我们可以采用
[]
,{}
设置长短标题,用于目录等不同用途,在beamer中同样有这样的操作。例如:1
\section[SIP上行 -- 迭代接收机设计]{上行链路叠加导频系统的迭代接收机设计}
那么,在导航栏中会显示
[]
中的短标题,减少字数,更突出重点;而在使用tableofcontent(目录)、节标题页中会显示{}
的长标题。
而对于每一个页面我们可以采用frame
环境进行包裹,作为一个页面。例如:
1 | \begin{frame} |
或者更简单的写作
1 | \begin{frame}{该页面标题} |
如果我们把“页面标题”留空,则可以得到一个不带标题的页面。注意如果我们如果需要在页面中包含代码等环境,可能需要采用脆弱环境,即加上[fragile]
选项。
为了在标题栏放置校标、院徽,并将标题文字加粗,我在模版中定义了\frametitleb
命令,只要将上述的\frametitle{该页面标题}
修改为\frametitleb{该页面标题}
就能够获得下面的标题文本效果。
1 | \newcommand{\frametitleb}[1]{\frametitle{\makebox[\framewidth]{\bfseries #1 \hfill\raisebox{-1.5ex}{\includegraphics[height=1.1\baselineskip]{logo.pdf}}}}} |
Beamer进阶
在第一部分中,我们主要介绍了beamer的结构,但是总体看来除了frame,其余貌似和article/book类型没什么区别啊🤨~ 下面就介绍一些beamer更独有的用法,让beamer更加“演示”!
Beamer独特的用法
列表有了“新外观”(有序列表enumerate
、无序列表itemize
、描述description
)
我们再将上面出现的图搬下来,可以看到无序列表、有序列表的圆点、序号变成了一种更加立体的风格,这个主要是Warsaw主题提供的特性。我们也可以采用别的主题获得不同的效果,例如Berlin主题提供平面方块点的风格,Hannover主题提供平面圆点的风格…… 更本质其实是内部主题(inner theme)起了作用,上面三个主题分别对应于rounded、rectangles、circles三种内部主题。
而描述环境则是将前面悬挂部分的问题设置为了结构色。
通过“颜色”进行突出强调(结构色structure
、警告色alert
)
在slides中,我们通常利用颜色进行突出强调。于是在beamer中我们有一些通过颜色来表示内容轻重缓急的方式。
- 结构色
\structure
:在手册中表述为“给定的文本被标记为(marked as)结构(structure)的一部分,也就是说,它有助于观众了解演示稿的结构。” 在给出模版的效果就是把显示的文字颜色变化为东大绿(即结构色),其余常见模版中一般是默认的蓝色。使用方法:\structure{text}
- 警告色
\alert
:在手册中表述为“给定的文本高亮显示,典型地显示为红色。” 使用方法:\alert{text}
- 半透明
shade
:这并不是一个能够在全文使用的颜色效果,而是当采用叠层等设置时候,会将当前不在视觉重点的内容采用半透明的方式显示。一般在目录设置中会使用。此外,利用\setbeamercovered{transparent}
,列表项会以一定的透明度被隐藏。
此外,我们可以通过重定义\emph
更加突出重点。例如,我定义了两种强调的方式:
1 | \renewcommand{\emph}[1]{{\XWWK \structure{#1}}} |
于是,\emph
利用结构色的霞鹜文楷突出强调,而非原本的正文色斜体;\emphbf
则进一步利用结构色的粗非衬线体突出强调。
“包裹起来”的块环境block
beamer中定义了用于排版文本的三种块环境,块环境包含标题(可省略)、正文。
- 常规块:
\begin{block}{标题} 正文 \end{block}
——采用结构色配色 - 举例块:
\begin{exampleblock}{标题} 正文 \end{exampleblock}
——一般是黄色 - 警告块:
\begin{alertblock}{标题} 正文 \end{alertblock}
——一般是红色
当我们对标题的{}
留空即可得到只包含正文的块,这可能帮我们生成一个具有整行宽度的框,放置一些需要突出的内容,例如在模版中图名即放置在不带标题的举例块中,并配合一个小图标。
但是,我并不推荐在全文中滥用块环境,每段文本都用块包裹,这会显得非常割裂。
此外,在beamer中定理、定义、证明等其实也都是采用的块环境,只是进行了一定的预先定义。
使Beamer更“演示”的一些方式
帧、叠层、动画
在beamer中页面被按照帧(frame)进行放映,而在一帧中可以创建多个叠层(overlay)分段展示,实现类似于powerpoint中一页内容中分部分显示的效果。(ps:我觉得帧这个概念有点奇怪,甚至觉得后面那个叠层才是实际帧的意思😂)
由于论文答辩也不需要非常多的动画,这里只介绍三个主要的叠层相关操作:
-
只是“暂停”:pause 提供了一个最简单的分段显示帧的方法。如果在帧的某处放置
\pause
,其后的内容会在下一slide才出现。这个\pause
能够在一个帧中多处使用。此外,该命令还可以跟着一个选项表示在该帧第几个slide后才显示,即\pause[数字]
。 -
列表中
-
如果你想让列表的每一项按顺序出现可以在
\begin{itemize}
后面加上选项[<+->]
,具体含义参见手册吧。即:1
2
3
4
5\begin{itemize}[<+->]
\item 从第1个slide开始显示直到这一帧结束。
\item 从第2个slide开始显示直到这一帧结束。
\item 从第3个slide开始显示直到这一帧结束。
\end{itemize} -
如果你想让不同项目在不同slide上面显示。可以看下下面的案例:
1
2
3
4
5
6\begin{itemize}
\item<1> 只在第1个slide显示。
\item<2-> 从第2个slide开始显示直到这一帧结束。
\item<2-4> 在第2到4个slide上显示,其余不显示。
\item<3,5> 在第3和第5个slide上显示,其余不显示。
\end{itemize} -
还有一些类似于高亮等的用法,请参考手册
-
-
大段文字图片——这种情况主要出现在如下情况:“一个帧顶部的内容始终是一致的(例如一个图),下半部分对这个图的不同模块进行说明(每次的文本说明都会占足整个下半部分)”,但是如果我采用不同的帧表现顶部图像位置可能会动来动去,同时会占用三个页码。此时,采用
overprint
环境就是非常好的选择。
- 采用overprint环境,对每个叠层的内容放置一个onslide。
1
2
3
4
5
6
7
8
9
10\begin{frame}{heading}
{不变的图片或者文字内容}
\begin{overprint}
\onslide<1>
Some text for the first slide.\\
Possibly several lines long.
\onslide<2>
Replacement on the second slide.
\end{overprint}
\end{frame} - 该方案有两个已知的弊端:①使用handout模式时候不好处理,毕竟只有一个页面但要放置三段文本是不可行的,只能有所取舍;②此时overprint生成的区间的高度是偏高的,采用内容左右分布时候,minipage不能采用m选项,否则对齐可能有问题。
- 采用overprint环境,对每个叠层的内容放置一个onslide。
对于动画这个问题,已经在该系列的第一辑“LaTeX札记(一):插入动画”中分享过啦~但是值得注意的是,动画对于PDF阅读器的要求很高,需要使用Adobe Acrobat获得较好的放映体验!
图文、多列并排minipage
为了能够有效利用横向空间,beamer中一般需要多列并排。我通常选用minipage环境这样能够更方便的对齐基线、调整列宽。
1 | \begin{minipage}[m]{.47\linewidth} |
在上面的例子中给出了一个左图右文的图文并排案例,两个块垂直居中对齐,可以获得类似上图的效果。大家可以自行调整minipage的宽度、对齐选项等实现符合需求的效果。
公式注解
在beamer中为了更清晰、简要地说明公式,我们可以使用annotate-equations
宏包为公式添加漂亮的注释。具体地使用说明请参考“Github上的使用说明”。同样给一个例子~
1 | \begin{equation*} |

参考文献使用脚注而非尾注
在beamer中一般不会把使用的参考文献放置在整个beamer的最后,这样不太方便查看,而作为页面的脚注放在帧的下方。这里也给出一个使用案例:
-
首先,为了将beamer脚注的样式调整为“[1]”的格式,我们再导言区重定义脚注的编号方式:
\renewcommand{\thefootnote}{[\arabic{footnote}]}
-
其次,使用时为了能够更加清晰突出文献可以写作
1
\emph{(Chu \textit{et al}., 2022)}\footnote{\fontsize{7pt}{7pt}\selectfont M. Chu, A. Liu, V. K. N. Lau, C. Jiang, and T. Yang, “Deep Reinforcement Learning based End-to-end Multi-user Channel Prediction and Beamforming,” \textit{IEEE Trans. Wirel. Commun.}, pp. 1–1, 2022, doi: 10.1109/TWC.2022.3183255.}
显示效果如下:
“演讲者备注”的实现——笔记页
在beamer中,能不能像powerpoint中一样在答辩的时候偷偷看“小抄”呢?答案是肯定的,只是对于PDF放映软件的要求可能比较高,所以对于不能使用自己设备的场景可能要谨慎使用beamer的双屏放映功能。
笔记页的制作和放置
-
添加笔记:在beamer中,可以简单的利用
\note
命令为每个页面添加笔记(放置在frame环境内部即可),如果是section、maketitle之类的页面可以放在在后面。-
在笔记中可以包含公式、列表等等一系列的环境~
-
如果页面有多个叠层,可以为不同叠层创建不同的笔记!例如:
1
2
3\note<1->{第1个slide对应笔记页显示的内容,直到该帧的最后一个slide}
\note<1>{只在第1个slide对应笔记页显示的内容}
\note<2>{第2个slide对应笔记页显示的内容,直到该帧的最后一个slide}这一点相比在powerpoint的演讲者备注中手动标注这句“(点)”一下鼠标的方式,优雅多了~读完这部分的~~“小抄”~~(笔记),跳到下一页可以接着念,即使它属于同一个帧。
-
在
\note
命令后面加上一个选项[item]
,于是添加的不同笔记会被作为一个有序列表放置在笔记页,对于上述“大段文字图片的叠层”场景非常适用。
-
-
显示笔记&页面布局——beamer默认是不显示笔记页的内容的,需要在导言区加入相应的
\setbeameroption
- 一页正文,一页笔记:
\setbeameroption{show notes}
- 将笔记页放置在第二屏:
\setbeameroption{show notes on second screen=right}
。给定该选项后,会创建slides的双屏版本。可以指定在在左侧(left)、右侧(right)、底部(bottom)、顶部(top)放置第二屏幕显示笔记页。 - 仅展示笔记:
\setbeameroption{show only notes}
- 一页正文,一页笔记:
-
将笔记页放置在第二屏时可能存在的问题与相应解决方式:
-
正文页面内容显示有问题,如文本不显示、字体颜色显示为白色、图片加载有问题等
——【解决方案】在导言区加上对应代码:1
2
3
4
5
6
7\makeatletter
\def\beamer@framenotesbegin{% at beginning of slide
\usebeamercolor[fg]{normal text}
\gdef\beamer@noteitems{}%
\gdef\beamer@notes{}%
}
\makeatother -
原本应该出现在笔记(正文)页面超链接出现在了正文(笔记)页,导致超链接位置出错,影响放映时的跳转
——【解决方案】使用下列patch,即在导言区引入\input{beamer-notes-patch}
,在文件夹目录上放置“lrtfm”提供的beamer-notes-patch.tex,重新编译两遍,即可获得正确的超链接位置。
-
双屏放映
我也试用了知乎和网络推荐的不少软件(比如Présentation和pdfpc尝试了,之前常用的Adobe Acrobat和Sumatra PDF没找到双屏放映的方式),最后用下来感觉还是pympress最好用。虽然刚打开beamer会有点卡卡的,但是实际播放、显示笔记页、激光等等的功能还是非常完善的。同时在Windows和Mac上都可以使用~
其他应用
poster制作
先咕咕咕着…… 给个小案例,来自之前科技论文写作的一个作业