为尚未写入的对象的引用创建手动计数器

为尚未写入的对象的引用创建手动计数器

我正在为其他人排版一份文档,他正在手写,我还没有完整的文本。但是,我已经排版的文本包含对后续章节中的章节和方程式的引用。因此,我已经创建了一些标签,我将在进入新部分时立即使用。在此之前,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}

结果:

在此处输入图片描述

相关内容