정의되지 않은 제어 순서
알 수 없는 명령 이름: 오타, 패키지 누락, 잘못된 엔진.
정의되지 않은 제어 순서
증상
컴파일은 ! 정의되지 않은 제어 시퀀스. 그런 다음 로그에는 문제가 발생한 줄이 두 개로 나누어 표시됩니다. TeX가 읽은 모든 내용과 문제가 있는 명령을 포함하여 한 줄에 있고 나머지 소스 줄은 그 아래에 있습니다. 위쪽 줄의 마지막 토큰은 TeX가 인식하지 못한 명령입니다. 이는 이 오류를 정확하게 찾기가 더 쉬운 오류 중 하나입니다.
왜 그런 일이 일어나는가
제어 시퀀스는 백슬래시로 시작하는 모든 항목입니다. TeX에는 고정된 어휘가 없습니다. 명령은 커널, 문서 클래스, 패키지 또는 사용자 고유의 \newcommand가 정의했기 때문에 존재합니다. TeX가 백슬래시 뒤에 아무것도 정의되지 않은 이름을 읽으면, 사용자가 의미하는 바를 추측할 수 없어 중지됩니다. 이 오류는 일반적으로 명령이 “잘못”된 것에 관한 것이 아닙니다. 이 문서에서는 이 엔진 아래에 해당 이름이 알려지지 않았다는 내용입니다.
3번 점검으로 해결
먼저 철자를 확인하세요. 대부분의 경우 \textbf 대신 \texbf, \label 대신 \lable 또는 두 계정의 이름을 분리하는 공백이 있습니다. 로그의 줄 번호를 보면 바로 오타가 발생합니다.
철자가 맞다면 정의 패키지가 누락되었을 수 있습니다. \includegraphics는 \usepackage{graphicx} 없이는 아무 것도 하지 않으며, \toprule에는 booktabs가 필요하고, \SI에는 siunitx가 필요합니다. 이는 다른 문서나 모델의 답변에서 스니펫을 복사할 때 가장 문제가 됩니다. 본문 텍스트는 따라오고 서문 줄은 따라오지 않습니다. 모든 명령 설명에서 명령을 정의하는 패키지를 찾아 \usepackage 줄을 추가하고 다시 컴파일하세요. 패키지 자체가 설치되지 않은 경우 누락된 패키지 설치를 참조하세요.
패키지가 로드되고 오류가 지속되면 엔진을 의심해 보세요. 일부 명령은 특정 엔진에만 존재합니다. \fontspec 및 그 친척에는 XeLaTeX 또는 LuaLaTeX가 필요하며 pdfLaTeX에서는 정확히 이 오류와 함께 종료됩니다. 문서에 엔진을 지정하는 템플릿은 일반적으로 이러한 이유로 엔진을 지정합니다. 이 프로젝트의 엔진에서 차이점을 설명합니다.
알아두면 좋은 두 가지 특징
순서가 중요합니다: 이를 정의하는 \usepackage 줄 앞에 사용된 명령은 그 시점에서 아직 정의되지 않았으므로 \begin{document} 위의 프리앰블에서 패키지 로딩을 유지하세요. 그리고 하나의 오류는 종종 다른 오류를 숨깁니다. 왜냐하면 TeX가 복구된 후에는 뒤따르는 모든 것을 잘못 읽을 수 있기 때문입니다. 로그에서 정의되지 않은 첫 번째 제어 시퀀스를 수정하고 다시 컴파일한 다음 남은 내용을 살펴보세요.