LaTeX小技巧:简单实用的Beamer模板

发布时间:2022-03-29 阅读 5498

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:陈卓然 (中山大学岭南学院)
邮箱chenzhr25@mail2.sysu.edu.cn

编者按:本文主要参考自「Paul Goldsmith-Pinkham: beamer-tips」,特此致谢!


目录


Paul Goldsmith-Pinkham 教授在其「主页」上发布了一些使用 Latex 制作 Beamer 的小技巧,本篇推文将结合笔者使用 Latex 的经验来介绍如何做一份规范的学术论文幻灯片。关于 Latex 的下载和安装,大家可参考连享会推文「LaTeX小白入门:TeXLive 安装及使用」。关于 Beamer 的介绍,大家可参考连享会推文「连享会工具:Beamer 幻灯片制作」。

1. 可读性

在这一节,我们介绍的是如何有效地制作过渡幻灯片和提高行与行之间的间距,以增强幻灯片的可读性。首先,为了更好地分割节与节,作者建议我们使用 transitionframe 而不是 frame。为了使用此命令,我们首先需要在导言部分设置 transitionframe 的格式。例如作者就将 transitionframe 设置为如下格式:

\newenvironment{transitionframe}{
  \setbeamercolor{background canvas}{bg=yellow}
  \begin{frame}}{
    \end{frame}
}

之后,我们只需使用 \begin{transitionframe} 以及 \end{transitionframe} 即可。

\begin{transitionframe}
 \begin{center}
  {\Huge \textcolor{black}{Spacing and Words}}
 \end{center}
\end{transitionframe}

其次,为了增强每页幻灯片的可读性,作者建议我们使用 wideitemize 而不是简单的 itemize。因为这样可以自动增加行与行之间的间距,从而使得观众可以非常轻松地了解幻灯片想要表达的意思。具体而言,可以在一页幻灯片中先使用 wideitemize 分割几个大点,然后在每个大点中如果想插入若干个小点时,则可以使用 itemize,这样可以使得整个幻灯片错落有致。不信的话大家可以对比一下如下的两张幻灯片。

为了使用 wideitemize,大家需要在导言部分设置一下 wideitemize 的环境,具体如下:

\newenvironment{wideitemize}{\itemize\addtolength{\itemsep}{10pt}}{\enditemize}

如果你希望在节与节之间放置一个路标页,则可以使用如下的代码:

\AtBeginSection[]{%
\begin{frame}%
\frametitle{Roadmap of Talk}% 这是路标页的标题,大家可以酌情修改。
\tableofcontents[currentsection] %
\end{frame}%
}

然后每一节之前加上 \section{name},这样就可以在每一节前面有一个目录,如下所示:

2. 颜色

作者建议不要使用传统的红色和蓝色,因为这样对于色盲的人们不太友好。相反作者建议我们参照如下的颜色,设计自己的颜色。

比如说作者采用的颜色为:

\definecolor{blue}{RGB}{0,114,178}
\definecolor{red}{RGB}{213,94,0}
\definecolor{yellow}{RGB}{240,228,66}
\definecolor{green}{RGB}{0,158,115}

当然各位小伙伴们如果不喜欢作者提供的颜色,可以自己调制属于自己的颜色。至于幻灯片的背景颜色,可谓是仁者见仁智者见智了。不过一般在小型的学术会议上,最好还是使用白底黑字。下面是作者提供的一种背景颜色 (类似一种米白色)。

\definecolor{MyBackground}{RGB}{255,253,218}

如果说是在一个很大的礼堂里面做报告,比如说像苹果发布会一样的场合下,或许黑底白字也是一个不错的选择。如果有想要采用黑底白字,可以参考如下的代码:

{  \setbeamercolor{background canvas}{bg=black}
\begin{frame}
  \textcolor{white}{Example for an auditorium -- contrast is much higher}
\end{frame}
}

3. 字号、字体以及可读性

首先千万不要为了文字而改字号,因为往往此时你已经放置太多的文字了。但是对于敲进去的文字来说,我们会很容易注意到其字号大小,往往容易被我们忽略的是图形中的字号。比如说对比下面的两张图:

至于如何调整图形中的字号大小就要根据软件的不同而不同了,这里就不过多阐述了。其次值得一提的就是字体,各位小伙伴可以根据自己的喜好来调整幻灯片的字体,只需要在导言部分敲入如下代码即可。

\usepackage[default]{lato}

不过你需要选对正确的包,「LATEXFont」网站提供了 Latex 中几乎全部可用的字体。大家可以根据自己的需要点进去,按照它的指引选择自己喜欢的字体包来加载。

4. 图形

在 Latex 中调整图形的大小往往是一个很头疼的问题,作者给我们一个小窍门,使用如下代码:

\resizebox{0.7\linewidth}{!}{
      \includegraphics{figure1_effect.pdf}}

其中 \linewidth 是一个预先定义好的值,我们只需要调整前面的倍数即可。如无例外,将图形居中呈现总是一个不错的选择。但是在有些情况下面,我们可能更希望展现一幅图形的变化,这时候就需要像 PPT 中动画一样的效果。在幻灯片中实现这样的动画效果也并不困难,只需使用如下的一行代码:

only<slidenum>

<> 中的数字其实就是你希望图形出场的顺序。当然除了 only 之外,也有很多类似的动画命令,比如 \uncover\onslide\visible\invisible,具体内容大家可以参考这篇博客「用Beamer制作幻灯片 (卷三动画篇)」。

5. 表格

表格确实是一个非常棘手的问题,首先推荐大家使用「Table Generator」网站。但是这个网站只能做出标准的表格,对于学术上经常使用的三线表格,它是无能为力的。下面我来详细介绍一些如何制作三线表。首先,为调整好表格的位置和大小,我们采用如下的代码。注意:不要使用 table 环境,而是要使用 tabular

\makebox[\linewidth][c]{
\begin{tabular}{l cc ddd}
  results...
\end{tabular}

接下来为创建三线表,我们需要借助 booktabs,当然需要在导言部分引入 \usepackage{booktabs} 包。所谓三线表,顾名思义要求有三条线:上线 top line、中线 middlel line,以及下线 bottom line,这三条线往往要比表中其余的线粗。booktabs 包中提供了三条命令来绘制这三条线,分别为 \toprule\midrule\bottomrule。此外,为了绘制只跨表中几列的横线,需要 \cmidrule 命令。

尽管不是必须,但为了使三线表更为美观,我们最好在导言部分再引入一个包 dcolumn。这个包可以更加精细地去刻画列的特征,譬如说列的宽度等。对具体内容感兴趣的小伙伴们,可参考「The dcolumn package」。简而言之,我们应该在导言部分敲入如下代码:

\usepackage{dcolumn}
\newcolumntype{d}[0]{D{.}{.}{5}}

需要提及的一点是,如果有小伙伴想要跨列显示某些内容的话是不需要加载 multirow 包。但是如果希望能够跨行显示的话,那就需要在导言部分加载 multirow 包,即 \usepackage{multirow}。然后如何使用 multirow或者 multicolumn呢? 基本语法格式是:

%multi-column
\multicolumn{number of cols}{align}{text} % align: l(左),c(中),r(右)
%multi-row
\usepackage{multirow}
\multirow{number of rows}{width}{text}

注意在 \multirow 中间的括号 width 选项中,我们通常将其设定为 *,表示使用第三个 text 参数的自然宽度。更详细的解释,大家可以参考「Multi-column and multi-row cells in LaTeX tables」。为了让三线图能够顺利编译,我们需要在导言部分敲入如下几行代码:

\usepackage{booktabs}
% \usepackage{multirow}
\usepackage{dcolumn}
\newcolumntype{d}[0]{D{.}{.}{5}}

下面我将使用作者提供的一个例子来给大家做详细的介绍。比如说大家希望能够画出如下的精美的三线表:

\makebox[\linewidth][c]{
\begin{tabular}{lccddd} % 注意此处d就是按照先导部分设置dcolumn包的时候设定好的
  \toprule % 上线
  &  Mean at && \multicolumn{3}{c}{Difference-in-Differences Estimates} \\
  \cmidrule{4-6} % 此处表示绘制一条跨越4至6列的横线
  & $ t=-1 $ &&\multicolumn{1}{c}{1 Year} & \multicolumn{1}{c}{2 Years} & \multicolumn{1}{c}{3 Years} \\
  \cmidrule{2-2}  \cmidrule{4-6} %分别在绘制2列和4-6列的横线
  & \multicolumn{1}{c}{(1)}  &&\multicolumn{1}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)} \\
  \cmidrule{2-6} % 绘制跨越2-6列的横线
  Outcome 1 & 2.58 && 0.11 &0.08 & 0.12\\
  & (2.55) && (0.04) & (0.04) & (0.04)\\ 
  Outcome 2 & 60.90 && -0.73 &-1.13 & -1.58\\
  & (17.02) && (0.10) & (0.11) & (0.12) \\
  Outcome 3 & 18.98 && 0.77 &1.28 & 1.62\\
  & (6.74) && (0.13) & (0.13) & (0.12)\\ 
  \bottomrule % 下线
\end{tabular}
}

在一般在学术会议上仅仅有上述精美的三线图是不够的,你可能并不希望老师或评委们去看整张表的所有内容。但此时如果仅列示出两到三个单元格,又会显得很突兀。因此这时需要框出某些单元格,从而让老师们把目光集中在重点上面。比如说如下形式:

在 Latex 中实现这样的功能需要在导言部分引入 tikz 绘图包,并做出相应的设定。

\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,fit,tikzmark}
%%% TIKZ STUFF
\tikzset{   
        every picture/.style={remember picture,baseline},
        every node/.style={anchor=base,align=center,outer sep=1.5pt},
        every path/.style={thick},
        }
\newcommand\marktopleft[1]{%
    \tikz[overlay,remember picture] 
        \node (marker-#1-a) at (-.3em,.3em) {};%
}
\newcommand\markbottomright[2]{%
    \tikz[overlay,remember picture] 
        \node (marker-#1-b) at (0em,0em) {};%
}
\tikzstyle{every picture}+=[remember picture] 
\tikzstyle{mybox} =[draw=black, very thick, rectangle, inner sep=10pt, inner ysep=20pt]
\tikzstyle{fancytitle} =[draw=black,fill=red, text=white]
%%%% END TIKZ STUFF

然后在按照前文介绍绘制三线表的时候,在想要框住的若干数字的左上角数字前面加上 \marktopleft,同时在右下角数字后面加上 \markbottomright。最后在绘制完三线表之后加入如下的设定命令:

{\tikz[overlay,remember picture,inner sep=1pt]
\node[draw=cyan,rounded corners,fit=(marker-a1-a.north west) (marker-a1-b.south east)] {};}

其中你可以根据自己喜欢的颜色来调整框的颜色,更改 draw 的选项即可。可以看到为了做到框出表中某些单元格,还是有些繁琐的,不过建议大家将其作为模板,毕竟其中很多参数的设置也并不需要做过多的调整。下面我把绘制上表所需要的全部代码贴在下面供有需要的小伙伴参考借鉴。

% preamble
\usepackage{booktabs}
\usepackage{dcolumn}
\newcolumntype{d}[0]{D{.}{.}{5}}
% \usepackage{multirow} 如果要跨行才要用
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,fit,tikzmark}
%%% tikz的设定
\tikzset{   
        every picture/.style={remember picture,baseline},
        every node/.style={anchor=base,align=center,outer sep=1.5pt},
        every path/.style={thick},
        }
\newcommand\marktopleft[1]{%
    \tikz[overlay,remember picture] 
        \node (marker-#1-a) at (-.3em,.3em) {};%
}
\newcommand\markbottomright[2]{%
    \tikz[overlay,remember picture] 
        \node (marker-#1-b) at (0em,0em) {};%
}
\tikzstyle{every picture}+=[remember picture] 
\tikzstyle{mybox} =[draw=black, very thick, rectangle, inner sep=10pt, inner ysep=20pt]
\tikzstyle{fancytitle} =[draw=black,fill=red, text=white]
%%%% Tikz 设定完毕
% 制表所需
\makebox[\linewidth][c]{
\begin{tabular}{l cc ddd}
  \toprule
  &  Mean at && \multicolumn{3}{c}{Difference-in-Differences Estimates} \\
  \cmidrule{4-6}
  & $ t=-1 $ &&\multicolumn{1}{c}{1 Year} & \multicolumn{1}{c}{2 Years} & \multicolumn{1}{c}{3 Years} \\
  \cmidrule{2-2} \cmidrule{4-6}
  & \multicolumn{1}{c}{(1)}  &&\multicolumn{1}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)} \\
  \cmidrule{2-6}
  Outcome 1 & 2.58 && 0.11 &\marktopleft{a1}0.08 & 0.12\\
  & (2.55) && (0.04) & (0.04) & (0.04)\\ 
  Outcome 2 & 60.90 && -0.73 &-1.13 & -1.58\\
  & (17.02) && (0.10) & (0.11) & (0.12)\markbottomright{a1}{red} \\
  Outcome 3 & 18.98 && 0.77 &1.28 & 1.62\\
  & (6.74) && (0.13) & (0.13) & (0.12)\\ 
  \bottomrule
\end{tabular}
}
{\tikz[overlay,remember picture,inner sep=1pt]
\node[draw=cyan,rounded corners,fit=(marker-a1-a.north west) (marker-a1-b.south east)] {};}
\end{frame}

6. 一些其他的小技巧

对于很长很长的数学公式,我们最好使用不同的颜色并加一些注释,以方便读者更容易了解公式背后的意义。比如说使用 \textcolor{},在使用这个命令之前需要在导言部分加载 graphicx,即 \usepackage{graphics}

在 Latex 中也可以使用批注功能,只需在 frame 的环境之外,加上 \note 命令。当然在导言部分也需要调入 pgfpages 包。

\usepackage{pgfpages}
\setbeameroption{hide notes} % Only slide
%\setbeameroption{show only notes} % Only notes
%\setbeameroption{show notes on second screen=right} % Both

7. 附录

大家可以使用命令 \appendix 来开始附录,使用这一命令后幻灯片就可以重新开始计数。其使用方法很简单,就是先在导言部分加载 appendixnumberbeamer 包,然后在想要开始附录的上一页幻灯片结束的 \end{frame} 和附录第一页的幻灯片开始的 \begin{frame} 之间加上 \appendix 即可。具体关于 appendixnumberbeamer 的内容,大家可以参考「appendixnumberbeamer」。

最后一点小建议,大家在做学术报告的过程中或许需要将两张幻灯片之间做一个超链接,从而可以在需要的时候从某一页直接跳转到需要的那一页,然后再跳转回来。为实现这一功能,需要再 \begin{frame} 后面加入 [label = name] 的选项,即 \begin{frame}[label = name],然后在需要插入链接的地方使用如下命令:

\hyperlink{name}{object}

其中的 object 可以是一些文字,也可以通过 \beamergotobutton{} 来绘制一个类似按钮的小图案,点击之后就可以跳转。

8. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh latex 幻灯片, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh