Опубликован: 07.02.2007 | Доступ: свободный | Студентов: 4015 / 1341 | Оценка: 4.56 / 3.95 | Длительность: 23:09:00
Специальности: Художник
Лекция 1:

Элементарное введение

Количество различных сообщений об ошибках, которые может выдавать TeX , составляет несколько сотен, и нормальная реакция на них обычно такая же, как в нашем эксперименте; сейчас мы рассмотрим еще две типичные ошибки, реакция на которые должна быть иной.

Во-первых, может случиться, что в качестве аргумента команды \input задано имя несуществующего файла. В этом случае вы получите сообщение наподобие следующего:

! LaTeX Error: File `ttst.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name:

В ответ на это следует набрать правильное имя файла и нажать на " ввод" , и трансляция благополучно продолжится. Если вообще никакого файла нет (например, TeX запущен по ошибке), наберите null — это всегда существующий пустой файл. (В некоторых версиях — nul с одним l.)

Можно отреагировать на эту ошибку и так же, как на любую другую: нажать x и "ввод" (трансляция прервется) или s и "ввод" (неправильная команда \input будет проигнорирована, на дальнейшие ошибки TeX будет реагировать так, как если бы вы все время нажимали " ввод"). А если вы работаете с LaTeX'ом под операционной системой UNIX или каким-то ее аналогом (Linux, например), то в ответ на сообщение о такой ошибке можно и попросту нажать "ввод", и она будет проигнорирована.

Если команда \input с именем несуществующего файла попадется TeX'у после того, как вы в ответ на какую-то из прежних ошибок сказали s, то трансляция на этом месте тем не менее остановится и TeX поинтересуется верным именем файла.

Вторая ошибка, о которой мы хотели сказать, строго говоря, ошибкой не является; скорее, это нештатная ситуация. Чтобы смоделировать ее, проведем такой эксперимент: удалим из нашего файла test.tex последнюю строчку, гласящую "\end{document}", и снова запустим LaTeX для обработки этого файла. Нажав сколько-то раз "ввод", мы обнаружим, что работа TeX'а не закончилась, а на экран выдана звездочка: *. Эта звездочка — приглашение TeX'а ввести еще текст или команды; она появляется, когда в исходном тексте отсутствует команда для TeX'а "завершить работу" (в LaTeX'е эта команда входит в качестве составной части в комплекс действий, выполняемых командой \end{document} ). Теперь можно вводить с клавиатуры любой текст и команды - TeX отреагирует на них так же, как если бы этот текст и команды присутствовали в вашем файле. Не будем баловаться, а просто наберем \end{document} и нажмем на "ввод", после чего трансляция благополучно завершится. Вряд ли вы будете очень часто забывать последнюю строчку в исходном тексте, но иногда, в результате какой-либо сложной ошибки, может случиться так, что TeX "не заметит" строки \end{document}, и вот тогда-то вы и окажетесь лицом к лицу с TeX'овским приглашением-звездочкой.

Бывают и такие хитрые ошибки, что \end{document} в ответ на приглашение-звездочку LaTeX не удовлетворяет и на экране снова появляется звездочка. На этот случай в LaTeX'е предусмотрено последнее средство: команда \stop. Если вы введете ее в ответ на TeX'овское приглашение, то, скорее всего, трансляция все-таки прервется. Если и \stop не помогает, остается только перезагрузить компьютер или "убить процесс" более цивилизованным способом.

Скажем еще об одном нередко встречающемся TeX'овском сообщении. Если вы открыли группу с помощью фигурной скобки, но забыли ее закрыть, то, даже если трансляция не будет прерываться, в конце вы заведомо получите такое TeX'овское предупреждение:

(\end occurred inside a group at level 1)

(вместо 1 может стоять и другая цифра, в зависимости от того, сколько вложенных групп вы забыли закрыть). В частности, такое сообщение будет, если вы забыли закрыть или неправильно закрыли какое-то LaTeX'овское окружение (но в этом случае LaTeX выдаст вам и свое сообщение об ошибке, как в нашем примере с \begin{center} и \end{centrr} ).

Наряду с пассивной реакцией на ошибки — все время нажимать на " ввод" или сказать s — есть и другая возможность: прямо с клавиатуры вносить исправления в тот текст, который " видит" TeX . На содержимое файла это не повлияет, но изменения в файл можно будет внести и позднее, руководствуясь тем, что записано в log-файле. При этом может сэкономиться время за счет того, что будет меньше "наведенных" ошибок и, как следствие, потребуется меньше прогонов TeX'а для отладки.

Чтобы внести исправления с клавиатуры, надо нажать i или I и затем "ввод". На экране появится такое приглашение:

insert>

В ответ на это приглашение следует ввести тот текст и/или команды, которые вы хотите вставить в текст, читаемый TeX'ом. Чтобы продемонстрировать это на практике, давайте приведем файл test.tex в исходное состояние, вернув в него строку \end{document}, и еще раз запустим LaTeX для его обработки. В ответ на первое же сообщение (по поводу несуществующей команды "TeXpert") нажмем i , а затем, в ответ на приглашение insert>, наберем правильный текст.

TeX pert

и нажмем на "ввод". В ответ на вторую ошибку (когда мы в команде \end допустили опечатку в имени окружения center) скажем сначала i, а затем (в ответ на приглашение) "\end{center}" (кстати, можно делать такие вещи и в один шаг: сразу набрать "i\end{center}" и нажать " ввод"). В ответ на следующую ошибку ничего не остается, как по-прежнему нажать на "ввод": те символы в исходном тексте, между которыми должен был стоять пропущенный знак доллара, уже поглощены TeX'ом, и вставить его куда надо в данный момент невозможно; зато в ответ на следующую ошибку ( "\lrft" вместо \left ) наберем "i\left" и нажмем на "ввод". Следующей (" наведенной") ошибки вообще не будет (ведь на сей раз в тексте, который видит TeX , команда \left присутствует, а поэтому и на команду \right он отреагирует правильно); наконец, в ответ на последнюю ошибку опять ничего не остается, кроме как нажать на "ввод": вставить закрывающую фигурную скобку между 4 и знаком равенства прямо с клавиатуры невозможно. Теперь можно просмотреть, как на сей раз будет выглядеть на печати наш текст; некоторые несуразности наподобие \sqrt{4=2} в нем останутся, но их будет меньше, чем если бы мы нажимали на "ввод" : не будет потеряно слово "TeXpert", центрированная строка будет действительно центрирована, формула

\frac{25}{36}=\left(\frac{1}
   {1+\frac{1}{5}}\right)^2
будет выглядеть так, как надо. Теперь остается внести исправления в исходный файл (справляясь с тем, что записано в log-файле) и запустить LaTeX вторично, чтобы получить безошибочный текст.

Как мы уже отмечали, в ответ на сообщение об ошибке всегда можно прервать трансляцию, нажав X или x и "ввод"; кроме того, бывают случаи, когда TeX прерывает трансляцию "по своей инициативе". На практике важны два случая:

  • TeX обнаружил 100 ошибок в пределах одного абзаца — тогда выдается сообщение (That makes 100 errors; please try again.)
  • TeX'у не хватило памяти — тогда выдается сообщение типа ! TeX capacity exceeded, sorry [main memory size=263001].

Нехватка памяти может возникнуть в результате таких ошибок, из-за которых TeX "зацикливается"; тогда достаточно исправить ошибку. Иногда памяти может действительно не хватить. Так бывает, если в тексте встречаются чудовищно длинные абзацы7На моем домашнем компьютере TeX'овская память иссякла, когда длина абзаца превысила 34 страницы. или сверхсложные таблицы с очень большим количеством строк и столбцов (см. " лекцию 4 " по поводу таблиц). Если вы встретились с такой проблемой, то можно проконсультироваться со специалистом (или самому изучить по книге [2]), как использовать TeX более эффективно (в частности, TeX можно научить переваривать сколь угодно длинные абзацы). Можно также попробовать найти транслятор TeX'а, дающий возможность работать с увеличенным объемом памяти.

Скажем пару слов про более редкие способы реакции на ошибки. Во-первых, в ответ на приглашение ? можно набрать h или H и нажать "ввод". В этом случае TeX выдаст на экран дополнительную информацию по поводу вашей ошибки (вряд ли вы много из нее почерпнете, если вы не TeX ник), а затем еще раз приглашение ?. Во-вторых, можно набрать r или R (и " ввод", естественно); результат будет такой же, как если бы вы сказали s , с той разницей, что в случае, когда аргументом команды \input служит несуществующий файл, никаких вопросов задаваться не будет, а трансляция просто прервется. Наконец, можно набрать Q или q (и "ввод"): результат будет такой же, как от R , с той разницей, что на экран не будет выдаваться вообще ничего (в log -файл все будет записано).

Наконец, режимы реакции на ошибки, задаваемые с клавиатуры с помощью клавиш s , r или q , можно задать прямо в файле, написав в преамбуле одну из перечисленных ниже команд:

  • \scrollmode - равносильна нажатию s
  • \nonstopmode - равносильна нажатию r
  • \batchmode - равносильна нажатию q

Как изучать курс дальше?

Наш обзор основных понятий завершен, и вы уже можете подготовить с помощью LaTeX'а несложный текст. Дальнейшее чтение, в зависимости от ваших потребностей, можно построить по-разному: несколько последующих лекций почти независимы друг от друга, а внутри каждой из них материал расположен в порядке возрастания трудности.

В "лекции 2" подробно рассказано про набор математических формул.

"Лекция 3" посвящена набору текста " в малом": в ней рассказывается, в частности, как задавать в тексте шрифты разных начертаний и размеров, как набирать ударения над буквами и специальные типографские значки наподобие знака параграфа, как делать сноски и т.п.

"Лекция 4" посвящена оформлению текста " в целом": в ней подробно рассказано про то, какие бывают классы документов и чем они отличаются друг от друга, как устроить разбиение текста на разделы таким образом, чтобы LaTeX автоматически создавал заголовки этих разделов и к тому же автоматически их нумеровал, как оформлять титульный лист, как создать оглавление, и тому подобное.

В "лекции 5" описаны так называемые псевдорисунки - примитивные картинки, которые можно создавать, не выходя за рамки LaTeX'а.

В "лекции 6" рассказывается о печати таблиц с помощью LaTeX'а.

В "лекции 7" объяснено, как можно повысить эффективность своей работы в LaTeX'е, создавая собственные команды. Первые разделы этой лекции можно (а скорее всего, и нужно) читать параллельно с "лекцией 2" .

Две последние лекции предназначены прежде всего для читателей, интересующихся не только набором, но и версткой. В "лекции 8" рассказывается о таких фундаментальных понятиях TeX'а, как "блоки" и "клей"; заключительная " лекция 9" , предполагающая знание всего предыдущего материала, рассказывает, как изменить стандартный стиль оформления документов, предоставляемый LaTeX'ом, применительно к своим нуждам.

Курс завершается различными приложениями, посвященными более частным вопросам; об их содержании можно узнать из оглавления.

Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров