![arXiv:使用外部文档和 xr 发布补充文件](https://linux22.com/image/364746/arXiv%EF%BC%9A%E4%BD%BF%E7%94%A8%E5%A4%96%E9%83%A8%E6%96%87%E6%A1%A3%E5%92%8C%20xr%20%E5%8F%91%E5%B8%83%E8%A1%A5%E5%85%85%E6%96%87%E4%BB%B6.png)
我有两个 LaTeX 文档,一个叫 main.tex,另一个叫 supplement.tex。它们都通过 xr 包链接在一起,编译时没有错误。(它们必须按以下顺序编译:在 main 上编译 pdflatex,然后在 supplement 上编译 pdflatex,然后再次在 main 上编译 pdflatex 以完成交叉引用。有没有办法把它放在 arXiv 上,让那里的编译器知道 pdflatex 必须在每个文档上运行几次?非常感谢!在这种情况下,是否也应该上传 .aux 文件?
答案1
你可以解决问题。拿出你的 file.aux,创建 xx.tex 并将其与你的 latex 文件一起上传到 arxiv。xx.tex 是:
\开始{文件内容}{文件.aux} file.aux 的内容 \结束{文件内容}
在您的 latex 文件中添加(在顶部) \usepackage{filecontents}
在 \end{document} 之前添加
\makeatletter\@input{xx.tex}\makeatother
这样你的 latex 文件将创建可以与 xr 和 \externaldocument 一起使用的 file.aux
答案2
答案3
我遇到过类似的情况:我总共有两篇论文,所有论文都相互引用!我在同一天将它们全部上传到 arXiv。为简单起见,我们假设我只有两篇。我的序言中有以下代码。
\usepackage{xr}
%\externaldocument{Paper1}
\externaldocument{Paper2}
这里我假设我们在 中工作,Paper1
所以我把它注释掉了,因为你不需要用 进行自我引用xr
。事实上,如果你这样做了,那么它会给你multiple defined labels
警告。注释掉 中的第二行Paper2
。
非常重要的是,您必须确保标签在所有文档中以唯一的方式引用。例如,不要使用\ref{sec:intro}
。我使用了\label{sec-p1:intro}
和\label{sec-p2:intro}
。我相信xr
包有一个可选参数。我不确定具体细节,但如果你写了类似的东西\externaldocument[p2:]{Paper2}
,那么任何标签都label
将Paper2
被导入为p2:label
。我个人更喜欢手动输入论文编号,但两种选择都可以。
以下是我的理解会发生什么。它可能不是 100% 准确。
如果当前文档是
Paper1.tex
,则 latex 将创建Paper1.aux
包含所有标签引用的文件。此文件用于交叉引用。例如,如果您键入,\ref{label}
则它会查找Paper1.aux
标签label
,如果存在,则打印出相应的内容。该
xr
包使 latex 不仅在 中查找,doc.aux
而且在所有引用的文档中查找。因此,它将在 和 中Paper1.aux
查找Paper2.aux
。重要的是,这个
xr
包才不是创建Paper2.aux
。我们正在运行 latexPaper1.tex
,因此它只会发生变化Paper1.???
。
现在我描述如何进行 arXiv 提交。
创建一个新文件夹,并将您的文件连同您需要编译的任何其他内容(图片、前言等)一起
arXiv_Submission_Paper1
移动到此文件夹中。Paper1.tex
顺便说一句,最好将您提交的内容完整复制一份,并将其放在您不会编辑的文件夹中。这样,您将来就可以准确地看到您上传的内容。
另外,放在
Paper2.aux
这个文件夹中。你不需要Paper2.tex
--- 你不会编译它。你仅有的需要该.aux
文件。现在只需上传
Paper1
,上传Paper1.tex
和Paper2.aux
以及您可能需要的任何其他内容!该xr
软件包将Paper2.aux
完全按照您的需要读取文件。交换数字
1
和2
对执行相同操作Paper2
。
只需上传更多.aux
文件,即可轻松扩展到更多论文。如果您有很多文件,可以创建一个名为 的子文件夹aux_files
并使用\externaldocument{aux_files/paper#}
。
或者,您可以将所有其他.aux
文件(例如Paper1.aux
、、和)Paper2.aux
合并到中。然后您只需使用。由于文件扩展名,它们可能看起来很吓人。但它们只是纯文本文件。例如,您可以使用 来编辑它们。确保在每个文件末尾都包含换行符!如果您包含Paper3.aux
Paper4.aux
Paper5.aux
aux_all.aux
\externaldocument{aux_all}
.aux
Notepad
multiple defined labels
Paper1.aux
。您是否喜欢这个警告取决于您——它只是一个警告并且不会阻止 tex 运行。
我可以确认,这在 2019 年 11 月(首次上传)和 2021 年 2 月(修订)的 arXiv 上都有效。arXiv 系统发生了变化显著地在这两个时间之间。arXiv 以前只运行 latex一次。这就是为什么你需要上传文件.bbl
而不是的原因之一.bib
。这些天 arXiv 将多次运行 latex。上述方法两次都有效,没有变化。
答案4
xr 包(以及类似的包,例如依赖于外部辅助文件的 xref)在 arXiv 的 autotex 引擎中不起作用。您需要重新编写两个文档之间的引用,以免从同一个辅助文件进行交叉引用。