Используйте «предварительно скомпилированный» aux-файл, чтобы избежать ограничений на arxiv

Используйте «предварительно скомпилированный» aux-файл, чтобы избежать ограничений на arxiv

Похоже, что 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
}{}

Однако здесь есть две проблемы:

  1. локально он компилируется без ошибок, и мои документы выглядят лучше... за исключением таблицы содержания, которая теперь пуста!
  2. на 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={},
}

Связанный контент