두 번 이상 컴파일하는 이유

Aux 파일, 참고문헌 통과 및 참조가 인쇄되는 이유 ?? 첫 번째 실행에서.

두 번 이상 컴파일하는 이유

조만간 문서를 편집하고 PDF를 열면 그림 번호나 인용이 있어야 할 곳에서 ’??’를 찾을 것입니다. 아무것도 깨지지 않았습니다. 단일 컴파일은 파일을 한 번 통과하는 것이며 일부 정보는 한 번 통과하면 실제로 알 수 없습니다.

여기에 미니어처의 문제가 있습니다. 2페이지에 “see Figure \ref{fig:results}“라고 썼지만 그 그림은 7페이지에 있습니다. 엔진이 2페이지를 조판할 때 아직 7페이지에 도달하지 않았으므로 그림에 어떤 숫자가 나올지 알 수 없습니다. 첫 번째 페이지가 끝나기 전에 모든 섹션의 페이지 번호가 필요한 목차에도 동일하게 적용됩니다.

엔진이 이를 해결하는 방법

LaTeX 엔진은 .tex 파일을 읽고, 모든 매크로를 확인하고, PDF를 작성합니다. PDF와 함께 작은 도우미 파일도 작성합니다. 레이블 및 인용을 위한 ‘.aux’, 목차를 위한 ‘.toc’, 형식화된 참고문헌을 위한 ‘.bbl’. 이 파일은 엔진이 미래의 자체를 위해 남겨두는 메모입니다.

  1. 첫 번째 단계에서 엔진은 텍스트를 조판하고 만나는 모든 \label\cite.aux 파일에 기록하고 아직 알지 못하는 숫자가 필요할 때마다 ??를 인쇄합니다.
  2. 무엇이든 인용하면 참고문헌 도구(bibtex 또는 biber)가 .aux 파일을 읽고 .bib 데이터베이스에서 각 인용을 찾은 다음 형식이 지정된 참조 목록을 .bbl 파일에 기록합니다.
  3. 두 번째, 때로는 세 번째 패스에서 엔진은 해당 도우미 파일을 다시 읽어 상호 참조, 목차 항목 및 인용 레이블이 최종적으로 실수로 확인됩니다.

최신 설정에서는 이러한 패스가 자동으로 실행되므로 실제로 명령을 직접 입력하는 경우는 거의 없습니다. 그러나 주기를 알면 증상이 설명됩니다. 레이블이나 인용을 추가한 후 새로운 ’??’는 도우미 파일이 아직 따라잡지 못했음을 의미하며, 한 번 더 컴파일하면 문제가 해결됩니다.

엔진은 한 줄에 하나씩

여러 프로그램이 “엔진” 역할을 할 수 있습니다. pdfLaTeX는 가장 폭넓은 저널 지원을 제공하는 전형적인 선택입니다. XeLaTeX는 전체 유니코드를 추가하고 시스템에 설치된 글꼴을 사용할 수 있게 해줍니다. LuaLaTeX는 또한 유니코드를 사용하며 고급 패키지용 스크립팅 언어를 포함합니다. Tectonic은 처음 필요할 때 요청 시 패키지를 다운로드하는 최신 엔진입니다. Oleafly는 이를 번들로 묶어 TeX 배포판을 먼저 설치하지 않고도 새 프로젝트를 컴파일합니다.

대부분의 문서에서는 차이점이 거의 중요하지 않습니다. 템플릿이나 장소에서 기대하는 것을 선택하고 계속 진행하세요. 의도적으로 선택해야 하는 경우 엔진 비교를 참조하세요.

실제로 뭔가 실패했을 때

실패한 컴파일은 긴 로그를 덤프하며 자연스러운 본능은 이를 상향식으로 읽는 것입니다. 저항하세요. 로그의 첫 번째 오류를 읽고 해당 오류만 수정하세요. 이후의 오류는 첫 번째 오류로 인해 계단식으로 발생하는 노이즈인 경우가 많습니다. 두 번 연속 성공적인 컴파일 후에도 참조가 여전히 ??를 인쇄하는 경우, 일반적인 범인은 패스 누락이 아니라 \label 또는 \ref 이름의 오타입니다.

루프 열기(으)로 돌아가기