子标题包与回忆录类不兼容?

子标题包与回忆录类不兼容?

当我尝试使用该类和子标题包编译文档时memoir出现以下错误:

!包subcaption错误:此包不能与该subfig包配合使用。

我推测这是因为该类memoir加载了subfig包。对吗?

有没有办法让它们一起工作?

答案1

subfig和包subcaption不能相互配合使用。相反,您可以使用captionwith 包subfig来为标题和子标题添加一些趣味(或者您可以caption与 with 一起使用subcaption(它还会提供 subfigure 命令)。

\documentclass{memoir}
\usepackage[demo]{graphicx} % remove [demo] in your file
\usepackage{subfig} % for subfigures
\usepackage{caption}
\usepackage{lipsum}

\captionsetup[figure]{labelfont={bf,small},textfont={it,small}}
\captionsetup[subfloat]{labelfont={bf,small},textfont={it,small},
subrefformat=parens} %<-----designing subcaption
\newcommand{\myfigref}[2]{~\ref{#1}.\subref{#2}}% <---- a new macro for referring to a subfigure
%    
\begin{document}
%=========================
\chapter{First chapter}
\lipsum[1-4]
%=========================
\begin{figure}[ht]
  \includegraphics[width=1\textwidth]{my figure}
  \caption{My single picture}\label{fig:figures}
\end{figure}
%=========================
\begin{figure}[ht]
\centering
\subfloat[My first picture]{\label{fig:mdleft}{\includegraphics[width=0.4\textwidth]{my figure}}}\hfill
\subfloat[My second picture]{\label{fig:mdright}{\includegraphics[width=0.4\textwidth]{my figure}}}
\caption{My two big pictures}
\label{fig:subfigures}
\end{figure}
%===========================
From figure~\ref{fig:subfigures}.\subref{fig:mdleft}, we can see a small cat, in     
\myfigref{fig:subfigures}{fig:mdright} both can be used to refer figures.
\end{document}

在此处输入图片描述

答案2

正如 Mike Renfro 在他的评论中所说,memoir已经包含对子图和子标题的支持,无需加载包subfigcaption。使用下一个代码,您将重现 Harish 的结果。

\documentclass{memoir}
\usepackage[demo]{graphicx} % remove [demo] in your file

\usepackage{lipsum}

% You need a newsubfloat element to use subcaption
\newsubfloat{figure}

% Command to set caption styles
\captionnamefont{\bfseries\small}
\captiontitlefont{\itshape\small}
\subcaptionlabelfont{\bfseries\small}
\subcaptionfont{\itshape\small}

%    
\begin{document}
%=========================
\chapter{First chapter}
\lipsum[1-4]
%=========================
\begin{figure}[ht]
  \includegraphics[width=1\textwidth]{my figure}
  \caption{My single picture}\label{fig:figures}
\end{figure}
%=========================
\begin{figure}[ht]
\centering
\subbottom[My first picture\label{fig:mdleft}]%
    {\includegraphics[width=0.4\textwidth]{my figure}}\hfill
\subbottom[My second picture\label{fig:mdright}]%
    {\includegraphics[width=0.4\textwidth]{my figure}}
\caption{My two big pictures}
\label{fig:subfigures}
\end{figure}
%===========================

%In next paragraph look at differences between \ref{subfigurelabel},
%\subcaptionref{subfigurelabel} and \subcaptionref*{subfigurelabel}
%
In figure~\ref{fig:subfigures} we can see a small cat
(\ref{fig:mdleft} or \subcaptionref*{fig:mdleft}) and 
something else in \ref{fig:mdright} or \subcaptionref{fig:mdright}.    
\end{document}

\newsubloat{figure}声明一个新的子浮点元素,允许使用\subbottom命令。现在\ref{subfigurelabel}等于“1.2(a)”,而\subcaptionref{subfigurelabel}等于“(a)”(带字体属性),并且未记录的 \subcaptionref*将子标签重置为正常字体。

在此处输入图片描述

答案3

不幸的是,错误消息具有误导性(*),并且memoir文档类还不能与我的subcaption包一起使用。

但你可以给予

\let\subcaption\relax
\let\subfloat\relax

尝试一下,只需在加载subcaption包之前放置此代码。

也可以看看:带有 subcaption 和 hyperref 包的 memoir 类

(*)我刚刚改变了这一点,所以在未来的版本中,人们将会收到错误消息“检测到不兼容的文档类或包”。

相关内容