arxivの制限を回避するために「プリコンパイルされた」auxファイルを使用する

arxivの制限を回避するために「プリコンパイルされた」auxファイルを使用する

arXiv は私の文書を十分な回数コンパイルしていないようです (ある時点で、最大試行回数に達したと表示されて停止します)。その結果、私の文書の一部がきれいに見えません (一方、私の側で latexmk を使用してコンパイルすると、期待どおりに動作します)。

ファイルを追加しようとしましたが、arXiv によってファイルが自動的に削除されます。また、 のコピーを含むmain.auxファイルを作成しようとしましたが(これは削除されません)、代わりに の直前に追加しました:main_backup.auxmain.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
}{}

しかし、これには 2 つの問題があります。

  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引数が 1 つしかなかったので、保存したファイルを編集して最初の数値引数を削除するだけで済むようです。最初の実行ではこれで十分ですが、2 回目の実行では実際の 2020 aux が選択されます。

\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 が LaTeX で作成されているという事実を隠すために、次のように PDF を直接送信する方が簡単かもしれません (そうしないと、arXiv で PDF を送信できなくなります)。

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

関連情報