! Undefined control sequence는 가장 자주 나오는 LaTeX 오류로, LaTeX가 알지 못하는 명령(\name)을 만났다는 뜻입니다. 원인은 거의 세 가지입니다. 철자 오류, 불러오지 않은 패키지, 정의하지 않은 사용자 명령입니다. 이 페이지에서 차례로 확인합니다.
메시지 읽는 법
오류는 ! Undefined control sequence 다음에 l.NN으로 해당 줄을 보여 주며, 알 수 없는 명령 바로 뒤에서 줄을 끊어 표시합니다. 줄바꿈 직전의 토큰이 LaTeX가 모르는 명령입니다. 다음은 \frac를 \fra로 잘못 입력한 예입니다(일반적인 오류 읽기는 “오류 읽기와 디버깅” 참조).
terminal
! Undefined control sequence.
l.12 \fra
c{1}{2}세 가지 원인과 대처
- 철자 오류(가장 흔함) —
\fra→\frac,\textbnf→\textbf같은 오타입니다. 올바른 철자로 고칩니다. - 패키지를 불러오지 않음 — 그 명령을 제공하는 패키지를
\usepackage하지 않았습니다(예:\includegraphics는graphicx,\toprule은booktabs, 많은 수식 기호는amsmath가 필요). 프리앰블에서 불러옵니다. - 사용자 명령이 정의되지 않음 —
\newcommand정의를 잊었거나, 정의보다 앞에서 썼거나, 스코프 밖입니다. 정의를 첫 사용보다 앞에 둡니다.
찾는 요령
l.NN 바로 앞의 토큰이 정의되지 않은 명령이므로, 에디터에서 그 줄을 봅니다. 짐작이 가지 않으면 최근 추가한 명령이나 패키지를 먼저 의심하는 것이 빠릅니다. 어떤 명령이 어느 패키지의 것인지 모르겠다면 texdoc PACKAGE로 찾아볼 수 있습니다. 원인을 좁히려면 의심되는 부분을 주석 처리하고 다시 컴파일하는 것도 효과적입니다.