Неопределенная последовательность управления

Неизвестные имена команд: опечатки, отсутствующие пакеты, неправильный движок.

Неопределенная последовательность управления

Симптом

Компиляция останавливается с помощью `! Неопределенная последовательность управления. Затем в журнале отображается строка, в которой это произошло, разбитая на две части: все, что TeX прочитал, включая команду-нарушитель, в одной строке, и оставшуюся часть исходной строки под ней. Последний токен в этой верхней строке — это команда, которую TeX не распознал, что делает эту ошибку одной из самых простых для точного обнаружения.

Почему это происходит

Управляющая последовательность — это все, что начинается с обратной косой черты. TeX не имеет фиксированного словаря: команды существуют только потому, что они определены ядром, классом документа, пакетом или вашим собственным \newcommand. Когда TeX читает обратную косую черту, за которой следует имя, которое ничем не определено, он не может догадаться, что вы имели в виду, и останавливается. Ошибка никогда не связана с тем, что команда вообще «неправильная». Речь идет о том, что это имя неизвестно в этом документе на данный момент под этим движком.

Исправим за три проверки

Сначала проверьте орфографию. \texbf вместо \textbf, \lable вместо \label или в большинстве случаев случайный пробел, разбивающий имя на две учетные записи. Номер строки журнала приведет вас прямо к опечатке.

Если написание правильное, вероятно, определяющий пакет отсутствует. \includegraphics ничего не делает без \usepackage{graphicx}, \toprule требует booktabs, а \SI требует siunitx. Сложнее всего это происходит, когда вы копируете фрагмент из другого документа или ответа модели: основной текст появился, а строка преамбулы — нет. Найдите, какой пакет определяет команду, в Объяснение каждой команды, добавьте строку \usepackage и перекомпилируйте. Если сам пакет не установлен, см. Установить отсутствующий пакет.

Если пакет загружен, а ошибка не устранена, заподозрите движок. Некоторые команды существуют только в определенном движке: \fontspec и его родственники требуют XeLaTeX или LuaLaTeX и исчезнут под pdfLaTeX именно с этой ошибкой. По этой причине шаблоны, в документации которых указан движок, обычно делают это. Какой движок для этого проекта объясняет различия.

Две особенности, которые стоит знать

Порядок имеет значение: команда, используемая перед строкой \usepackage, которая определяет ее, в этот момент все еще не определена, поэтому сохраняйте загрузку пакета в преамбуле, над \begin{document}. И одна ошибка часто скрывает другую, потому что после восстановления TeX может неправильно прочитать все последующее. Исправьте в журнале первую неопределённую управляющую последовательность, перекомпилируйте и только потом смотрите, что осталось.

Вернуться к Журнал грамотности