专栏文章

LaTeX beamer 类使用教程

科技·工程参与者 44已保存评论 46

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
46 条
当前快照
1 份
快照标识符
@mhz5rrhf
此快照首次捕获于
2025/11/15 01:55
4 个月前
此快照最后确认于
2025/11/29 05:24
3 个月前
查看原文
本文不允许任何形式的转载,除非得到作者 CSP_Sept 的许可。
0 前言\Large\textbf{0 }\textsf{前言}
0.1 写作目的\large\textsf{0.1 }\textbf{写作目的}
beamer 是 LaTeX 提供的一种制作演示文档的工具,目前国内似乎没有一篇比较完备的原创手册。
所以想写一篇。
0.2 感谢\large\textsf{0.2 }\textbf{感谢}
感谢 StudyingFather(详见「参考文献 3」)让我知道了 beamer 这个类。
感谢离散小波变换°给了我诸多支持与帮助。
还有网上诸多博客的作者,这里无法一一列出他们的名字,在这里一并表示衷心的感谢。
0.3 凡例\large\textsf{0.3 }\textbf{凡例}
2022 年 10 月 1 日更新:在 TeXLive2022 环境下除了中文标点更加美观外,对下面的展示没有区别。
本文默认在 TeXLive 2021,Windows 10 环境下生成演示文档,pdf 打开工具为 SumatraPDF。
读者请保证自己在导言区调用了如下宏包:
LATEX
\usepackage{graphicx, graphics}
\usepackage{float, array, color, ctex}
\usepackage{amsmath, amssymb}
\usepackage{multicol, multirow, makecell, tabu, dcolumn}
\usepackage{fancyhdr, lastpage}
\usepackage{listings, xcolor}
\usepackage{xeCJKfntef}
\usepackage{fontspec, xunicode, xltxtra}
\usepackage{setspace}
\usepackage{geometry}
下文中「导言区」指在 document 环境外的部分。
1 基本使用\Large\textbf{1 }\textsf{基本使用}
1.1 基本编译方法\large\textsf{1.1 }\textbf{基本编译方法}
我们考虑下面的导言代码:
LATEX
\documentclass[table]{beamer}
\usepackage[UTF8, noindent]{ctexcap}
\usetheme{Szeged}
\usecolortheme{beaver}
第一行表示该文档是 beamer 类型,第二行保证了该文档能正常显示中文,第三四行设置了演示文档的主题。
主题可在 Beamer Theme Matrix 自由组合,你也可以自己编写主题,但这超出了我们的讨论范围。
LATEX
\title{Your title}
\author{Your name}
\institute{Your team}
\date{Your date}
data 留空默认为生成文件的当天的日期。
也可以使用 \and\inst 命令,前者用于分开多位作者,后者用于分开多个组织。
在 document 环境中,加入如下代码:
LATEX
\frame{\titlepage} % 生成标题页

\begin{frame} % 生成目录页
	\frametitle{目录}
	
	\tableofcontents

\end{frame}

\begin{frame} % 插入空白页

	\frametitle{Something} % 一页的标题
	
	Something
	
	$x^n+y^n=z^n$

\end{frame}
键入上述代码并运行,得到下面的效果:
我们看到这里的公式很丑,怎么解决呢?
考虑在导言区加入如下代码(二选一):
LATEX
\usefonttheme[onlymath]{serif}

\usefonttheme[math]{serif}
有如下效果:
可以看到,onlymath 仅设置了公式字体,而 math 设置了全局字体,我们在下面的展示中默认开启 math 选项。
我们可以在每页演示文档(下称一个 frame 环境及其产物为「帧」)外加入 \section 等命令,使用方法和效果与普通文档相同。
可以利用 \alert 命令把文字调为亮红色,或使用 \emph 命令将文字调为斜体。
beamer 同样支持 theorem、lemma、proof、corollary、example 等环境,但不建议直接使用,因为在国内的演示文档中过多中英文混杂不甚美观。
1.2 目录\large\textsf{1.2 }\textbf{目录}
我们在上面给出了目录代码。
LATEX
\begin{frame}
	\frametitle{目录}
	
	\tableofcontents

\end{frame}
你可以选择加入 [pausesections] 选项,这样就可以把目录进行分帧展示。
也可以在导言区加入如下代码:
LATEX
\AtBeginSection[]{
  \begin{frame}
    \frametitle{Contents}
    \tableofcontents[currentsection]
  \end{frame}
}
这样会在每个部分的开头显示目录,并将会高亮当前部分标题。
1.3 分层展示\large\textsf{1.3 }\textbf{分层展示}
1.3.1 分层\text{1.3.1 分层}
\pause 命令可以让内容分多次展示。
LATEX
\begin{frame}
	
	A \pause
	
	B
	
\end{frame}
上述代码中,B 会在 A 后出现。
1.3.2 分层规格\text{1.3.2 分层规格}
接下来我们将在 itemizeenumerate 环境中应用分层规格,阅读下列内容之前,请读者确保自己知道该环境的基本语法。
我们考虑下面代码:
LATEX
\begin{frame} 
	
	下面我们要证明没有最大的质数。
	
	\begin{itemize}
		\item<1-> 假设 $p$ 是最大的质数。
		\item<3-> 令 $q$ 表示 $2\sim p$ 中所有质数的乘积。
		\item<1-> 则 $q + 1$ 不会被这些质数中的任意一个整除。
		\item<2-> 但是 $q + 1$ 大于 $1$,因此可以被一些不在前 $p$ 个数中的素数整除。
	\end{itemize}
	
\end{frame}
运行后,以上内容分三张展示,<1->\texttt{<1->} 的意义是「从第 1 张开始」。
以上只是个例子,尖括号内可以有如下四种类型:
  1. x-x\texttt{-} 表示从第 xx 张开始显示。可以描述为区间 [x,n][x,n]nn 是该帧所需的幻灯片张数。
  2. -x\texttt{-}x 表示在第 xx 张以前显示。可以描述为区间 [1,x][1,x]
  3. x-yx\texttt{-}y 表示从第 xx 张开始显示,到第 yy 张结束,其中 xyx\le y。可以描述为区间 [x,y][x,y]
  4. 以上 3 种混合使用,用 ,\texttt, 隔开。可以描述为组成各部分的并集。
\only 命令或 \uncover 命令中同样可以使用分层规格。
但需要注意的是,\only 命令会导致前后高度不同,在帧环境中,可以添加 [t] 选项。
1.4 帧环境内的其他操作\large\textsf{1.4 }\textbf{帧环境内的其他操作}
1.4.1 更改环境\text{1.4.1 更改环境}
上面(1.1)中提到,不建议直接使用 theorem 等环境,但如何利用好呢?我们有个解决方案。
我们可以在以上环境的基础上进行更改,在导言区键入以下代码:
LATEX
\newtheorem{euler}[theorem]{欧拉定理}
其中 [theorem] 是可选选项。
接下来我们在帧环境内输入:
LATEX
\begin{euler}

如果正整数 $n$ 和整数 $a$ 互质,那么就有

\[
a^{\varphi(n)}\equiv1\pmod n
\]

\end{euler}
效果:
1.4.2 页面分栏\text{1.4.2 页面分栏}
columns 环境中调用 column 环境,用法同普通文档。
LATEX
\begin{columns}

	\begin{column}{.5\linewidth}
    
	\end{column}

	\begin{column}{.5\linewidth}

	\end{column}
		
\end{columns}
这个示例中,把整个页面分成了左右等宽的两列。
1.4.3 插入参考文献\text{1.4.3 插入参考文献}
使用如下代码:
LATEX
\begin{thebibliography}{1}
	\bibitem{书籍 A}[Sept, 2022]
	CSP\_Sept.
	\newblock 一本好书。
	\newblock \emph{Hanx}, 2022.
\end{thebibliography}
注意到环境内的 {}\texttt{\{\}} 可以乱填,也可以不填,但不能删除。
在调用该文献时使用命令 \cite{}{}\texttt{\{\}} 中填书名。
我们同样可以改变参考文献前的图标种类,考虑加入如下代码:
LATEX
\begin{frame}
	\begin{thebibliography}{}
		\begin{columns}
		\begin{column}{.5\linewidth}
			\beamertemplatebookbibitems\bibitem[Sept, 2022]{Sept2022}
			Sept.
			\newblock {\em beamer 教程}.
			\newblock 这是一个{\textbf{书籍}}图标.
			\beamertemplatearticlebibitems\bibitem[Sept, 2022]{Sept2022}
			Sept.
			\newblock {\em beamer 教程}.
			\newblock 这是一个{\textbf{论文}}图标.
			\beamertemplatetextbibitems\bibitem[Sept, 2022]{Sept2022}
			Sept.
			\newblock {\em beamer 教程}.
			\newblock 这是一个{\textbf{引文}}图标.
		\end{column}
		\begin{column}{.5\linewidth}
			\beamertemplatearrowbibitems\bibitem[Sept, 2022]{Sept2022}
			Sept.
			\newblock {\em beamer 教程}.
			\newblock 这是一个{\textbf{三角形}}图标.
			\beamertemplateonlinebibitems\bibitem[Sept, 2022]{Sept2022}
			Sept.
			\newblock {\em beamer 教程}.
			\newblock 这是一个{\textbf{球体}}图标.
			\end{column}
		\end{columns}
	\end{thebibliography}
\end{frame}
效果如下图:
请注意 \bibitem 前的各种命令及其作用效果,同时注意到我们应用了 14.2 中的页面分栏功能。
同时请读者注意 \beamertemplatearrowbibitems 命令前置的内容与名称的含义。
1.4.4 插入代码\text{1.4.4 插入代码}
在帧环境中开启 [fragile] 选项,即可使用 lstlistingverbatim 环境进行代码插入。
我们也可以使用 \alert 命令,搭配分成规格,进行多次显示并分别高亮,不过此时需要 semiverbatim 环境。
LATEX
\begin{semiverbatim}

namespace Sept{
    \alert<3->{int plus(int a, int b)}\{
        return a + b;
    \}
    int a, b;
\}

\end{semiverbatim}
在上面这份示例中,plus 函数一行在第三张幻灯片时被显示为亮红色。
1.4.5 更改字体\text{1.4.5 更改字体}
在上面我们介绍了 \setfonttheme 命令美化公式字体,此外我们可以使用 \setbeamercolor 命令设置其他 beamer 字体。
语法如下:\setbeamerfont{beamer-font name}{future}\backslash\texttt{setbeamerfont\{}⟨beamer\textit-font\ name⟩\texttt{\}\{}⟨\text{future}⟩\texttt\}
其中 future 有如下类型:
  1. size=\texttt{size=},设置该字体的大小,可用命令 \large\tiny 等。
  2. shape=\texttt{shape=}​,设置该字体的形状,可用命令 \itshape(斜体)、\slshape(正斜体)、\scshape(全大写)、\upshape 等。
  3. series=\texttt{series=},设置该字体的衬线属性,可用命令 \bfseries 等。
  4. family=\texttt{family=},设置该字体的家族。但并没有什么简单的用法。
  5. parent={parent list}\texttt{parent=\{}⟨\textit{parent list}⟩\texttt\},指定了该字体的父系字体(多个之间用 ,\texttt, 隔开),该字体会继承它所有父系字体的 future,除非后面的定义里进行了覆盖。但笔者实测表明,调用该字体时,需要在前面至少调用一次它的父系字体中的至少一个。
调用 beamer 字体语法:\usebeamerfont{beamer-font name}\backslash\texttt{usebeamerfont}\{⟨beamer\textit-font\ name⟩\texttt\}
1.4.6 编辑讲义\text{1.4.6 编辑讲义}
1.4.6.1 论文模式\text{\textit{1.4.6.1 论文模式}}
有时我们需要把讲义分发给读者或自己打印,此时我们需要普通的文档。但我们又懒得重新写文档,此时可以使用如下方法:
  • 新建 .tex 文档并将原 slide 文档内容复制进来。
  • \documentclass 中的类型改为 articlebook(不推荐使用 book)。
  • 调用宏包 beamerarticle
  • 删除、调整相关内容。
  • 编译运行。
这样我们就可以得到一份我们非常熟悉的普通文档。
1.4.6.2 讲义模式\text{\textit{1.4.6.2 讲义模式}}
并不十分推荐这种方法。
我们把 \documentclass 的方括号里的内容改为 handout。由于我们需要打印,所以需要在导言区插入如下代码:
LATEX
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}[a4paper, border shrink=5mm]
这样就会在一个页面里显示 2 张幻灯片,也可以用 4 on 1\texttt{4 on 1} 替换 2 on 1\texttt{2 on 1},当然此时需要调整纸张类型,例如改为 letterpaper 类型。
1.4.7 超链接\text{1.4.7 超链接}
我们考虑如下超链接添加方式(在 article 环境下注意调用 hyperref 宏包):
\href{链接}{链接文本}\backslash\texttt{href\{链接\}\{链接文本\}},该显示效果同 Markdown 的 [链接](链接文本)\texttt{[链接](链接文本)}
注:hyperref 宏包内的「按钮」功能同样值得研究,请读者自行查找资料学习。

以上便是 0~1 的全部内容,考虑到后面内容较为深入且前面部分已经涉及到了大部分常用内容,故不展开讲解下面的内容,完整版敬请期待。
X 参考文献\large\textbf{X }\textsf{参考文献}
  1. BEAMER 用户手册 原版 ver 3.65
  2. BEAMER 用户手册 中译版 V3.24
  3. [洛谷日报#229] 用 beamer 制作精美的演示文稿 - StudyingFather

评论

46 条评论,欢迎与作者交流。

正在加载评论...