CSP_Sept
2022-02-08 14:01:07
本文不允许任何形式的转载,除非得到作者 CSP_Sept 的许可。
beamer 是 LaTeX 提供的一种制作演示文档的工具,目前国内似乎没有一篇比较完备的原创手册。
所以想写一篇。
感谢 StudyingFather(详见「参考文献 3」)让我知道了 beamer 这个类。
感谢离散小波变换°给了我诸多支持与帮助。
还有网上诸多博客的作者,这里无法一一列出他们的名字,在这里一并表示衷心的感谢。
2022 年 10 月 1 日更新:在 TeXLive2022 环境下除了中文标点更加美观外,对下面的展示没有区别。
本文默认在 TeXLive 2021,Windows 10 环境下生成演示文档,pdf 打开工具为 SumatraPDF。
读者请保证自己在导言区调用了如下宏包:
\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 环境外的部分。
我们考虑下面的导言代码:
\documentclass[table]{beamer}
\usepackage[UTF8, noindent]{ctexcap}
\usetheme{Szeged}
\usecolortheme{beaver}
第一行表示该文档是 beamer 类型,第二行保证了该文档能正常显示中文,第三四行设置了演示文档的主题。
主题可在 Beamer Theme Matrix 自由组合,你也可以自己编写主题,但这超出了我们的讨论范围。
\title{Your title}
\author{Your name}
\institute{Your team}
\date{Your date}
data 留空默认为生成文件的当天的日期。
也可以使用 \and
和 \inst
命令,前者用于分开多位作者,后者用于分开多个组织。
在 document 环境中,加入如下代码:
\frame{\titlepage} % 生成标题页
\begin{frame} % 生成目录页
\frametitle{目录}
\tableofcontents
\end{frame}
\begin{frame} % 插入空白页
\frametitle{Something} % 一页的标题
Something
$x^n+y^n=z^n$
\end{frame}
键入上述代码并运行,得到下面的效果:
我们看到这里的公式很丑,怎么解决呢?
考虑在导言区加入如下代码(二选一):
\usefonttheme[onlymath]{serif}
\usefonttheme[math]{serif}
有如下效果:
可以看到,onlymath 仅设置了公式字体,而 math 设置了全局字体,我们在下面的展示中默认开启 math 选项。
我们可以在每页演示文档(下称一个 frame 环境及其产物为「帧」)外加入 \section
等命令,使用方法和效果与普通文档相同。
可以利用 \alert
命令把文字调为亮红色,或使用 \emph
命令将文字调为斜体。
beamer 同样支持 theorem、lemma、proof、corollary、example 等环境,但不建议直接使用,因为在国内的演示文档中过多中英文混杂不甚美观。
我们在上面给出了目录代码。
\begin{frame}
\frametitle{目录}
\tableofcontents
\end{frame}
你可以选择加入 [pausesections]
选项,这样就可以把目录进行分帧展示。
也可以在导言区加入如下代码:
\AtBeginSection[]{
\begin{frame}
\frametitle{Contents}
\tableofcontents[currentsection]
\end{frame}
}
这样会在每个部分的开头显示目录,并将会高亮当前部分标题。
\pause
命令可以让内容分多次展示。
\begin{frame}
A \pause
B
\end{frame}
上述代码中,B 会在 A 后出现。
接下来我们将在 itemize
或 enumerate
环境中应用分层规格,阅读下列内容之前,请读者确保自己知道该环境的基本语法。
我们考虑下面代码:
\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}
运行后,以上内容分三张展示,
以上只是个例子,尖括号内可以有如下四种类型:
在 \only
命令或 \uncover
命令中同样可以使用分层规格。
但需要注意的是,\only
命令会导致前后高度不同,在帧环境中,可以添加 [t]
选项。
上面(1.1)中提到,不建议直接使用 theorem 等环境,但如何利用好呢?我们有个解决方案。
我们可以在以上环境的基础上进行更改,在导言区键入以下代码:
\newtheorem{euler}[theorem]{欧拉定理}
其中 [theorem]
是可选选项。
接下来我们在帧环境内输入:
\begin{euler}
如果正整数 $n$ 和整数 $a$ 互质,那么就有
\[
a^{\varphi(n)}\equiv1\pmod n
\]
\end{euler}
效果:
在 columns
环境中调用 column
环境,用法同普通文档。
\begin{columns}
\begin{column}{.5\linewidth}
\end{column}
\begin{column}{.5\linewidth}
\end{column}
\end{columns}
这个示例中,把整个页面分成了左右等宽的两列。
使用如下代码:
\begin{thebibliography}{1}
\bibitem{书籍 A}[Sept, 2022]
CSP\_Sept.
\newblock 一本好书。
\newblock \emph{Hanx}, 2022.
\end{thebibliography}
注意到环境内的
在调用该文献时使用命令 \cite{}
,
我们同样可以改变参考文献前的图标种类,考虑加入如下代码:
\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
命令前置的内容与名称的含义。
在帧环境中开启 [fragile]
选项,即可使用 lstlisting
或 verbatim
环境进行代码插入。
我们也可以使用 \alert
命令,搭配分成规格,进行多次显示并分别高亮,不过此时需要 semiverbatim
环境。
\begin{semiverbatim}
namespace Sept{
\alert<3->{int plus(int a, int b)}\{
return a + b;
\}
int a, b;
\}
\end{semiverbatim}
在上面这份示例中,plus 函数一行在第三张幻灯片时被显示为亮红色。
在上面我们介绍了 \setfonttheme
命令美化公式字体,此外我们可以使用 \setbeamercolor
命令设置其他 beamer 字体。
语法如下:
其中 future 有如下类型:
调用 beamer 字体语法:
有时我们需要把讲义分发给读者或自己打印,此时我们需要普通的文档。但我们又懒得重新写文档,此时可以使用如下方法:
\documentclass
中的类型改为 article
或 book
(不推荐使用 book
)。beamerarticle
。这样我们就可以得到一份我们非常熟悉的普通文档。
并不十分推荐这种方法。
我们把 \documentclass
的方括号里的内容改为 handout
。由于我们需要打印,所以需要在导言区插入如下代码:
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}[a4paper, border shrink=5mm]
这样就会在一个页面里显示 2 张幻灯片,也可以用
我们考虑如下超链接添加方式(在 article 环境下注意调用 hyperref 宏包):