当我将 \label 放在 \clearpage 之后时,会出现 ??

当我将 \label 放在 \clearpage 之后时,会出现 ??

\label{LastPage}我在把 放到之后 的时候遇到了这个问题\include{chapter}。我发现编译的时候\ref{LastPage}变成了。我测试了一下原因,知道放到 之后就会变成。这是我的代码??latexmk -pdf\label\clearpage\ref??

% label after \clearpage
\documentclass{article}
% \usepackage{lastpage}
\begin{document}
    this is main file. \pageref{LastPage}
    \clearpage
    \label{LastPage}
\end{document}

我得到了输出 图片.png

我想知道是什么原因导致了这个问题?

答案1

文档的最后一页实际上是包含 的页面,this is main file. \pageref{LastPage}因为它是通过调用 发送出去的\clearpage。由于\label不会导致设置任何可打印内容,因此没有其他页面要发送出去。而且,由于\label仅在页面发送期间“处理”(为了获得页面的适当值\pageref- 对内容的异步处理),您的最后一页\label永远不会被处理,而只能\pageref搜索未知的(页面)引用LastPage

lastpage包裹做一些工作来规避与您的类似的设置,允许以下最小示例按预期工作,即使它与您的设置相匹配:

\documentclass{article}

\usepackage{lastpage}

\begin{document}
this is main file. \pageref{LastPage}
\clearpage

\end{document}

其他选择包括使用atveryend\labels 放置在文档末尾。

答案2

我认为这可能是因为在最后一个之后实际上没有创建新页面\clearpage,因为没有内容。添加\null\hbox{}可解决此问题。

\documentclass{article}
% \usepackage{lastpage}
\begin{document}
    this is main file. \pageref{LastPage}
    \clearpage
    \null
    \label{LastPage}
\end{document}

相关内容