LaTeX幻灯片提纲

2022-03-18 16:21:31 浏览数 (1)

【注】笔记来自《LaTeX入门》——刘海洋。更多细节内容可以参考官方用户手册。

代码语言:javascript复制
texdoc beamer

1. 简介

由于现代的 LaTeX 系统主要以 pdf 文件为输出方式,因此它可以用来生成各种专门的电子文档,诸如书籍、文章、幻灯片等。

1.1 工具

LaTeX 中专门用来制作幻灯片的工具有很多,诸如:

  • beamer 文档类
  • powerdot 文档类
  • prosper 文档类
  • pdfslide 宏包
  • ppower4 宏包
  • pdfscreen 宏包

1.2 beamer 文档类

目前最流行的 LaTeX 幻灯片工具为 beamer 文档类,它以页面(被称为「帧」)为基本组织单位,提供丰富的功能选项和许多预定义的风格主题,支持各种编译程序。因此,本文也使用 beamer 文档类来制作幻灯片提纲。

2. 幻灯片提纲

2.1 代码框架

使用 beamer 文档类与编写一般的 LaTeX 文档的代码框架是一样的:

代码语言:javascript复制
documentclass{beamer}
begin{document}
% ...
end{document}

如果要在 beamer 文档类中使用中文,则可以使用 ctexctexcap 宏包,前者只引入必要的中文,后者还会翻译图表等环境名称。为了方便起见,本文使用 ctexcap 宏包。

代码语言:javascript复制
usepackage[UTF8,noindent]{ctexcap}

【注】引入 ctexcap 宏包时使用 noindent 参数表示取消段前缩进,因为与一般文档不同,在幻灯片的段落中通常不使用首行缩进。

2.2 幻灯片风格

修改 beamer 幻灯片格式的基本方式是使用主题。beamer 提供了 20 多种不同的幻灯片风格,可以在导言区使用 usetheme 命令自主选择:

代码语言:javascript复制
usetheme{PaloAlto}

beamer 提供的官方预定义主题风格可参考此处,对于更多非官方预定义主题风格可参考此处。

【注】有趣的是,beamer 文档类提供的官方预定义主题风格大多是以作者游历的一些地点命名的。

实际上,beamer 的主题是由不同的内部主题、外部主题、色彩主题、字体主题等组合而成的,因此可以分别使用各自对应命令来选择各自的主题:

  • useinnertheme:选择内部主题
  • useoutertheme:选择外部主题
  • usecolortheme:选择色彩主题
  • usecolortheme:选择字体主题
2.2.1 内部主题

内部主题主要控制的是标题页、列表项目、定理环境、图表环境、脚注等一帧以内的内容格式。预定义的内部主题有:

  • default
  • circles
  • rectangles
  • rounded
  • inmargin
2.2.2 外部主题

外部主题主要控制的是幻灯片顶部尾部的信息栏、边栏、图表、帧标题等一帧以外的内功格式。预定义的外部主题有:

  • default
  • infolines
  • miniframes
  • smoothbars
  • sidebar
  • split
  • shadow
  • tree
  • smoothtree
2.2.3 色彩主题

色彩主题控制各个部分的色彩。预定义的色彩主题有:

  • default
  • albatross
  • beaver
  • beetle
  • crane
  • dolphin
  • dove
  • fly
  • lily
  • orchid
  • rose
  • seagull
  • seahorse
  • sidebartab
  • structure
  • whale
  • wolverine
2.2.4 字体主题

字体主题则控制幻灯片的整体字体风格。预定义的字体主题有:

  • default:无衬线字体
  • professionalfonts:不对字体有特别的设置,需要使用另外专门的宏包进行设置
  • serif:衬线字体,此时最好选择较大的字号和较粗的字体
  • structurebold
  • structureitalicserif
  • structuresmallcapsserif

【注】structure 开头的几个字体主题主要是对 beamer 文档类中的几个结构有特别设置。

2.2.5 自定义风格

beamer 使用一种模板机制,将幻灯片的不同内容组件格式抽象为模板代码、模板字体、模板色彩,模板代码是实现组件的具体代码。在 beamer 中,提供了许多自定义的设置命令让用户自定义幻灯片风格:

  • setbeamercolor:设置组件的色彩
  • setbeamerfont:设置组件字体
  • setbeamertemplate:设置组件模板的具体实现代码

比如对于 itemize 列表,可以设置:

代码语言:javascript复制
setbeamertemplate{itemize items}[circle]
setbeamercolor{itemize item}{fg=black}
setbeamercolor{itemize/enumerate body}{fg=gray}
setbeamerfont{itemize/enumerate body}{family=rmfamily}

这样就设置了列表项的符号是一个黑色的圆形,同时类标得内容是 rmfamily 的灰色文字。

对于简单的样式修改通过组合现有的主题和背景插图来完成,但对 beamer 进行更详细的样式定制时,字体、色彩、模板名目繁多,可能需要参考在安装目录下 theme/ 目录中的模板源代码。beamer 的每一个主题对应一个后缀为 .sty 的主题文件,使用命令 usethemeuseinnertheme 等切换主题,其实就是在载入主题文件。可以查看官方手册,定制自己的主题文件:

代码语言:javascript复制
texdoc beamer

2.3 幻灯片内容

2.3.1 帧

beamer 中,帧用 frame 环境得到。一帧里面的内容可以使用各种常见的 LaTeX 命令和环境。在每一帧当中,内容有一定的水平边距,并且整体垂直居中显示。幻灯片每一帧通常都有标题,甚至还有小标题:

代码语言:javascript复制
begin{frame}
    frametitle{标题}
    framesubtitle{小标题}
    这是简单的一帧
end{frame}
% 标题和小标题还可以有下面更简洁的方式
begin{frame}{标题}{小标题}
    这是简单的一帧
end{frame}

beamer 重定义了大量 LaTeX 环境,使它们的格式更适合在幻灯片中显示,比如列表环境和定理类环境,但它们的使用方式和一般的文档没有区别。

代码语言:javascript复制
begin{frame}
    frametitle{古中国数学}
    framesubtitle{定理发现}
    中国在 3000 多年前就知道勾股数的概念,比古希腊更早一些。

    《周髀算经》的记载:
    begin{itemize}
        item 公元前 11 世纪,商高答周公问:
        begin{quote}
            勾广三,股修四,径隅五。
        end{quote}
        item 又载公元前 7--6 世纪陈子答荣方问,表述了勾股定理的一般形式:
        begin{quote}
            若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。
        end{quote}
    end{itemize}
end{frame}
2.3.2 首页

幻灯片首页也是 beamer 中的一帧,其显示内容也是要在帧环境中设置。但首页又往往和其它页不一样,需要显示整个幻灯的标题、小标题、作者、学院、日期、标题图形等。beamer 在导言区为首页提供了显示相对应内容的命令,在首页帧中需要通过使用 maketitle 或者 titlepage 使得这些内容显示到首页帧中。

代码语言:javascript复制
title{杂谈勾股定理}
subtitle{数学史讲座之一}
author{BlueHeart}        
institute{九章学堂}
date{today}
begin{document}
    begin{frame}
        maketitle % 等价于 titlepage
    end{frame}
    % ...
end{document}
2.3.3 分节

和一般文档类一样,在 beamer 中可以使用 sectionsubsectionsubsubsection 以及 part 命令对幻灯片分节,然后使用 tableofcontents 命令产生目录。目录页也是帧,需要在目录帧中通过使用 tableofcontents 才能产生目录并将其显示到目录帧中。

代码语言:javascript复制
begin{frame}
    frametitle{目录}
    tableofcontents
end{frame}

part 命令本身不产生标题,但 beamer 提供了一个 partpage 命令,它和 titlepage 命令类似,可以在一帧中产生文档某部分的标题。一个完整的演讲报告 beamer 文档一般控制在几十帧的篇幅,使用 partsectionsubsubsection 的命令进行分节足以。但如果希望将所有很多次的演讲报告内容放进同一个单独的文件,则可以使用 lecture 命令进行更高一层的内容划分。

代码语言:javascript复制
lecture{杂谈勾股定理}{gougu} % 两个参数分别表示「讲座标题」和「讲座标签」

lecture 命令本身并不产生任何标题和效果,beamer 提供 insertlecture 命令向文档中插入 lecture 的标题。还可以通过 AtBeginLecture 命令在每一讲前面都添加一帧,代替 maketitle

代码语言:javascript复制
% 导言区
AtBeginLecture{
    begin{frame}
        Large
        本周论题:insertlecture
    end{frame}
}

此外,lecture 的另一个用途是使用 includeonlylecture{<标签>} 来使文档编译时只输出选定标签的那一讲,这样通过修改标签就可以只使用一个文件来分别生成单独的幻灯片了。

2.3.4 目录

beamer 中的 tableofcontents 可以在可选参数中使用许多参数控制其格式:

  • tableofcontents[currentsection]:只显示当前一节的目录结构
  • tableofcontents[currentsubsection]:只显示当前一小节的目录结构

【注】以上参数设置在某些情况下是非常有用的,因为演讲时可能需要在每一节的开头都显示一下即将讲到的内容结构,因而每一节前面都应该有一个小目录,特别是缺少导航条显示分节标题的格式更是如此。

为了方便在每一节前面添加一个目录,beamer 还提供了 AtBeginSectionAtBeginSubsection 命令,它们的用法与 LaTeX 原有的 AtBeginDocument 命令功能类似,用来给每一节或每一小节前面增加一段代码(AtBeginDocument 命令在整个文档前面添加一段内容,主要用在宏包制作):

代码语言:javascript复制
% 导言区
AtBeginSection[]{  % 空选项[]表示 section* 前不加目录
    begin{frame}{本节概要}
        tableofcontents[currentsection]
    end{frame}
}
2.4.5 定理

beamer 文档类,已经与定义了许多定理类环境:

  • definitiondefinitions:定义
  • theorem:定理
  • corollary:推论
  • proof:证明
  • fact:事实
  • example:例子

除了上述预定义的定理类环境,还可以自定义定理环境:

代码语言:javascript复制
newtheorem{thm}{定理}
begin{frame}{现代叙述}
    begin{thm}[勾股定理]
        直角三角形斜边的平方等于两直角边的平方和。
    end{thm}
end{frame}
2.4.6 区块

类似定理环境的彩色框效果,beamer 还提供了其他的区块环境,可以用于强调一部分内容。beamer 提供了三种区块环境:

  • block
  • alertblock
  • exampleblock

它们除了使用的配色不同之外,用法和结果都大致相同:

代码语言:javascript复制
begin{frame}
    begin{block}{块标题}
        这是一个区块
    end{block}
end{frame}
2.4.7 图表

beamer 中使用图表和在一般文档中的语法并无区别。不过由于 beamer 是按帧组织内容的,位置固定,因此 figuretable 环境不再是浮动的环境。

代码语言:javascript复制
begin{frame}{古中国数学}{定理证明}
    有论者认为早在公元前 11 世纪商高即已证明勾股定理。完整的证明见于三国时(公元 3 世纪)赵爽对《周髀算经》的注释。
    begin{figure}
        centering
        includegraphics[height=0.4textheight]{xiantu.pdf}
        caption{赵爽的弦图可给出勾股定理的一个富于对称美的证明}
    end{figure}
end{frame}

除了标准的图表环境,beamer 还提供了一个 logo 命令,用于把一个较小的图表放在幻灯片的左上角落里,可以用它来放置校徽、公司商标等内容。logo 命令一般放在导言区:

代码语言:javascript复制
logo{includegraphics{logo.pdf}}

beamer 内部使用 pgf 宏包绘制定理边框、幻灯片按钮等图形。对于一些简单的数学图形,使用基于 pdftikz 宏包直接画图是最方便的,比如在绘制直角三角形:

代码语言:javascript复制
begin{frame}
    begin{center}
        begin{tikzpicture}[scale=0.5,font=small]
            draw[thick] (0,0) node[left] {$A$}
            -- (4,0) node[right] {$C$}
            -- (4,3) node[above right] {$B$} -- cycle;
            draw (3.5,0) |- (4,0.5);
        end{tikzpicture}
    end{center}
end{frame}

幻灯片中的表格务求简明清晰,可以考虑使用行色彩相间的彩色表格。xcolor 宏包通过加上 table 选项就可以实现给表格行加上颜色。由于 beamer 本身就会载入 xcolor 宏包,因此可以直接在 beamer 参数中设置:

代码语言:javascript复制
documentclass[xcolor=table]{beamer}
begin{frame}
    rowcolors{2}{blue!25}{blue!50}
    begin{tabular}{ccc}
        rowcolor{green}x & y & z \
        3 & 4 & 5 \
        5 & 12 & 13 \
    end{tabular}
end{frame}

其中,rowcolors{n}{color}...{color} 命令使用来表格除去首行外,连续 nnn 行的背景颜色设定,并以 nnn 为周期循环。而 rowcolor{color} 命令用来在表格中单独设置一行的背景颜色。

2.4.8 参考文献

beamer 中添加参考文献列表与一般文档的语法没有区别,不过与书面的文稿不同,在幻灯片中通常并不适合特别冗长的文献列表,列出的条目不宜过多,也不需要文献编号。因此,beamer 中的文献列表,文字排版比较宽松,列表前没有标题,默认格式也是没有编号的(因为幻灯片很难前后跳跃翻页,因此编号引用用途不大)。

代码语言:javascript复制
begin{frame}{参考文献}
    notice{Shiye}
    bibliography{math}
end{frame}

如果确实需要对文献进行引用,那么最好使用「作者,年代」的引用格式,避免完全不直观的数字编号可能造成的问题。

【注】beamer 的文献格式比较特殊,它并不支持 natbib 宏包及其对应的 .bst 文献格式。可以使用相对简单的 apalike 文献格式,它按照 APA 的格式,提供了基本的作者年代引用方式。biblatex 宏包与 beamer 没有明显的冲突,也可以使用。

代码语言:javascript复制
% 提供简单的作者年代引用格式
bibliographystyle{apalike}

2.4 幻灯片动态

2.4.1 覆盖

覆盖是最为基本的一种幻灯片效果,它是把同一帧幻灯片的不同内容按一定次序拆分成几页显示出来。利用覆盖可以让内容逐步显示,也可以让不同内容依次替代,产生类似动画的效果。

逐条显示是最为常用的覆盖效果,其基本命令是 pause,表示幻灯片在此处会停顿一下,在 pause 后面的所有内容会在 pdf 文件的下一页显示。对于目录帧,可以给目录命令加上选项使得目录在一项后面暂停。

代码语言:javascript复制
begin{frame}{目录}
    tableofcontents[pausesections]
end

更为一般的是 onslide,它可以指定内容在一帧中的第几步显示,使用 onslide 时「不显示的内容还占用原来的位置」。在 onslide 后面的尖括号中的内容就是覆盖步骤的设置。覆盖语法支持单个的步骤,也支持多个步骤和区间。

代码语言:javascript复制
begin{frame}
    onslide<1>{只有第一步}
    onslide<2->{第二步之后}
    onslide<1,3>{第一、三两步}
end{frame}

only 命令与 onslide 命令类似,不过 only 命令「在不显示的步骤没有额外的占位」,可以得到内容代替的效果。

代码语言:javascript复制
begin{frame}
    计数:only<1>{1}only<2>{2}only<3>{3}only<4->{4}

    onslide<5>数完了
end{frame}

onslideonly 命令还有许多变种,它们的效果都大同小异。

  • uncovervisibleonslide 大体相同,只是用不同的方式隐藏文字。
  • invisiblevisible 具有相反的效果。
  • alt 可以分别设置在指定步骤和步骤外的内容。
  • temporal 可以分别指定步骤与此步骤前后的内容。

【注】这种使用尖括号表示步骤的覆盖语法,实际上在 beamer 的很多命令和环境后面都可以使用,比如:

代码语言:javascript复制
% 加粗
begin{frame}
    textbf<3>{只在第三步加粗}
end{frame}
% 定理
begin{frame}
    begin{theorem}<2->
        第二步以后显示定理
    end{theorem}
end{frame}
% 列表
begin{frame}
    begin{itemize}
        item<1-> 开始显示
        item<3-> 最后显示
        item<2-> 然后显示
    end{itemize}
end{frame}

在覆盖语法中,使用 号就类似使用了 pause,这可以避免手工计数。连续使用多个 item< -> 就可以表示 item<1->item<2->item<3-> …… 的效果。此外,还可以在整个 enumerateitemize 环境后面加上 [< ->] 的可选项,相当于对每个 item 后面都使用了 < ->,非常方便:

代码语言:javascript复制
begin{frame}
    begin{itemize}[< ->]
        item 开始显示
        item 其次显示
        item 最后显示
    end{itemize}
end{frame}

structurealert 命令用于在指定的步骤设置高亮,前者使用幻灯片中结构的色彩,后者使用更鲜明的警告色彩(一般是红色)。它们也可以带上覆盖的语法:

代码语言:javascript复制
alert<2>{在第二步强调重要的内容}

此外,高亮命令可以作为覆盖语法的一部分,用在 item 等命令后面,这样既能控制条目何时显示,可以控制条目高亮:

代码语言:javascript复制
begin{itemize}
    item< -| alert@ > 公元前 6 世纪,毕达哥拉斯学派发现一个法则,可以构造直角三角形的边长;
    item< -| alert@ > 公元前 3 世纪,欧几里得《几何原本》使用面积法证明勾股定理。
end{itemize}
% 更简洁表达为
begin{itemize}[< -| alert@ >]
    item 公元前 6 世纪,毕达哥拉斯学派发现一个法则,可以构造直角三角形的边长;
    item 公元前 3 世纪,欧几里得《几何原本》使用面积法证明勾股定理。
2.4.2 活动对象和多媒体

beamer 中可以使用一些真正的动态演示功能,包括 pdf 动画、javascript 表单、多媒体对象等内容。不过,并非所有的 pdf 阅读器都支持这些动态功能。

pdf 动画是把动画内容分别画在许多页中,再通过 pdf 文件中自动快速翻页产生的效果。beamer 提供了 animateanimatevalue 命令生成动画。

  • animate<自动步进的步数>:定义自动步进的步数,指定的几步会迅速翻页。
  • animatevalue<起步,止步>{寄存器,起始值,终止值}:设置动画变量,变量是整数或长度寄存器,可以用于控制画面。
代码语言:javascript复制
newdimenxoffset
begin{frame}
    % 第一步是静止的,之后自动运动
    animate<2-10>
    animatevalue<1-10>{xoffset}{0cm}{5cm}
    hspace{xoffset}从左到右
end{frame}

beamer 本身的动画功能比较简单,如果要求更高,可以使用 animate 宏包在幻灯片中画出 pdf 动画来。animate 宏包的动画是嵌入在一个 pdf 页面内的,不需要自动翻页,并且通过 javascript 代码提供了更丰富的控制功能。

beamer 还支持 pdf 页面的动画切换效果,这些效果只在 pdf 文件全屏观看是时有效。比如,可以设置一帧中的第二步为页面从左边飞入:

代码语言:javascript复制
begin{frame}{动画切换}
    only<1>{旧内容}
    only<2>{新内容}
    transcover<2>
end{frame}

beamer 支持的 pdf 页面切换效果如下表:

命令

效果

transblindshorizontal

水平百叶窗

transblindsvertical

垂直百叶窗

transboxin

盒状收缩

transboxout

盒装展开

transcover

新页面飞入,覆盖旧页面

transdissolve

溶解

transfade

渐显

transglitter

闪烁(与溶解类似)

transpush

新页面推进,推走旧页面

transsplitverticalin

垂直收缩

transsplitverticalout

垂直展开

transsplithorizontalin

水平收缩

transsplithorizontalout

水平展开

transuncover

旧页面飞走,揭开新页面

transwipe

沿直线消除旧页面

beamer 的一个附属包 multimedia 可以用来在 pdf 幻灯片中嵌入视频、音频等多媒体信息。multimedia 提供视频的基本命令是 movie

代码语言:javascript复制
movie[可选项]{文字}{多媒体文件名}

比如,下面的代码可以用来播放 4:34:34:3 的 AVI 视频 foo.avi

代码语言:javascript复制
usepackage{multimedia}
% 导言区
% ……
begin{frame}
    % 自动播放,无显示内容
    movie[width=4cm,height=3cm]{Click to play}{foo.avi}
end{frame}

类似地,sound 命令用来在 pdf 幻灯片中插入音频:

代码语言:javascript复制
usepackage{multimedia}
% 导言区
% ……
begin{frame}
    % 自动播放,无显示内容
    sound[autostart]{}{foo.au}
end{frame}

【注】multimedia 的多媒体功能必须使用 pdfLaTeX 进行编译,无法使用 xeLaTeX 处理中文。

media9 宏包(其前身为 movie15,仅支持 pdfLaTeX)提供了比 multimedia 宏包更为强大的多媒体功能,可以嵌入 Adobe Reader 9 所支持的各类媒体和 3D 对象,并支持各种编译引擎和输出驱动,使用 xeLaTeX 可以用它来代替 multimedia

除了动画和多媒体信息,使用第三方宏包,还可以在 beamer 中添加更多的动态内容。tdclock 宏包使用 javascript 代码和 pdf 表单,可以在幻灯片中插入日期和时间,可以用来在演讲中计时:

代码语言:javascript复制
usepackage{tdclock}
begin{frame}
    当前时间:tdtime;已经过去时间:crono
end{frame}

不过 tdclock 宏包对 pdfTeX 支持最好,使用 xeLaTeX 会出现一些问题。

ocgtools 宏包提供了所谓可选内容块的功能,可以在幻灯片中添加一个可弹出的可选内容块。ocgtools 要求使用 pdfTeX,且同时要求安装 acrotex 包组件。

代码语言:javascript复制
usepackage{ocgtools}
begin{frame}
    % 点击公式会显示定理名称
    ocgminitext{$a^ b^2=c^2$}{Pythagoras Theorem}
end{frame}

3. 附录

3.1 学习资料

  • 《LaTeX入门》——刘海洋
  • 《The beamer class User Guide》——Tantau et al.
  • 《The beamer class User Guide》中译本——黄旭华

3.2 幻灯片实例

效果展示如下:

代码实现如下:

代码语言:javascript复制
documentclass[xcolor=table,hideothersubsections]{beamer}
usetheme{PaloAlto}
useinnertheme{circles}
useoutertheme{smoothbars}
usecolortheme{default}
usefonttheme{default}

setbeamertemplate{itemize items}[circle]
setbeamercolor{itemize item}{fg=black}
setbeamercolor{itemize/enumerate body}{fg=gray}
setbeamerfont{itemize/enumerate body}{family=rmfamily}

usepackage[UTF8,noindent]{ctexcap}
usepackage{tikz}

title{杂谈勾股定理}
subtitle{数学史讲座之一}
author{BlueHeart0621}
institute{九章学堂}
date{today}
begin{document}
    begin{frame}
        maketitle
    end{frame}

    section{目录}
        begin{frame}
            frametitle{目录}
            tableofcontents
        end{frame}

    section{勾股定理在古代}
        subsection{古希腊数学}
            begin{frame}
                frametitle{古希腊数学}
                勾股定理在西方称为毕达哥拉斯定理,古希腊数学家在 2000 多年前就已经发现并证明了它footnote{克莱因(2002).古今数学思想.上海科学技术出版社}。
            end{frame}
        
        subsection{古中国数学}
            begin{frame}
                frametitle{古中国数学}
                framesubtitle{定理发现}
                中国在 3000 多年前就知道勾股数的概念,比古希腊更早一些。

                《周髀算经》的记载:
                begin{itemize}
                    item 公元前 11 世纪,商高答周公问:
                    begin{quote}
                        勾广三,股修四,径隅五。
                    end{quote}
                    item 又载公元前 7--6 世纪陈子答荣方问,表述了勾股定理的一般形式:
                    begin{quote}
                        若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。
                    end{quote}
                end{itemize}
            end{frame}

            begin{frame}
                frametitle{古中国数学}
                framesubtitle{定理证明}
                有论者认为早在公元前 $11$ 世纪商高即已证明勾股定理footnote{曲安京(1998).商高、赵爽与刘徽关于勾股定理的证明.数学传播,20(3)}。完整的证明见于三国时(公元 $3$ 世纪)赵爽对《周髀算经》的注释。
                begin{figure}
                    centering
                    includegraphics[scale=0.45]{xiantu.pdf}
                    caption{赵爽的弦图可以给出勾股定理的一个富于对称美的证明}
                end{figure}
            end{frame}
    
    section{勾股定理在现代}
        subsection{现代叙述}
            begin{frame}
                frametitle{现代叙述}
                begin{theorem}{(勾股定理)}
                    直角三角形谢别的平方等于量直角边的平方和。
                    可以用符号语言表述为:设直角三角形 $ABC$,其中 $angle{C} = 90^circ$,则有
                    begin{equation}
                        AB^2 = BC^2   AC^2
                        label{eq:pythagorean}
                    end{equation}
                    begin{center}
                        begin{tikzpicture}[scale=0.5,font=small]
                        draw[thick] (0,0) node[left] {$A$}
                           -- (4,0) node[right] {$C$}
                           -- (4,3) node[above right] {$B$} -- cycle;
                        draw (3.5,0) |- (4,0.5);
                        end{tikzpicture}
                        end{center}
                end{theorem}
            end{frame}
        subsection{勾股数}
            begin{frame}
                frametitle{勾股数}
                满足式ref{eq:pythagorean}的整数称为勾股数。前面所说毕达哥拉斯学派得到的三元数就是勾股数。常见的勾股数如下表所示。

                rowcolors{2}{green!25}{green!50}
                begin{table}
                    centering
                    begin{tabular}{rrr}
                        rowcolor{blue!50} 直角边 $a$ & 直角边 $b$ & 斜边 $c$ \
                        3 & 4 & 5 \
                        5 & 12 & 13 \
                        7 & 24 & 25 \
                        8 & 15 & 17 \
                    end{tabular}
                    caption{较小的几组勾股数}
                    label{tb:pythagorean}
                end{table}
            end{frame}
end{document}

0 人点赞