使用 Beamer 制作字幕

使用 Beamer 制作字幕

我正在尝试使用subcaption,但尝试这样做时beamer收到一系列错误消息。这不会发生在文档类中。这是一个 MWEsubcaption.styarticle

\documentclass{beamer}

\usepackage{caption}
\usepackage{subcaption}

\begin{document}
\begin{frame}
\begin{figure}
  \begin{subfigure}[b]{.45\linewidth}
    \centering
    \caption{First subfigure}
    \label{fig:a}
    \textcolor{blue}{\rule{3cm}{3cm}}
  \end{subfigure}\hfill
  \begin{subfigure}[b]{.45\linewidth}
    \centering
    \caption{Second subfigure}
    \label{fig:b}
    \textcolor{blue}{\rule{3cm}{3cm}}
  \end{subfigure}\\
\caption{A figure}\label{fig:1}
\end{figure}
\end{frame}
\end{document}
Package caption Warning: \caption will not be redefined since it's already
(caption)                redefined by a document class or package which is
(caption)                unknown to the caption package.
See the caption package documentation for explanation.


! Package caption Error: The `subcaption' package does not work correctly
(caption)                in compatibility mode.

See the caption package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.7 \begin{document}

? 
! Emergency stop.
 ...                                              

l.7 \begin{document}

有小费吗?

答案1

更新caption版本 2015/09/17 v3.3-111

现在,由于软件包version 2015/09/17 v3.3-111的版本captionsubcaptionbeamer 再次兼容,因此问题中的错误不会出现,并且subcaption可以与一起使用beamer

回答旧版本caption

subcaption因为在加载时发现compatibility布尔选项为真,所以产生了错误消息,并且包含以下行:captionsubcaption.sty

\caption@AtBeginDocument{\caption@ifcompatibility{%
  \caption@Error{%
    The `subcaption' package does not work correctly\MessageBreak
    in compatibility mode}}{}}

这会触发错误。您可以使用选项来防止此错误compatibility=falsecaption并祈祷(见下文)),如以下示例所示:

\documentclass{beamer}
\usepackage[compatibility=false]{caption}
\usepackage{subcaption}

\begin{document}
\begin{frame}
\begin{figure}
  \begin{subfigure}[b]{.45\linewidth}
    \centering
    \caption{First subfigure}
    \label{fig:a}
    \textcolor{blue}{\rule{3cm}{3cm}}
  \end{subfigure}\hfill
  \begin{subfigure}[b]{.45\linewidth}
    \centering
    \caption{Second subfigure}
    \label{fig:b}
    \textcolor{blue}{\rule{3cm}{3cm}}
  \end{subfigure}\\
\caption{A figure}\label{fig:1}
\end{figure}
\end{frame}
\end{document}

然而,这可能会在beamer标题中产生不良结果;事实上,使用上述文档,您会收到警告

软件包标题警告:\caption由于给出了 (caption) 不支持的 (!) 软件包选项 `compatibility=false' (caption),因此强制重新定义。请参阅 caption 软件包文档以了解解释。

软件包caption文档也警告不要使用此选项:

但请注意,我们不建议也不支持使用此选项,因为之后可能会出现不良副作用甚至错误。(因此,您会收到有关此问题的警告。)

如果标题和副标题真的演示所需的,我认为更好的选择beamer是使用subfig用其caption=false选项代替caption/subcaption

\documentclass{beamer}
\usepackage[caption=false]{subfig}

\begin{document}

\begin{frame}
\begin{figure}
  \centering
  \subfloat[First subfigure\label{fig:a}]{\textcolor{blue}{\rule{3cm}{3cm}}}\quad
  \subfloat[Second subfigure\label{fig:b}]{\textcolor{blue}{\rule{3cm}{3cm}}}
  \caption{A figure}
  \label{fig:1}
\end{figure}
\end{frame}

\end{document}

在此处输入图片描述

评论

一个非常普遍的误解是,不应在figuretable环境中使用beamer(所谓的理由是“它们可能会产生会飘走的物体”之类的)。事实并非如此;beamer内部会停用浮力,因此使用它是完全安全的figuretable如果你真的需要在演示文稿中提供字幕。

部分12.6 图表手册中beamer清楚地解释了这一点:

您可以使用标准 LaTeX 环境,方式figuretable通常使用它们的方式大致相同。但是,任何放置指定都将被忽略。图形和表格会立即插入环境开始的位置。如果它们太多而无法容纳在框架中,您必须手动将它们拆分到其他框架中或使用该allowframebreaks选项。

相关内容