使用 AtBeginDocument 混合 listoffigures、cleveref 和自定义类

使用 AtBeginDocument 混合 listoffigures、cleveref 和自定义类

以下是我的问题的 MWE。使用以下文档

\documentclass{report}
\AtBeginDocument{\listoffigures}
\usepackage{cleveref}

\begin{document}
\begin{figure}
    \caption{This caption cross-references \cref{eqn}.}
    \label{fig}
\end{figure}

\begin{equation} F = ma \label{eqn}\end{equation}
\end{document}

生成如下所示的文档:

在此处输入图片描述

但是,如果我\listoffigures从中删除命令\AtBeginDocument并直接在 tex 文件 ( 之后\begin{document}) 中调用它,我会得到以下结果:

在此处输入图片描述

显然,第一种情况cleveref无法确定引用的类型,而第二种情况可以。这两者有什么区别?

我的实际用例是一个大型 LaTeX 文档类文件,它为该类提供各种自定义report,其中之一是自动创建图形列表,即无需用户记住插入指令\listoffigures。 使用第一种方法时,如何获取嵌入在文档中的正确信息以供cleveref解析?

答案1

正如你所注意到的,该指令\AtBeginDocument{\listoffigures}最终确保\listoffigures“排队”LaTeX 有机会“学习”其\cref含义。

一个解决方案是指示类文件cleveref也加载包——并这样做发布指令\AtBeginDocument{\listoffigures}

\usepackage{cleveref}
\AtBeginDocument{\listoffigures}

相关内容