숫자 대신 물음표

라벨에는 또 다른 패스가 필요합니다. 캡션 뒤의 라벨 배치.

숫자 대신 물음표

컴파일하면 그림이나 방정식 번호가 있어야 하는 위치에 PDF에 ’??’가 표시됩니다. 이는 소스의 오류가 아닙니다. LaTeX가 아직 해결할 수 없는 참조를 렌더링하는 방법이며 일반적으로 수정 사항은 다시 컴파일됩니다.

한 번의 패스로는 충분하지 않은 이유

LaTeX는 단일 패스로 문서를 위에서 아래로 읽습니다. \label을 만나면 현재 숫자를 .aux 파일에 씁니다. \ref를 만나면 이전 실행에서 작성한 .aux 파일에서 숫자를 찾습니다. 새로운 컴파일에는 이전 실행이 없으므로 모든 참조는 ??로 인쇄됩니다. 두 번째 패스는 완성된 .aux 파일을 읽고 숫자를 채웁니다. Oleafly의 번들 컴파일러는 숫자가 확정될 때까지 자동으로 패스를 다시 실행하지만 pdflatex를 직접 구동하는 경우 두 번째 컴파일이 작업입니다.

언제 ?? 두 번째 패스에서 살아남음

물음표가 계속 나타나면 세 가지 사항을 확인하세요. 먼저 \ref의 철자를 \label과 문자별로 비교하세요. 레이블은 대소문자를 구분하며 공백도 포함됩니다. 둘째, 라벨이 어디에 있는지 확인하세요. \label은 가장 최근에 밟은 카운터의 값을 기록하고 부동 소수점에서는 카운터를 밟는 \caption이므로 레이블은 캡션 뒤에 와야 합니다.

\begin{figure}
\centering
\includegraphics[width=0.7\textwidth]{plot.pdf}
\caption{Convergence of the estimator.}
\label{fig:convergence}
\end{figure}
Figure~\ref{fig:convergence} shows the effect.

캡션 앞에 배치된 레이블은 문제 없이 컴파일되지만 잘못된 카운터(일반적으로 현재 섹션)를 선택하므로 참조는 ‘??’ 대신 그럴듯하지만 잘못된 숫자를 인쇄합니다. 그 변형은 놓치기 쉽기 때문에 더 나쁩니다. 셋째, .aux 파일이 실행 중에 삭제되거나 컴파일이 중단된 경우 기록된 레이블이 불완전할 수 있습니다. 깨끗한 상태에서 다시 컴파일하십시오.

경고 읽기

로그는 당신이 어떤 경우에 있는지 알려줍니다. “정의되지 않은 참조가 있었습니다”는 적어도 하나의 \ref가 아무것도 발견되지 않았음을 의미합니다. “레이블이 변경되었을 수 있습니다. 상호 참조를 올바르게 얻으려면 다시 실행하세요.“는 또 다른 단계에서 문제가 해결된다는 의미입니다. “레이블 곱셈 정의”는 두 개의 \label 명령이 하나의 이름을 공유하고 LaTeX는 그 중 하나를 자동으로 사용하므로 모든 레이블이 고유할 때까지 이름을 바꾸는 것을 의미합니다. eq:, fig:tab: 접두사를 사용하는 명명 규칙을 사용하면 충돌이 거의 발생하지 않고 소스를 더 쉽게 검색할 수 있습니다. 레이블 워크플로 자체는 방정식의 숫자 및 포인터에서 다룹니다.

로그 읽기(으)로 돌아가기