arXiv:使用外部文档和 xr 发布补充文件

arXiv:使用外部文档和 xr 发布补充文件

我有两个 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

我将上传已编译的supplement.pdfsupplement.aux这样main.texarXiv 编译器就可以提取supplement.tex(通过xr) 构建时main.tex,应该可以编译成功。

不过,我建议在主 PDF 中包含补充内容(例如,合并 tex 源或supplement.pdf使用pdfpages) 因为通过下载源代码来查找补充材料很麻烦,并且会导致补充材料的存在得不到很好的宣传。

答案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},那么任何标签都labelPaper2被导入为p2:label。我个人更喜欢手动输入论文编号,但两种选择都可以。

以下是我的理解会发生什么。它可能不是 100% 准确。

  • 如果当前文档是Paper1.tex,则 latex 将创建Paper1.aux包含所有标签引用的文件。此文件用于交叉引用。例如,如果您键入,\ref{label}则它会查找Paper1.aux标签label,如果存在,则打印出相应的内容。

  • xr包使 latex 不仅在 中查找,doc.aux而且在所有引用的文档中查找。因此,它将在 和 中Paper1.aux查找Paper2.aux

  • 重要的是,这个xr才不是创建Paper2.aux。我们正在运行 latex Paper1.tex,因此它只会发生变化Paper1.???

现在我描述如何进行 arXiv 提交。

  • 创建一个新文件夹,并将您的文件连同您需要编译的任何其他内容(图片、前言等)一起arXiv_Submission_Paper1移动到此文件夹中。Paper1.tex

  • 顺便说一句,最好将您提交的内容完整复制一份,并将其放在您不会编辑的文件夹中。这样,您将来就可以准确地看到您上传的内容。

  • 另外,放在Paper2.aux这个文件夹中。你不需要Paper2.tex--- 你不会编译它。你仅有的需要该.aux文件。

  • 现在只需上传Paper1,上传Paper1.tex Paper2.aux以及您可能需要的任何其他内容!该xr软件包将Paper2.aux完全按照您的需要读取文件。

  • 交换数字12对执行相同操作Paper2

只需上传更多.aux文件,即可轻松扩展到更多论文。如果您有很多文件,可以创建一个名为 的子文件夹aux_files并使用\externaldocument{aux_files/paper#}

或者,您可以将所有其他.aux文件(例如Paper1.aux、、和)Paper2.aux合并到中。然后您只需使用。由于文件扩展名,它们可能看起来很吓人。但它们只是纯文本文件。例如,您可以使用 来编辑它们。确保在每个文件末尾都包含换行符!如果您包含Paper3.auxPaper4.auxPaper5.auxaux_all.aux\externaldocument{aux_all}.auxNotepadmultiple defined labelsPaper1.aux。您是否喜欢这个警告取决于您——它只是一个警告并且不会阻止 tex 运行。

我可以确认,这在 2019 年 11 月(首次上传)和 2021 年 2 月(修订)的 arXiv 上都有效。arXiv 系统发生了变化显著地在这两个时间之间。arXiv 以前只运行 latex一次。这就是为什么你需要上传文件.bbl而不是的原因之一.bib。这些天 arXiv 将多次运行 latex。上述方法两次都有效,没有变化。

答案4

xr 包(以及类似的包,例如依赖于外部辅助文件的 xref)在 arXiv 的 autotex 引擎中不起作用。您需要重新编写两个文档之间的引用,以免从同一个辅助文件进行交叉引用。

相关内容