带有 subcaption 和 hyperref 包的 memoir 类

带有 subcaption 和 hyperref 包的 memoir 类

这与这个问题类似在回忆录类中使用子图还有这个同时使用 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 包在“兼容模式”下无法正常工作,导致其行为异常。(下一个版本将发出错误消息。)

我的建议:

  1. 我将把 memhfixc 包的重新定义添加到我的 caption 包的数据库中。这将阻止 caption 包在兼容模式下运行。
  2. 我会询问回忆录文档类的当前维护者是否需要进一步采用。

希望这个问题能很快得到解决。

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

相关内容