我正在尝试使用类放置一个带有子图的图形acmsmall
。编译时出现以下错误:
Package caption Warning: Unsupported document class (or package) detected, (caption)
usage of the caption package is not recommended. See the caption package documentation for explanation.
) (/usr/local/texlive/2012/texmf-dist/tex/latex/caption/subcaption.sty
! LaTeX Error: Command \subcaption already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help. ...
l.57 \caption@gobble}}
%
?
当我跳过它时,会出现另一个错误。
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}
?
如果我继续,我会得到很好的图形,但我想知道发生了什么。我从来没有遇到过将子图插入其他文档类(例如 IEEEtran)的问题。
以下是 MWE:
\documentclass[prodmode,acmtecs]{acmsmall}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{0.5\textwidth}
\includegraphics{acmsmall-mouse.pdf}
\caption{A subfigure}
\end{subfigure}%
\begin{subfigure}[b]{0.5\textwidth}
\includegraphics{acmsmall-mouse.pdf}
\caption{Another subfigure}
\end{subfigure}%
\caption{Several figures}
\end{figure}
\end{document}
是否有一种创建子图的首选方法acmsmall
?
答案1
acsmall.cls
并使用了从此处下载的图像:http://www.acm.org/publications/latex_style/v2-acmsmall.zip
该类acmsmall
定义了一个\subcaption
命令,因此您可以使用minipage
s 而不是subfigure
s 来实现您的目的。
梅威瑟:
\documentclass[prodmode,acmtecs]{acmsmall}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\begin{minipage}[b]{0.5\textwidth}
\includegraphics{acmsmall-mouse.pdf}\\
\subcaption{A subfigure}
\end{minipage}%
\begin{minipage}[b]{0.5\textwidth}
\includegraphics{acmsmall-mouse.pdf}\\
\subcaption{Another subfigure}
\end{minipage}%
\caption{Several figures}
\end{figure}
\end{document}
输出:
答案2
该类acmsmall
正在定义一个命令\subcaption
,该命令将产生 Karl 的答案中所示的标题。如果您不严格遵守该模板,并且想要使用来自包的正常标签subcaption
,则必须取消定义该命令。这样做的原因可能是您想引用一些subfigure
(\ref{fig:a}
),正如有人问到的那样这里。
这可能看起来如下:
% arara: pdflatex
\documentclass[prodmode,acmtecs]{acmsmall}
\let\subcaption\relax
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{hyperref}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{0.49\textwidth}
\includegraphics{acmsmall-mouse.pdf}
\subcaption{A subfigure}\label{fig:a}
\end{subfigure}
\begin{subfigure}[b]{0.49\textwidth}
\includegraphics{acmsmall-mouse.pdf}
\subcaption{Another subfigure}\label{fig:b}
\end{subfigure}
\caption{Several figures}\label{fig:1}
\end{figure}
\end{document}
请注意,这并非提供该模板的编辑器的想法。在进行这样的调整之前,您应该先咨询编辑器。也许编号的子标题不适合整体设计。在这种情况下,您必须参考类似as you can see in Figure~\ref{fig:1} (left pic.)
答案3
好吧,看来我无法评论 LaRiFaRi 的答案,所以我在这里写下... LaRiFaRi 的答案无法正常工作。我不知道为什么,但我只能通过添加包来使其工作hyperref
。以下是代码:
\documentclass[prodmode,acmtecs]{acmsmall}
\let\subcaption\relax
\usepackage{caption}
\usepackage{subcaption}
\usepackage{graphicx}
\usepackage{hyperref} %WHY is that ?
\begin{document}
\begin{figure}
\begin{subfigure}[b]{0.49\textwidth}
\includegraphics{acmsmall-mouse.pdf}
\subcaption{A subfigure}\label{fig:a}
\end{subfigure}
\begin{subfigure}[b]{0.49\textwidth}
\includegraphics{acmsmall-mouse.pdf}
\subcaption{Another subfigure}\label{fig:b}
\end{subfigure}
\caption{Several figures}\label{fig:1}
\end{figure}
\end{document}
生成的图像如下:
答案4
事实证明,包括hyperref
还有一个效果:我可以使用
\begin{minipage}
...
\subcaption{...}
...
\end{minipage}
无需在任何地方明确使用子图环境。