这与这个问题类似在回忆录类中使用子图还有这个同时使用 subfigure memoir 和 hyperref
可以将 memoir 类与 sucaption 包一起使用吗?我尝试过拆开这些ccaption
包,但是没有用。
\DisemulatePackage{ccaption}
\documentclass[a4paper,12pt,fleqn,openany]{memoir}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{.5\linewidth}
\centering\large A
\caption{A subfigure}\label{fig:1a}
\end{subfigure}%
\begin{subfigure}[b]{.5\linewidth}
\centering\large B
\caption{Another subfigure}\label{fig:1b}
\end{subfigure}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}
我收到以下错误
LaTeX 错误:命令 \subcaption 已定义。
LaTeX 错误:命令 \subfloat 已定义。
有任何想法吗?
更新
这不适用于hyperref
...添加 \usepackage{hyperref} 会导致编译错误。
因此,新的问题是,是否可以将 memoir 类与 sucaption 和 hyperref 包一起使用?这 3 个包兼容吗?
答案1
memoir
不幸的是,、caption
和的组合hyperref
并不完全兼容。(现在已不再正确,请参阅附录 2011-10-12。)
当 memoir 文档类检测到 caption 包时,它会重新定义一些宏来满足 caption 包的需求;因此,这种组合单独使用时效果很好。但是,当您加载 hyperref 包时,memoir 类会额外加载 memhfixc 包,该包会重新定义,\caption
从而使 caption 包进入后备模式或所谓的“兼容模式”。
\documentclass{memoir}
\usepackage{caption,hyperref}
\begin{document}
A
\end{document}
原因
Package caption Info: Incompatible package detected (regarding \caption).
(caption) \caption = \long macro:->\donemaincaptiontrue \m@moldhypcaption .
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.
subcaption 包在“兼容模式”下无法正常工作,导致其行为异常。(下一个版本将发出错误消息。)
我的建议:
- 我将把 memhfixc 包的重新定义添加到我的 caption 包的数据库中。这将阻止 caption 包在兼容模式下运行。
- 我会询问回忆录文档类的当前维护者是否需要进一步采用。
希望这个问题能很快得到解决。
PS:抱歉回复晚了
附录 2011-10-12
字幕包的新版本终于在 CTAN 上可用,并作为 TeXlive 更新,修复了 hyperref 兼容性问题。但仍需要
\let\subcaption\undefined
\let\subfloat\undefined
在加载子标题包之前,因为回忆录文档类尚未适应子标题包。
附录 2012-04-10
最后我终于抽出时间仔细研究了这个问题,看来我能够调整该subcaption
包以用于memoir
文档类。我将在即将推出的 3.3 版中发布它caption
。
答案2
尝试
\let\subcaption\relax
\let\subfloat\relax
在加载这些包之前
(未经测试)
至于 hyperref 尝试这个(我不保证其他问题)
\let\captioncaption\caption
\usepackage{hyperref}
\let\caption\captioncaption