手动设置参考值

手动设置参考值

我正在处理一个较大的 Latex 文档(我的论文),其中每个章节都有自己的 .tex 文件。出于各种原因,我有两个主文件:一个包含所有章节,另一个我会随时间修改以编译我当时正在处理的任何章节。

在大多数情况下,各章都是独立的,解决引用问题并不是什么大问题。但是,有少数重要的结果需要跨章引用,而且有几次我需要引用另一章,即In Chap.~\ref{ch:other_chapter}, we discuss X, Y, and Z.。照原样,这当然会导致编译后的文档中出现“第 ??” 章。我真的很想能够将单个章节的 PDF 交给其他人审阅,而无需一堆“??”引用(而不必等待整个文档编译完成)。

所以...假设只有少数这样的引用,以便可以手动完成此操作,并且假设我不介意它们的值不是相当对的,有没有一种简单的方法可以手动设置我的单章主文件中的标签值,以便我编译的文档 a) 没有一堆未定义的引用,并且 b) 不包含只是为了填充引用的空章节。

我尝试过类似

% the chapter I'm currently working on
\include{the_chapter}

% so I can reference the next chapter without having to compile it
\setcounter{chapter}{2}
\label{ch:other_chapter}

但随后\ref{ch:other_chapter}它自身又解析为之前章节的一个节。

我不想这样做:

\include{the_chapter}

\chapter{The other chapter}
\label{ch:other_chapter}

因为这实际上会在文本中生成新的章节、目录等。

答案1

我认为您不必担心这个问题,因为一旦您准备好一切,它就会被解决。

如果你真的想手动设置引用,你可以在序言中说

\makeatletter
\newcommand{\manuallabel}[2]{\def\@currentlabel{#2}\label{#1}}
\makeatother

然后使用

\manuallabel{ch:other_chapter}{2}

这样\ref{ch:other_chapter}就会打印“2”。在第二个参数中,你可以输入任何你想要的内容。

答案2

您遇到的问题很常见,很多比手动修复引用更好的解决方案。使用一个主文件,您可以\includeonly{chap-foo}只编译一个章节。这样,引用其他章节会很好

这要求其他章节在过去已经编译过。指向的内容由文件\ref{foo}中定义的内容决定。因此,只要您不会过于频繁地删除所有文件,这是一种交叉引用未编译章节的好方法。因为即使您没有编译,仍会被读取,因此它知道被编译的应该是什么样子。.aux\label{foo}.auxbar.texbar.auxlatex\ref\labelbar.tex

相关内容