看来 arXiv 编译我的文档的次数不够多(在某些时候它会停止,说它已达到最大尝试次数)。因此,我的文档的某些部分看起来不太好(而如果我使用 latexmk 进行编译,它会按预期工作)。
我尝试添加一个main.aux
文件,但 arXiv 自动删除了我的文件。我还尝试创建一个main_backup.aux
包含副本的文件main.aux
(这个文件不会被删除),但我在前面添加了\begin{document}
:
\IfFileExists{main_backup.aux}{
\message{We saw a default backup.aux file, let's use it instead of the main aux file.}
\nofiles % Disable default aux file
\makeatletter
\input{main_backup.aux}
\makeatother
}{}
但这有两个问题:
- 在本地,它可以毫无错误地进行编译,并且我的文档看起来更好......除了现在内容表是空的!
- 在 arxiv 上,加载 aux 文件后立即出现错误:
We saw a default backup.aux file, let's use it instead of the main aux file.
No auxiliary output files.
(./main_backup.aux
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.23 \abx@aux@cite{0}{K
il88_FoundingCrytpographyOblivious}
?
! Emergency stop.
...
l.23 \abx@aux@cite{0}{K
il88_FoundingCrytpographyOblivious}
No pages of output.
Transcript written on main.log.
[verbose]: latex 'main.tex' failed.
[verbose]: TEXMFCNF is unset.
请注意,这个错误似乎出现在我的 aux 文件的这一行:
\@writefile{toc}{\authcount {1}}
\abx@aux@cite{0}{Kil88_FoundingCrytpographyOblivious}
其中再次提到了目录……所以我的两个问题可能都有关联。
编辑 我也尝试过:
\IfFileExists{main_backup.aux}{
\message{We saw a default backup.aux file, let's use it instead of the main aux file.}
\makeatletter
\usepackage{etoolbox}
%% Try to patch the command given in
%% https://tex.stackexchange.com/questions/285798/how-and-when-is-the-aux-file-read-and-processed
% \regexpatchcmd{\enddocument}{\@@input\jobname.aux}{\@@input{main_backup.aux}}
\patchcmd{\enddocument}{\@@input\jobname.aux}{\@@input{main_backup.aux}}{}{}
%\input{main_backup.aux}
\makeatother
}{}
但补丁似乎没有起作用。
编辑
我也尝试过:
%%%% Really dirty trick because arxiv does not compile enough the document, so we need our own aux file:
\IfFileExists{main_backup.aux}{
\IfFileExists{main.aux}{}{
\message{We saw a default backup.aux file, let's use it instead of the main aux file.}
\makeatletter
\input{main_backup.aux}
\makeatother
}
}{}
\begin{document}
...
这确实在本地有效,但在 arxiv 服务器上无效,它再次失败并出现这个烦人的相同错误……
答案1
你可以使用
\documentclass{article}
\usepackage{biblatex}
\makeatletter
\@writefile{toc}{\authcount {1}}
\abx@aux@cite{0}{Kil88_FoundingCrytpographyOblivious}
\begin{document}
x
\end{document}
在 texlive 2022 和 2023 中运行时没有错误,但在 2020 年出现
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.5 \abx@aux@cite{0}{K
il88_FoundingCrytpographyOblivious}
?
请注意,这不是您显示的格式,因为il88
缩进超过了,K
但我怀疑这是您遇到的错误。(我想不出任何方法来获取您显示的错误。)
旧版本\abx@aux@cite
只有一个参数,因此看起来您可以简单地编辑保存的文件以删除第一个数字参数,它应该足够接近第一次运行,第二次运行将选择一个真正的 2020 辅助。
\documentclass{article}
\usepackage{biblatex}
\makeatletter
\@writefile{toc}{\authcount {1}}
\abx@aux@cite{Kil88_FoundingCrytpographyOblivious}
\begin{document}
x
\end{document}
2020 年运行无错误;2023 年则报错
Runaway argument?
! Paragraph ended before \abx@aux@cite was complete.
<to be read again>
\par
l.6
?
答案2
好的,之后进一步挖掘,问题在于 arXiv 使用了一种名为 autotex 的工具,该工具在使用 DVI 输出时无法处理某些类型的动态图片(即使在我的测试中,DVI 在本地运行良好,问题似乎出在 autotex 上),因此 tikz 的图片可能会出错。通过输入:
\pdfoutput=1
在第一行,您强制 arXiv 编译为 pdf。放入a4paper
类也可能阻止 arXiv 尝试处理几何图形。
如果由于某些原因,您甚至无法使用上述文本使其工作,那么更简单的方法可能是直接提交 PDF,并使用以下内容隐藏 pdf 由 LaTeX 生成的事实(否则 arXiv 将不允许您提交 pdf):
\usepackage{hyperref}
% Hide to arXiv that this pdf is produced by LaTeX:
\pdfsuppressptexinfo=-1
\hypersetup{
pdfproducer={},
pdfcreator={},
}