arxiv에 대한 제한을 피하기 위해 "미리 컴파일된" aux 파일을 사용하십시오.

arxiv에 대한 제한을 피하기 위해 "미리 컴파일된" aux 파일을 사용하십시오.

arXiv가 내 문서를 충분한 횟수만큼 컴파일하지 않는 것 같습니다(어떤 지점에서는 최대 시도 횟수에 도달했다는 메시지가 표시되면서 중지됩니다). 결과적으로 내 문서의 일부 부분이 보기에 좋지 않습니다(반면에 latexmk를 사용하여 컴파일하면 예상대로 작동합니다).

파일을 추가하려고 했는데 main.auxarXiv가 자동으로 파일을 제거합니다. 또한 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인수가 하나뿐이므로 저장된 파일을 편집하여 첫 번째 숫자 인수를 삭제할 수 있는 것처럼 보입니다. 첫 번째 실행에 충분히 가까워야 하며 두 번째 실행에서는 실제 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가 DVI 출력을 사용할 때 일부 종류의 동적 그림을 처리하지 않는 autotex라는 도구를 사용한다는 것입니다(내 테스트에서 DVI가 로컬에서 제대로 작동하더라도 문제는 autotex인 것 같습니다). 따라서 tikz의 그림은 잘못. 다음을 넣어서:

\pdfoutput=1

첫 번째 줄에서 arXiv가 PDF로 컴파일되도록 강제합니다. 클래스를 추가하면 a4paperarXiv가 지오메트리를 가지고 놀지 못하게 될 수도 있습니다.

어떤 이유로 위의 텍스트로도 작동하게 할 수 없는 경우 PDF를 직접 제출하는 것이 더 간단할 수 있으며, 다음과 같이 PDF가 LaTeX에 의해 생성되었다는 사실을 숨길 수 있습니다(그렇지 않으면 arXiv에서는 제출을 허용하지 않습니다). PDF):

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

관련 정보