nature.cls 类别中断 图形编号

nature.cls 类别中断 图形编号

图形环境在中重新定义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机制似乎被破坏)。我认为这是因为对 进行了重新定义\captionnature.cls\let\caption\NAT@figcaption)。需要进行哪些更改才能恢复编号?


梅威瑟:

\documentclass{nature}
\begin{document}

Fig.~\ref{fig1} shows\ldots

\begin{figure}
    \caption{Test}
    \label{fig1}
\end{figure}

\end{document}

输出:

在此处输入图片描述

将类别从 更改naturearticle可恢复图形编号。

答案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 显示...

相关内容