Beamer的若干技巧

    2021/11/18 10:28 上午 标签: #编程

    打开自动全屏

    仅限Acrobat Reader有效.

    \hypersetup{pdfpagemode=FullScreen}
    

    不同章节前显示该章节目录页

    如果目录较长, 可能需要分两列显示, 为此, 首先在导言区(\begin{document}之前)添加以下宏包:

    \usepackage{multicol}
    

    然后, 在第一帧(标题页)之后插入如下命令:

    \begin{frame}{Outline} % 插入目录帧, 标题显示为Outline
    	\begin{multicols}{2}
     	\tableofcontents[sections={<1-7>}]
     	\end{multicols}
    \end{frame}
      \AtBeginSection[] {
      \frame<handout:0> {
      \frametitle{Outline}
      \begin{multicols}{2}
    	\tableofcontents[current,currentsubsection,hideothersubsections,sectionstyle=show/shaded,sections={<1-7>}]
      \end{multicols}
        }
        \addtocounter{framenumber}{-1}  %目录帧不计算页码
     }
    

    上述命令在不同章节目录下不会显示其他章节的子标题. 命令中的7可以根据自己章节总数的多少自由修改.

    左侧插图右侧解释

    有时候在用LaTeX做Beamer时, 需要在图片右侧插入相关解释, 为此可以使用columns环境, 具体做法如下:

    \begin{columns}
    \column{.6\textwidth}
    \begin{figure}
    \centering
    	\includegraphics[scale=0.21]{img.png}
    \end{figure}
    \column{.3\textwidth}
    解释文字.
    \end{columns}
    

    逐步显示内容

    最简单的方案是在需要分步显示的语句前插入\pause, 如此会显示下一个\pause之前的内容, 而后面的内容不显示.

    \begin{frame}
    直接显示内容1. 
    \pause
    显示内容2. 
    \pause
    再显示内容3.
    \end{frame}
    

    如果需要半透明显示后面的内容, 可以在\begin{document}之前插入如下语句:

    \setbeamercovered{dynamic} %% 令\pause后面的内容半透明
    

    其实还可以使用\onslide<序号>{显示内容}命令来控制内容输出的次序, 序号控制了同一帧中第几步显示, 如果序号后面有短线-, 那么在以后的步骤中将一直显示该步的内容.

    以上步骤的内容都将存在占位. 如果某些内容只需在某一步中显示一次, 不想像\pause\onslide命令一样在后续动画中占位, 可以使用\only<序号>{内容}命令.

    此外, 如果需要高亮强调某步的内容, 可以设置alert表示警告色彩(红色)显示, 也可以设置structure用Beamer主题颜色的色彩来高亮显示, 但警告色/高亮色会在下一步显示时变回普通样式, 如果需要长期显示, 可以直接使用颜色命令\color{颜色代码}标记该步的内容.

    \begin{frame}
    直接显示.
    \onslide<1> {只在第一步显示.} 
    
    \only<2>{只在第二步显示的内容, 下一步显示前消失.}
    
    \onslide<1,3> {第一、三步显示, 显示位置为第二步所在的位置. }
    
    \textbf<4> {第四步加粗显示.}
    
    \begin{itemize}
    \item<+-| structure@+>第一步及以后显示(Beamer主题颜色)
    \item<2-| alert@+> 第二步及以后显示(警告色)
    \item<3-> 第三步及以后显示
    \end{itemize}
    \end{frame}
    

    如果列表需要逐项显示, 那么可以使用如下简单的命令

    \begin{frame}
    \begin{itemize}[<+->]
    \item 开始显示
    \item 其次显示
    \item 最后显示
    \end{itemize}
    \end{frame}
    

    这其实等价于

    \begin{frame}
    \begin{itemize}
    \item<1-> 开始显示
    \item<2-> 其次显示
    \item<3-> 最后显示
    \end{itemize}
    \end{frame}