Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

Beamer学习笔记

| Comments

这次的演讲全部用Beamer重做,除主文件,样式文件外,根据演讲的主题的不同,分成了好几个文件,编译成PDF后,一共128页,没有什么炫的技术,但是相比以前花了N多心思做的PPT,看上去要专业很多。
现在基本上能用[Beamer[做出我需要的简报了,也有一些学习的记录,贴出来和大家共享。

使用Beamer,首先需要申明文档类型为beamer,最简单的当然是 documentclass{beamer} 不过这样子的话,基本你编译不出PDF,即便能编译出来,那查看PDF时,也会报错。

它带来大量的可选参数,有些其实是必须的,特别是在中文环境下,我这里不再使用LaTeX-CJK宏,而是直接采取XeTeX方式编译,因此下面所讲,均是针对XeTeX-LaTeX环境编译的。 我目前学到的参数有下面这些

documentclass[dvipdfm,dvipsnames,xcolor=pdflatex,\
table,handout,draft,red,compress]{beamer}
  • %dvipdfm 是关键,否则要么编译通不过,要不生成的pdf无法打开
  • %xcolor=pdflatex 选项使得xcolor宏包可以使用,表示xcolor的颜色驱动选择
  • %dvipsnames 表示可以使用预定义的颜色名字,比如RoyaBlue
  • %table 是告诉xcolor宏包colortbl宏包需要加载
  • %xcolor 会自动加载,不需要手工显式调用
  • %handout 处理传单形式,加上这个参数后,overlay,也就是动画效果会去掉, 比如你逐项显式的内容,会在一个PDF页面上显示。
  • %draft 草稿模式,在撰写的过程中,可以加入这个参数,主要加快编译速度,不过在我使用的过程,也发现了一些问题。因为draft模式会省去头,尾和侧边栏,所以填写的地方显得大一些,当你按照这个宽度和高度撰写内容后,再去掉draft编译,就会发现很多内容看不到了,因为显示内容的面积变小了。
  • %red 显示指定页面头,尾或侧边栏的颜色
  • %compress尽量压缩侧边栏

接下来设定简报的风格,我用到了三个命令

\usepackage{beamerthemesplit}
\usetheme{Berkeley}
\usecolortheme{dolphin}

这些主题和颜色,你可以从$TEXMF/tex/latex/beamer/下找到,自带的主题还是比较多,不过我没有一一查看到底每一个主题是什么样子。 接着调用fontspec包,这是XeTeX所必须的,用来设定你需要的字体

\usepackage{fontspec}

下载你可以设置字体了,Beamer默认使用Sans family字体,因此你至少需要设定Sans family字体,我一般使用下面的命令:

\setsansfont{SimSun}

当然你还可以设定一些其他字体,比如罗马字体

\setromanfont{Times New Roman}

从别的地方还看到有下面的字体设置方法,不过我很少使用

设置字体时也可以直接用字体名,以下三种方式等同:

  • \setromanfont[BoldFont={黑体}]{宋体}
  • \setromanfont[BoldFont={SimHei}]{SimSun}
  • \setromanfont[BoldFont={“[simhei.ttf]”}]{“[simsun.ttc]”}

如果是撰写中文简报,还需要下面两行命令:

\XeTeXlinebreaklocale "zh"  % 表示用中文的断行
\XeTeXlinebreakskip = 0pt plus 1pt % 多一点调整的空间

如果没有这两行,编译出来的PDF会很丑,当然这其实和Beamer无关,是XeTeX的问题,只要使用XeTeX,不管是用哪种文档样式,只要涉及到中文,均需要使用上面两行命令。 现在可以开始撰写简报,首先使用我们熟悉的 title,author,date定义必要的信息。然后针对每一个幻灯片,Beamer使用

\begin{frame}
\end{frame}

来定义,几种绝大部分LaTeX的命令都可以使用。 当然”\begin{frame}”也可以带一些参数,我仅列出我使用到的

\begin{frame}[shrink=5]

当frame的内容不能在单个frame下存放时,就会把文字大小缩至少指定数的百分比,不建议使用这个参数。

\begin{frame}[< +- >]

[< +- >]会自动逐条显示内容,而不需要使用<1->,<2->这样的流水

\begin{frame}[fragile]  
\begin[containsverbatim]
\end{frame}

Beamer文档样式下,verbatim环境不能直接使用,需要用到上面两个参数之间的一个,为了找到这个参数,花了不少时间。 上面的情况,虽然可以使用verbatim环境了,但是如果在verbatim里使用中文还是看不到,需要使用到下面的命令:

\makeatletter
\defverbatim@font{sffamily} %如果使用roman字体族,将sffamily改成rmfamily
\makeatother

当一个frame过长时,会自动打破为成为多个frame,这个参数绝对有用,这个参数也花了我不少时间找到它。

\begin{frame}[allowframebreaks,allowdisplaybreaks]

上面这些是不太容易从Beamer的手册中找到,所以列了出来,其他的一些功能,比如怎么设置动态效果呀,怎么插入图片呀,都从手册上能找到,而且也和LaTeX基本相同。 另外,我在使用Beamer的过程中,还简单学会了用TiKZ画图,比如我要解释Linux文件系统布局图,类似下面这样:

"HFS layout"

就可以使用下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
\begin{tikzpicture}[auto,thick]
    ikzstyle{node}=%
[%
minimum size=10pt,%
inner sep=0pt,%
outer sep=0pt,%
%ball color=example text.fg,
% circle%
]

ode [node] {/} [-]
child {node [node] {root}
edge from parent node {}
}
child {node [node] {home}
child { node [node] {wgzhao} edge from parent node[swap] {}}
edge from parent node{}
}
child {node [node] {bin}
edge from parent node[swap]{}
}
child {node [node] {sbin}
edge from parent node{}
}
child {node [node] {usr}
child { node [node] {share} edge from parent node[swap] {}}
child { node [node] {lib} edge from parent node[swap] {}}
child { node [node] {include} edge from parent node[swap] {}}
child { node [node] {bin} edge from parent node[swap] {}}
child { node [node] {sbin} edge from parent node[swap] {}}
edge from parent node{}
}
child { node [node] {lib}
edge from parent node{}
}
child {node [node] {...}
edge from parent node{}
};

end{tikzpicture}

看上去很复杂,其实仔细看,逻辑比较清楚,基本上是用自然语言来告诉TikZ如何绘图,典型的UNIX哲学。

OK,上面差不多是我这段时间找到的比较有用的一些信息,我把这些单独保存在一个tex文件里,防止自己忘记某些指令后,又需要花费大量时间去寻找,最后,我提供这个tex,和大家分享。

example.tex.gz

Comments