我正在为其他人排版一份文档,他正在手写,我还没有完整的文本。但是,我已经排版的文本包含对后续章节中的章节和方程式的引用。因此,我已经创建了一些标签,我将在进入新部分时立即使用。在此之前,Latex 会将??作为占位符。
现在我遇到了以下问题:为了审阅文本,我将其交还给别人,但不知为何,人们会对占位符感到恼火。当然,我可以只添加将来可能出现的引用编号,直到我可以添加正确的引用为止,但这似乎不方便。
有没有办法对尚未手动使用但在常见位置(例如在序言中)的标签进行编号,这样我就不必在文档中逐一追踪它们,也不必用它们将来可能会有的数字替换它们?
答案1
问题的评论给出了很好的建议,即要么创建一个包含尚无内容的部分的大纲,要么将 ?? 替换为“nr. tbd”或其他内容。但是,要实施建议的方法:
LaTeX 中的引用通过设置宏的值在内部起作用\@currentlabel
。此宏通常由类似\section
或 的命令设置\begin{equation}
。命令将此时\label
的值存储到文件中,该文件用于解析命令。\@currentlabel
.aux
\ref
您还可以\@currentlabel
自行设置任意值,然后\label
直接发出命令,将该标签与相关值一起存储到文件中.aux
。例如,一个\placeholder
带有两个参数的小宏可以执行此操作。因为\@currentlabel
包含一个符号,所以您需要用和@
包围宏定义。\makeatletter
\makeatother
如果使用,hyperref
则需要\phantomsection
在标签前加上一个,以便 hyperref 有东西可以引用(\placeholder
在本例中是调用的)。
ph
请注意,我在值中添加了一个前缀,以突出显示这是一个占位符。
\documentclass{article}
%\usepackage{hyperref}
\makeatletter
\newcommand{\placeholder}[2]{%
\def\@currentlabel{ph#2}%
%\phantomsection% needed if hyperref is loaded
\label{#1}%
}
\makeatother
\begin{document}
\placeholder{sec:conclusion}{3.1}
\placeholder{sec:discussion}{3.2}
\placeholder{sec:appendix}{A}
\section{Introduction}
We don't know what will happen yet. Once we do, we will make sure to describe it in sections \ref{sec:conclusion}, \ref{sec:discussion} and Appendix \ref{sec:appendix}.
\end{document}
结果: