图形环境在中重新定义nature.cls
如下:
\renewenvironment{figure}{\let\caption\NAT@figcaption}{}
\newcommand{\NAT@figcaption}[2][]{\AtEndDocument{%
\refstepcounter{figure}
\ifthenelse{\value{figure}=1}{
\newpage\noindent%
% \rule{\textwidth}{1pt}
}{
\par\vfill
}
\sffamily\noindent\textbf{Figure \arabic{figure}}\hspace{1em}#2}
}
编译包含此类的文档时,图号会丢失(即\label
/\ref
机制似乎被破坏)。我认为这是因为对 进行了重新定义\caption
(nature.cls
即\let\caption\NAT@figcaption
)。需要进行哪些更改才能恢复编号?
梅威瑟:
\documentclass{nature}
\begin{document}
Fig.~\ref{fig1} shows\ldots
\begin{figure}
\caption{Test}
\label{fig1}
\end{figure}
\end{document}
输出:
将类别从 更改nature
为article
可恢复图形编号。
答案1
在nature
课堂上,图形的打印输出被延迟到\end{document}
。与此相关的是,也\refstepcounter{figure}
只在文档末尾调用,因此\label
图形中的宏没有可以拾取的引用。您还需要将宏的执行延迟\label
到文档末尾。
一个简单的方法是将\label
宏包含在内\caption
。修改后的 MWE 可以按预期工作:
\documentclass{nature}
\begin{document}
Fig.~\ref{fig1} shows\ldots
\begin{figure}
\caption{Test\label{fig1}}
\end{figure}
\end{document}
图 1 显示...