Use o arquivo aux "pré-compilado" para evitar limites no arxiv

Use o arquivo aux "pré-compilado" para evitar limites no arxiv

Parece que o arXiv não compila vezes suficientes o meu documento (em alguns pontos ele para, dizendo que atingiu o número máximo de tentativas). Como consequência, algumas partes do meu documento não parecem boas (embora se eu compilar com o latexmk do meu lado, ele funcionará conforme o esperado).

Tentei adicionar um main.auxarquivo, mas o arXiv remove meu arquivo automaticamente. Também tentei criar um arquivo main_backup.auxcontendo uma cópia main.aux(este não foi removido) e, em vez disso, adicionei logo antes \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
}{}

No entanto, isso tem dois problemas:

  1. localmente, ele compila sem erros e meus documentos ficam melhores… exceto pelo índice que está vazio agora!
  2. no arxiv, ele falha com um erro logo após carregar o arquivo 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.

Observe que esses erros parecem chegar nesta linha do meu arquivo aux:

\@writefile{toc}{\authcount {1}}
\abx@aux@cite{0}{Kil88_FoundingCrytpographyOblivious}

que menciona novamente o índice… então ambos os meus problemas podem estar relacionados.

EDITAR Eu também tentei:

\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
}{}

mas parece que o patch não está funcionando.

EDITAR

Eu também tentei:

%%%% 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}
...

Isso funciona localmente, mas não no servidor arxiv, ele falha novamente com este mesmo erro irritante…

Responder1

Você pode reproduzir com

\documentclass{article}
\usepackage{biblatex}
\makeatletter
\@writefile{toc}{\authcount {1}}
\abx@aux@cite{0}{Kil88_FoundingCrytpographyOblivious}


\begin{document}
x
\end{document}

que roda sem erros no texlive 2022 e 2023 mas em 2020 dá

! 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}
?

Observe que este não é o formato que você mostrou, pois il88está recuado, Kmas suspeito que seja o erro que você obteve. (Não consegui pensar em nenhuma maneira de obter o erro que você mostrou.)

A versão antiga \abx@aux@citetinha apenas um argumento, então parece que você pode simplesmente editar o arquivo salvo para excluir o primeiro argumento numérico, ele deve estar próximo o suficiente para uma primeira execução, a segunda execução pegará um aux 2020 real.

\documentclass{article}
\usepackage{biblatex}
\makeatletter
\@writefile{toc}{\authcount {1}}
\abx@aux@cite{Kil88_FoundingCrytpographyOblivious}


\begin{document}
x
\end{document}

funciona sem erros em 2020; em 2023 dá

Runaway argument?
! Paragraph ended before \abx@aux@cite was complete.
<to be read again> 
                   \par 
l.6 
    
? 

Responder2

OK depoiscavando mais, o problema é que o arXiv usa uma ferramenta chamada autotex que não lida com alguns tipos de imagens dinâmicas ao usar a saída DVI (mesmo que em meus testes o DVI estivesse funcionando bem localmente, o problema parece ser o autotex), então as imagens do tikz podem dar errado. Colocando:

\pdfoutput=1

na primeira linha, você força o arXiv a compilar em um pdf. Colocar a4papera classe também pode impedir que o arXiv tente brincar com a geometria.

Se por algum motivo você não conseguir fazer funcionar mesmo com o texto acima, o mais simples pode ser enviar diretamente um PDF, com o seguinte para esconder o fato de que o pdf é produzido por LaTeX (caso contrário o arXiv não permitirá que você envie o pdf):

\usepackage{hyperref}
% Hide to arXiv that this pdf is produced by LaTeX:
\pdfsuppressptexinfo=-1 
\hypersetup{
  pdfproducer={},
  pdfcreator={},
}

informação relacionada