
Похоже, что 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
был только один аргумент, поэтому, похоже, вы можете просто отредактировать сохраненный файл, чтобы удалить первый числовой аргумент. Этого должно быть достаточно для первого запуска, а второй запуск выявит настоящий aux 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={},
}