我正在尝试使用subcaption
,但尝试这样做时beamer
收到一系列错误消息。这不会发生在文档类中。这是一个 MWEsubcaption.sty
article
\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
的版本caption
,subcaption
beamer
是再次兼容,因此问题中的错误不会出现,并且subcaption
可以与一起使用beamer
。
回答旧版本caption
subcaption
因为在加载时发现compatibility
布尔选项为真,所以产生了错误消息,并且包含以下行:caption
subcaption.sty
\caption@AtBeginDocument{\caption@ifcompatibility{%
\caption@Error{%
The `subcaption' package does not work correctly\MessageBreak
in compatibility mode}}{}}
这会触发错误。您可以使用选项来防止此错误compatibility=false
(caption
并祈祷(见下文)),如以下示例所示:
\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}
评论
一个非常普遍的误解是,不应在figure
和table
环境中使用beamer
(所谓的理由是“它们可能会产生会飘走的物体”之类的)。事实并非如此;beamer
内部会停用浮力,因此使用它是完全安全的figure
,table
如果你真的需要在演示文稿中提供字幕。
部分12.6 图表手册中beamer
清楚地解释了这一点:
您可以使用标准 LaTeX 环境,方式
figure
与table
通常使用它们的方式大致相同。但是,任何放置指定都将被忽略。图形和表格会立即插入环境开始的位置。如果它们太多而无法容纳在框架中,您必须手动将它们拆分到其他框架中或使用该allowframebreaks
选项。