回忆录中的 cleveref 和 marginfigure

回忆录中的 cleveref 和 marginfigure

我在使用 cleveref 引用 memoir 中的 marginfigures 时遇到了问题。以下代码说明了这个问题(抱歉前言有点长,但我需要边距中的空间来说明这个问题):

\documentclass[a4paper,10pt]{memoir}
%%% formatting
\setstocksize{29.7cm}{21.0cm} % A4 stock
\settrimmedsize{27.94cm}{21.0cm}{*} % 27.94cm = 11in
\setlength{\trimtop}{0.0cm}
\setlength{\trimedge}{\stockwidth}
\addtolength{\trimedge}{-\paperwidth}
\settypeblocksize{23.94cm}{12.3cm}{*}
\setlrmargins{2.0cm}{*}{*}
\setulmargins{2.0cm}{*}{*}
\setmarginnotes{\onelineskip}{5.28cm}{\onelineskip}
\sidecapmargin{outer}
\setsidecaps{\onelineskip}{5.28cm} 
\setsidecappos{t}
%%% clever referencing (should be loaded last)
\usepackage{cleveref}
\crefname{equation}{equation}{equations}
\Crefname{equation}{Equation}{Equations}
\crefname{figure}{figure}{figures}
\Crefname{figure}{Figure}{Figures}
%%%  
\checkandfixthelayout   
%%%   
\begin{document}
\begin{equation}\label{eq:pyth}
  a^2 + b^2 = c^2
\end{equation}  
\Cref{eq:pyth} is known as Pythagoras' theorem. 
\begin{marginfigure}
  \rule{1.0cm}{1.0cm}
  \label{fig:dummyfig}
  \caption{dummyfig1}
\end{marginfigure}
This should be a reference to figure 1, but it comes out as 
\cref{fig:dummyfig}.
\begin{equation}\label{eq:circ}
  x^2 + y^2 = r^2
\end{equation}
\begin{equation}\label{eq:ell}
  \left(\frac{x}{a}\right)^2 + \left(\frac{y}{b}\right)^2 = 1
\end{equation}
\Cref{eq:circ} describes a circle, \cref{eq:ell} an ellipse. 
\begin{marginfigure}
  \rule{2.0cm}{2.0cm}
  \label{fig:dummyfig2}
  \caption{dummyfig2}
\end{marginfigure}
This should be a reference to figure 2, but it comes out as 
\cref{fig:dummyfig2}.
\end{document}

运行此程序时,对图形的引用变成了对方程式的引用。我是否需要以某种方式告诉 cleveref marginfigure 环境(我在最新手册中找不到任何信息)或者 cleveref 还不支持 marginfigure?

答案1

问题很简单,就是在\label之前有\caption。将\label两者中的最后一个放上去,就可以正常工作了。参见例如在图形环境中将 \label 放在哪里?

相关内容