文章目录
近期需要使用 beamer 制作一个会议 oral 的 PPT,感觉 beamer 相比于传统的 PPT 显得更学术,且看上去简洁大气。简要记录一下学习笔记。
Beamer 学习笔记
目前只适用于纯英文的模版,大部分内容译自 Overleaf-Beamer。
最基础的通用模版(纯英文)
\documentclass{beamer}
\usetheme{Boadilla} % 可以写不同的 theme
\title{My Presentation}
\subtitle{Using Beamer}
\author{Joe Bloggs}
\institute{University of ShareLaTeX}
\date{\today}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\end{document}
可以在文档的开头将字体大小(例如 17pt)作为参数传递给 beamer 类:
\documentclass[17pt]{beamer}
。
如何添加 logo
\logo{\includegraphics[width=xxx]{Logo.png}} % 在 \begin{document} 之前,{} 内也可以是文字
注意:logo 的位置取决于主题,如果只想在 title 页面显示 logo,可以用 \titlegraphic{}
而非 \logo{}
。
如何添加 outline
用 \tableofcontents
命令创建目录。当添加或删除章节和子章节时目录会自动更新。用法如下:
\begin{frame}{Outline}
\tableofcontents % \tableofcontents[hideallsubsections] 可以隐藏子章节
\end{frame}
也可以在每个章节前创建一个重复的目录。这样可以突出当前章节并淡化其他章节。这个功能可以用 \AtBeginSection
命令和在 \tableofcontents
命令中指定 [currentsection]
来实现。示例:
\AtBeginSection[]
{
\begin{frame}{Outline}
\tableofcontents[currentsection]
\end{frame}
}
如何创建列表
列表可以用三个环境创建:\enumerate
、\itemize
和 \description
。用 \item
创建列表项。其中,
\itemize
用于创建无序列表,列表项前会有圆点。
可以通过
\setbeamertemplate
命令改变列表项的形状。
\setbeamertemplate{itemize items}[default]
为默认形状,ball
为圆形,triangle
为三角形,circle
为圆圈,square
为正方形
\enumerate
用于创建有序列表,默认情况下,每个列表项前会有递增的阿拉伯数字和点号(例如“1.” 和 “2.”)。
同样可以通过
\setbeamertemplate{enumerate items}[circle]
命令改变列表项的形状。
\description
用于定义术语或解释缩写。用方括号给 \item
命令提供术语。如:
\begin{description}
\item[Term 1] Explanation 1
\item[Term 2] Explanation 2
\end{description}
如何创建图表
图表的创建和 LaTeX 中一样,例子如下:
% Tables in beamer
\begin{frame}{Simple table in beamer}
\begin{table}
\begin{tabular}{| c | c | c |}
\hline
No. & Name & Age \\
\hline \hline
1 & John T & 24 \\
2 & Norman P & 8 \\
3 & Alex K & 14 \\
\hline
\end{tabular}
\caption{Name and age of students}
\end{table}
\begin{figure}
\includegraphics[scale=0.5]{xx.png}
\caption{XXX}
\end{figure}
\end{frame}
如何创建列(column)
列可以用 columns
环境创建。在这个环境中,可以放置多个 column
环境,每个 column
环境创建一个新的列,也可以用 \column
命令创建新的列。例子如下:
% Multicolumn frame in beamer
\begin{frame}{Two columns frame in beamer}
\begin{columns}
% Column 1
\begin{column}{0.5\textwidth}
Text here! Text here! ...
\end{column}
% Column 2
\begin{column}{0.5\textwidth}
\includegraphics[scale=0.5]{Beamer-Logo.png}
\end{column}
\end{columns}
\end{frame}
如何创建块(block)
可以用 block
环境创建块。这些块可以是三种类型:警告块、示例块和定理块。
标准块用于演示中的一般文本。它是蓝色的,可以用如下方式创建:
% Blocks in beamer
\begin{frame}{Blocks in beamer}{}
\begin{block}{Block 1}
This is a simple block in beamer.
\end{block}
\end{frame}
警告块的目的是突出显示并引起注意。这个块用于显示警告或禁止。这个块的默认颜色是红色。可以用如下方式创建:
% Blocks in beamer
\begin{frame}{Blocks in beamer}{}
\begin{alertblock}{Block 2}
This is an alert block in beamer.
\end{alertblock}
\end{frame}
示例块用于突出显示示例,它的默认颜色是绿色,可以用如下方式创建:
% Blocks in beamer
\begin{frame}{Blocks in beamer}{}
\begin{exampleblock}{Block 3}
This is an example block in beamer.
\end{exampleblock}
\end{frame}
定理块用于显示数学公式、定理、推论和证明。这个块的颜色是蓝色。例子如下:
% Blocks in beamer
\begin{frame}{Math related blocks in Beamer}{Theorem, Corollary and Proof}
\begin{theorem}
It's in \LaTeX{} so it must be true $ a^2 + b^2 = c^2$.
\end{theorem}
\begin{corollary}
a = b
\end{corollary}
\begin{proof}
a + b = b + c
\end{proof}
\end{frame}
如何添加按钮(略)
关于 title 页
以 Boadilla 模版为例:
\title[]{}
中,[]
内容显示在整个模版的底部中间(所谓的短标题),{}
为正式的标题。
\author[]{}
中,[]
内容显示在整个模版的底部左边,{}
为正式的作者。
\institute[]{}
中,[]
内容显示在整个模版的底部左边作者旁边(一般是机构/学校的简写,显示的时候会加个括号),{}
为完整的机构。
\date[]{}
中,[]
内容显示在整个模版的底部右边,{}
为正式的日期。
使用例子如下:
\title[About Beamer] %optional
{About the Beamer class in presentation making}
\subtitle{A short story}
\author[Arthur, Doe] % (optional, for multiple authors)
{A.~B.~Arthur\inst{1} \and J.~Doe\inst{2}}
\institute[VFU] % (optional)
{
\inst{1}%
Faculty of Physics\\
Very Famous University
\and
\inst{2}%
Faculty of Chemistry\\
Very Famous University
}
\date[VLC 2021] % (optional)
{Very Large Conference, April 2021}
\logo{\includegraphics[height=1cm]{overleaf-logo}}
一些其他的 effect
pause 命令
通常在做演示时,我们会想要逐步显示幻灯片的部分内容。最简单的方法是使用 \pause
命令。例如,在列表中的每个条目之前输入 \pause
命令,可以逐点显示列表:
\begin{frame}
\frametitle{List}
\begin{itemize}
\pause
\item Point A
\pause
\item Point B
\begin{itemize}
\pause
\item part 1
\pause
\item part 2
\end{itemize}
\pause
\item Point C
\pause
\item Point D
\end{itemize}
\end{frame}
Overlays
pause
命令很有用,但不够灵活。为了获得更多的灵活性,可以使用 overlay。可以在命令名后的尖括号中添加到兼容的命令中。例如,我可以将它们添加到列表结构中的 item
命令中:
\begin{frame}
\frametitle{More Lists}
\begin{enumerate}[(I)]
\item<1-> Point A
\item<2-> Point B
\begin{itemize}
\item<3-> part 1
\item<4-> part 2
\end{itemize}
\item<5-> Point C
\item<6-> Point D
\end{enumerate}
\end{frame}
尖括号中的数字告诉 LaTeX 项目应该出现在哪些幻灯片上。例如,在这个列表中,我们告诉每个列表项它应该首先出现在哪个幻灯片上,然后使用破折号告诉它们在幻灯片中的所有后续幻灯片上出现。下面是一个更复杂的 overlay 的例子:
\item<-2,4-5,7>
此命令使项目出现在幻灯片 1、2、4、5 和 7 上。
有一些命令可以让我们在文本上使用 overlay。主要的一个是 \onslide
命令,可以配置为实现一些不同的结果:
\begin{frame}
\frametitle{Overlays}
\onslide<1->{First Line of Text}
\onslide<2->{Second Line of Text}
\onslide<3->{Third Line of Text}
\end{frame}
为了使文本在未指定的幻灯片上透明,我们使用 \setbeamercovered
命令,并在我们想要它生效的代码上方输入关键字 transparent
:
\setbeamercovered{transparent}
请注意,这个命令将影响其后的所有代码,所以如果我们想在演示的后面将其改回默认设置,我们可以简单地再次使用相同的命令,但关键字为 invisible
。
invisible
命令与 visible
命令完全相反。only
命令与 visible
命令相同,只是它不占用任何空间。这意味着如果我们将 onslide
命令更改为 only
命令,并且去掉 overlay 规范中的破折号,下面三行文本将依次出现在幻灯片的同一位置:
\begin{frame}
\frametitle{Overlays}
\only<1>{First Line of Text}
\only<2>{Second Line of Text}
\only<3>{Third Line of Text}
\end{frame}
主题
不同的主题有不同的样式,可以在 \usetheme{}
中选择。
从组成来看,theme 可以分为:
- color theme
- font theme
- inner theme
- outer theme
且可以分别设置。例如,采用 \usecolortheme
设置颜色主题,\usefonttheme
设置字体主题,\useinnertheme
设置内部主题,\useoutertheme
设置外部主题。
注意这个命令是放在
\usetheme{}
之后。
\usefonttheme{}
是 self-descriptive 的。可用的主题有:structurebold、structurebolditalic、structuresmallcapsserif、structureitalicsserif、serif 和 default。也可以导入其他字体包。
inner theme 决定了标题和部分页面的样式,itemize、enumerate、description、block、theorem 和 proof 环境,以及图、表、脚注和参考文献条目的样式。例如,我们还可以加载矩形内部主题。我们可以使用 \useinnertheme
命令来实现。这使得我们的目录和列表使用矩形作为项目符号:
outer theme 决定了页眉和页脚、标志、侧边栏和帧标题的样式。我们可以使用 \useoutertheme
命令指定这个主题。如果使用的是 Warsaw,默认情况下用的是 shadow 外部主题,但是如果想要将顶部导航栏更改为树状结构,我们可以将其更改为 tree 主题。
handouts
在在文档类命令中的方括号中添加关键字 handout
。然后使用 pgfpages
包来在一页上打印多个幻灯片。加载包后,使用 \pgfpagesuselayout
命令。在大括号中,指定我们想要在一张纸上有多少幻灯片。在方括号中,指定纸张大小和边框收缩:
\documentclass[handout]{beamer}
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
如果我们想在一张纸上放四个幻灯片,我们可以简单地将 2 改为 4,然后在方括号中添加 landscape 关键字:
\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm,landscape]
问题及其解决办法
问题:Package rerunfilecheck: File .out has changed. (rerunfilecheck) Rerun to get outlines right (rerunfilecheck) or use package `bookmark’.
解决办法:\usepackage{bookmark}
学习资源和参考资料
- Overleaf-Beamer 官网
- Beamer Class User Guide for version 3.71.
- 中译版 Beamer 用户指南 3.24.
- 官方 beamer 模版,可以在 github 上找到,或者在本地位置 /usr/local/texlive/2023/texmf-dist/doc/latex/beamer 找到(Mac 系统);对于特定场景的模版(如 20 min 会议模版),位于 beamer/solutions/conference-talks 位置下