Введение в LaTeX (2006, Голованева Ф.В., Шабров С.А.)

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Введение в LATEX
Учебно-методическое пособие для студентов
Составители:
Голованева Ф.В.
Шабров С.А.
Воронеж
2006
Утверждено научно-методическим советом
математического факультета
15 марта 2006 года,
протокол № 7
Рецензент Стенюхин Л.В.
Учебно-методическое пособие подготовлено на кафедре уравнений в частных
производных и теории вероятностей и кафедре математического анализа
математического факультета Воронежского государственного университета.
Рекомендуется для студентов 3–5 курсов всех форм обучения.
Для специальности 010100 (510100) — Математика
Пособие написано в соответствии с программой курса «Введение в LATEX».
1
Входной файл
LATEX предназначен для превращения исходного текста (“рукописи”)
в печатный документ (“типографский оттиск”). Помимо собственно “рукописи” LATEX должен получить указания (в виде команд и процедур),
что с ней делать и как. Вся исходная информация должна быть подготовлена в виде входного файла, который может быть создан с помощью
любого редактора (текстового процессора), умеющего записывать файлы
в текстовом формате. Имя файла name.ext состоит из двух частей: name
собственно и есть имя файла, а ext — расширение имени файла. Допустимое количество символов в name и ext зависит от типа компьютера,
а точнее, от операционной системы, установленной на нем. Например,
операционная система MS DOS для персональных компьютеров IBM допускает до 8 символов в имени файла и до 3 символов в расширении
имени.
Операционная система DOS не делает различия между строчными и
прописными буквами в именах файлов, но LATEX делает, хотя и не накажет, а просто предупредит, если вдруг вместо строчной буквы встретит
прописную.
Входной файл для LATEX’а должен иметь расширение tex и в самом
начале содержать команду:
\documentclass[options]{class}
в которой [options] и {class} являются соответственно необязательным и обязательным аргументами. Обязательный аргумент в фигурных
скобках может быть именем одного из шести стандартных классов печатного документа: article, letter, report, book, proc или slides.
Класс article (статья) лучше всего подходит для коротких текстов,
но может удовлетворить большинство других потребностей. Он наиболее
универсален, хотя техническому отчету, возможно, более соответствует
класс report (отчет), а название класса book (книга) говорит само за
себя. Если предстоит написать десяток писем так, как это делается в
США, нескольким адресатам, следует выбрать класс letter (письмо).
Класс proc (доклад) предназначен для научных публикаций в трудах по
итогам конференций. Класс slides (слайды) используют для подготовки
демонстрационных материалов, набранных крупным шрифтом.
Необязательный аргумент (для краткости называемый опцией) вместе
с указывающими на его необязательность квадратными скобками может
3
вообще отсутствовать. Опции модифицируют стиль печатного документа, определяемый выбором его класса.
Следующей обязательной командой является
\begin{document}
Текст перед \begin{document} называется преамбулой. Преамбула
обычно содержит команды, модифицирующие выбранный класс печатного документа, а также определения новых команд LATEX’а. Собственно
текст документа начинается после \begin{document}, а заканчивается
командой
\end{document}
Всё, что следует за \end{document}, LATEX попросту игнорирует.
Приведем пример входного файла «полезного» для начинающих освоение LATEX’а.
Пример
% Первый файл. Имя: first.tex
\documentclass[a4paper]{article}
\usepackage[cp1251]{inputenc} % или [cp866]
\usepackage[russian]{babel}
\usepackage{amsfonts,amssymb,amsmath}
\textwidth=160mm \textheight=250mm
\hoffset=-10mm \voffset=-30mm
\title{Начальные сведения\thanks{Автор благодарен\ldots}}
\author{Иванов И.И.} \date{1 февраля 2004}
\begin{document}
\maketitle
\begin{abstract}
Это пример входного файла.
\end{abstract}
\section{Начнем освоение}
В \LaTeX’е окончание слов и предложений отмечается пробелами.
Сколько пробелов набрано не имеет значения: несколько
пробелов считаются как один.
Конец строки также считается пробелом.
Несколько пустых строк считаются как одна. Наличие же
одной пустой строки обозначает конец абзаца.
4
Разумное форматирование входного файла
облегчает его чтение, проверку и внесение изменений.
\subsection{Приступим к математике}
Решим сначала уравнение $x+3=7$. Однако не надо думать,
что \LaTeX{} умеет решать уравнения. У него другое
предназначение. В \LaTeX’е можно красиво расположить
математическую формулу отдельной строкой:
$$ -\frac{d}{d\sigma}(pu’)+u\frac{d}{d\sigma}Q=
\frac{d}{d\sigma} F.$$
Процедура \texttt{equation} позволяет автоматически
нумеровать формулы.
\begin{equation}
u(x)=\int_0^1G(x,s)dF(s).
\end{equation}
Существуют и другие способы нумерации формул.
\subsection{Выделение текста}
Довольно часто требуется выделить часть текста, например,
\textit{курсивом}
или \textbf{так!}
\end{document}
А куда подевался этот текст?
Результат работы LATEX’а с этим файлом можно увидеть на рис. 1.
Начальные сведения1
Иванов И.И.
1 февраля 2004
Это пример входного файла.
§ 1 Начнем освоение
В LATEX’е окончание слов и предложений отмечается пробелами. Сколько
пробелов набрано не имеет значения: несколько пробелов считаются как
один. Конец строки также считается пробелом.
Несколько пустых строк считаются как одна. Наличие же одной пустой
строки обозначает конец абзаца.
Разумное форматирование входного файла облегчает его чтение, проверку
и внесение изменений.
§1..1. Приступим к математике
Решим сначала уравнение x + 3 = 7. Однако не надо думать, что LATEX
умеет решать уравнения. У него другое предназначение. В LATEX’е можно
красиво расположить математическую формулу отдельной строкой
−
d
d
d
(pu0 ) + u Q =
F.
dσ
dσ
dσ
Процедура equation позволяет автоматически нумеровать формулы.
Z 1
u(x) =
G(x, s)dF (s).
(1)
0
Существуют и другие способы нумерации формул.
§1..2. Выделение текста
Довольно часто требуется выделить часть текста, например, курсивом или
так!
1
Автор благодарен. . .
Рисунок 1
Команды \title (заголовок), \author (автор) и \date (дата) могут
располагаться после \begin{document} (но до команды \maketitle, которая, собственно, и печатает заголовок, фамилию автора и дату в печатном документе). Если команда \date отсутствует, то будет напечатана текущая дата. Строки, начинающиеся с %, являются строкамикомментариями и LATEX’ом не обрабатываются.
Команда
\usepackage[russian]{babel}
достойна того, чтобы ее обсудить подробнее. Если \documentclass
определяет основную структуру печатного документа, то команда
\usepackage вносит в нее дополнения и изменения (порой значительные). Команда \usepackage загружает пакет. Пакет — это служебный
файл с расширением sty. В данном случае загружается файл babel с
опцией russian. Главная его задача включить механизм переноса русских слов. Он также заменяет на русские эквиваленты все английские
слова, которые LATEX автоматически вставляет в печатный документ.
Например, слово “Chapter” перед началом главы заменяется на слово
“Глава”.
Имеется множество стандартных пакетов, входящих в основной комплект LATEX’а, и еще больше разного рода «самоделок». Стандартными,
например, являются пакеты graphics и graphicx (для импортирования
графических изображений), color (для работы с цветом), longtable
(для набора многостраничных таблиц).
2
Буквы и символы
Большинство команд LATEX’а описывает логические структуры. Текст
документа содержит структуры совершенно различных размеров — от
отдельной буквы до текста документа в целом.
LATEX распознает строчные и прописные буквы, десять цифр от 0 до
9 и шестнадцать знаков препинания:
. , : ; ? ! ‘ ’ @ * / - ( ) [ ]
Причем ‘ и ’ используются в качестве левой и правой кавычек. Символ
" создает двойные правые кавычки, но не имеет левого аналога, поэтому вряд ли его стоит использовать, поскольку двойные кавычки можно
набрать, удвоив одинарные. Пять символов:
7
+ = | < >
применяются в таблицах и математических формулах, хотя + и = допускаются также и в обычном тексте. Есть еще десять символов, которые
зарезервированы для служебного пользования и имеют следующее назначение (здесь приводится краткое пояснение):
#
$
%
&
{
}
_
^
\
~
обозначает параметр в командах и процедурах,
используется для написания математических формул,
начинает комментарий,
разделяет колонки в таблицах,
открывает блок,
закрывает блок,
объявляет блок нижним индексом в формуле,
объявляет блок верхним индексом в формуле,
является признаком команды,
запрещает перенос на следующую строку.
Чтобы воспроизвести служебные символы в печатном документе,
необходимы специальные команды. Первые 7 печатаются с помощью команд: \# \$ \% \& \{ \} \_ соответственно. «Обратный слэш» печатается с помощью команды \backslash; остальные два ^ и ~ принадлежат
особому классу знаков, называемых акцентами и используемых в алфавите некоторых иностранных языков.
Помимо перечисленных, имеются еще невидимые символы, а именно:
пробел и признак конца строки, которые вводятся в файл соответственно нажатием клавиш <Space> (пробел) и <Enter> (ввод). Эти и некоторые другие невидимые символы (например, табулятор) интерпретируются LATEX’ом совершенно одинаково. Поэтому мы также будем называть
их пробелами и при необходимости изображать символом ␣. Число следующих подряд пробелов несущественно: сто пробелов интерпретируются
как один, если только они не составляют целую пустую строку. Пустая
строка метит конец абзаца.
Длина есть мера расстояния. Ширина страницы, толщина линии или
интервал между строками специфицируются указанием длины в качестве аргумента соответствующих команд. Длину можно измерять в различных единицах. TEX знает следующие единицы измерения длины, применяемые в издательском деле:
8
mm
cm
in
pt
bp
pc
миллиметр,
сантиметр,
дюйм (1 in = 2.54 cm),
пункт (1 in = 72.27 pt),
большой пункт (1 in = 72 bp),
пайка (1 рс = 12 pt).
Явная длина записывается в виде десятичного числа, за которым следует обозначение единицы измерения. Десятичное число может иметь знак
и состоять из любого числа цифр, в том числе вообще не иметь цифр, но
тогда необходимо оставить десятичную точку. Между знаком (если он
есть), числом и обозначением единицы измерения допускаются пробелы,
однако пробелы нельзя оставлять между цифрами в числе и между буквами в обозначении единиц измерения. Следующий пример дает пять
образцов правильной записи длины:
3in
29pc
-.667cm 0mm
+ 42.1 pt
Нельзя записывать нулевую длину одним нулем без указания единиц
измерения. Нужно писать 0mm или 0in и т. д.
3
Команды
Общие правила синтаксиса LATEX’a объясним на примере команды
\documentсlass[options]{class}[release-date]
Условимся, что любой текст, напечатанный машинописным шрифтом,
как имя команды \documentclass, квадратные или фигурные скобки
следует вводить во входной файл в буквальном соответствии с определением команды. Напротив, текст, набранный прямым курсивом, может
изменяться. В данном случае options, class и release-date — это аргументы команды. Аргумент в фигурных скобках является обязательным. Он иногда может быть пустым — {} (даже без пробела между скобками), но пропуск самих фигурных скобок обычно приводит к ошибкам.
Аргументы в квадратных скобках [ ] не обязательны. Их часто называют опциями. Все или некоторые опции (вместе с квадратными скобками)
могу быть опущены, так что краткая форма команды \documentclass
такова:
\documeirtclass{class}
9
Пропущенные необязательные аргументы принимают значения по умолчанию. Если синтаксис команды допускает два необязательных аргумента, идущих один за другим, а использован только один, предполагается,
что указан первый, а опущен второй. Всё, не существенное в текущем
контексте, мы будем заменять многоточием. Так, если бы не было необходимости объяснять смысл обозначения class, то приведенный выше
пример мог быть таким:
\documentclass{...}
Пробелы между аргументами команд, а также между именем команды и первым аргументом игнорируются.
4
Имя команды
Шесть команд: # $ ~ & _ ^ имеют имя, состоящее только из одного символа. Символ % не является командой, но указывает, что LATEX
должен игнорировать все символы и пробелы, следующие за ним до конца строки. Символ % используется, чтобы отделить комментарий или
начать новую строку без ввода пробелов в конце предыдущей. Однако,
имя команды не может быть разбито между соседними строками даже с
помощью %.
Одна команда состоит из одного символа \␣ (обратного слеша), за которым следует пробел. Для обозначения пробела принято использовать
символ ␣. Поэтому эта команда записывается в виде \␣.
Еще одну группу образуют команды, которые состоят из \ и одного
символа, не являющегося буквой. Например, команда \, (обратный слеш
с запятой) добавляет пробел и может использоваться для раздвижения
кавычек. Другая команда \\ из этой группы вызывает принудительный
переход на новую строку в печатном документе.
Имена остальных команд начинаются символом \ (backslash), за которым следует одна или более букв. Признак конца имени такой команды
— любой символ, не являющийся буквой, а именно: цифра, знак препинания, знаки математических операций (кроме *), а также пробелы и
служебные символы. Привыкайте каждую команду заканчивать пробелом.
Чаще всего за именем команды следует левая фигурная или квадратная скобка, открывающая аргумент, или пробел, если аргументов нет.
Пробелы после имени команды игнорируются. LATEX различает строч10
ные и прописные буквы, поэтому \Omega и \omega есть прописная (Ω) и
строчная (ω) буквы греческого алфавита.
Некоторые команды имеют особую *-форму, когда за именем команды
стоит знак * (“звездочка”). Пример такой команды имеется в следующем
разделе.
5
Аргументы
Некоторые команды имеют только один и только необязательный аргумент. Команда \\ просто начинает новую строку, а \\[3mm] еще и
увеличивает расстояние до новой строки на 3 миллиметра.
В исходном файле
В выходном файле
Пример
Пример\\[3mm]
Снова пример\\
Третий пример
Снова пример
Третий пример
Если необязательный аргумент у такой команды опущен, а следующий отличный от пробела символ есть [, то LATEX ошибочно примет эту
квадратную скобку за начало необязательного аргумента. Чтобы избежать этой редкой ошибки, символ достаточно заключить в фигурные
скобки. В следующем примере слово ’[3mm]’ не является больше частью
команды \\:
Пример\\{[3mm]}
Снова пример\\
Третий пример
Пример
[3mm] Снова пример
Третий пример
Среди команд, обладающих *-формой, некоторые (в их числе все та
же команда \\) не имеют обязательных аргументов. Чтобы отличить
команду \\, за которой следует текст, начинающийся с *, от команды
\\*, звездочку нужно заключить в фигурные скобки:
Пример\\*
Снова пример\\{*}
Третий пример
Пример
Снова пример
* Третий пример
В этом примере команда \\*, как и \\, создает новую строку, однако
препятствует ее переносу на следующую страницу. Поэтому первая звез11
дочка в левой колонке является частью имени команды \\*, а вторая —
частью текста, следующего за \\.
6
Опции стандартных классов
Стандартные классы могут иметь опции, перечисленные ниже. Взаимоисключающие друг друга опции отделены вертикальной чертой |.
10pt|11pt|12pt устанавливает, что базовым (\normalsize) является
шрифт размером 10pt, 11pt или 12pt соответственно. Опции 11pt
и 12pt увеличивают размер шрифта в среднем на 10% и 20% соответственно по сравнению с опцией 10pt, которая используется по
умолчанию. Класс slides не поддерживает эти опции.
letter|legalpaper|executivepaper|a4paper|a5paper|b5paper
устанавливает размер листа бумаги, для которого будет сформатирован текст, в соответствии с табл. 1. По умолчанию испольТаблица 1: Таблица размера листа бумаги
Letter
8.5in×11in
Legal
8.5in×14in
Executive 7.25in×10.5in
A4
A5
B5
210mm×297mm
148mm×210mm
176mm×250mm
зуется letterpaper. Опции a5paper и b5paper не поддерживаются
классом proc.
landscape устанавливает, что текст будет сформатирован для повернутого на 900 листа бумаги выбранного размера. Эта опция меняет
местами значения ширины и высоты листа бумаги.
final|draft определяет режим маркировки проблемных для форматирования строк документа. Допустим, что LATEX не может найти хорошего места, где он мог бы разорвать строку и ее остаток перенести
на следующую. Тогда он формирует строку, выходящую за правую
границу текста. Предупреждение об этом выводится на экран и записывается в протокол компиляции (log-файл). Использование опции draft позволяет при просмотре dvi-файла выявить эти строки.
Они будут помечены в печатном документе закрашенным прямоугольником у края строки. Опция final используется по умолчанию и не помечает такие строки.
12
oneside|twoside форматирует документ для печати на одной или обеих сторонах листа. В последнем случае четные и нечетные страницы по-разному размещаются на листах бумаги, чтобы облегчить их
брошюровку. По умолчанию используется oneside, за исключением
класса book, в котором действует опция twoside (по умолчанию).
Отметим также, что twoside не может быть использована в классе
slides.
onecolumn|twocolumn печатает документ в одну или две колонки соответственно. Все классы, кроме proc, по умолчанию настроены на
печать в одну колонку. Кстати сказать, класс proc не поддерживает
опцию onecolumn, а опция twocolumn не поддерживается классами
slides и letter.
leqno устанавливает, что номера формул в математических уравнениях
печатаются слева, а не справа.
fleqn выравнивает формулы по левому краю, а не по центру.
Существуют еще и другие опции.
7
Процедуры и декларации
Процедура начинается с командной скобки \begin и закрывается командной скобкой \end:
\begin{env} ... \end{env}
Многоточие здесь символизирует тело продедуры. Аргумент еnv —
есть имя процедуры. Команда \begin может иметь дополнительные аргументы. Например, процедура tabular описана
\begin{tabular}[pos]{col}
...
\еnd{tabular}
Она имеет необязательный аргумент роs и обязательный col. Если
процедура имеет *-форму, звездочка присоединяется к имени процедуры, а не к команде \begin. Например:
\begin{table*}
...
\end{table*}
13
Процедуры могут быть вложены друг в друга. Иными словами, каждой открывающей командной скобке \begin{env1} должна соответствовать закрывающая командная скобка \end{env1}, и если внутри процедуры env1 имеется другая процедура env2, то ее тело должно целиком
находиться внутри тела первой процедуры. Следовательно, чередование
командных скобок должно быть следующим:
\begin{env1}
...
\begin{env2}
...
\end{env2}
...
\end{env1}
Всякий раз, когда фрагмент исходного текста рассматривается как
единый блок, нужно пометить его начало и конец. Для этой цели LATEX
резервирует два символа группирования: фигурные скобки { }. Фигурным скобкам LATEX отводит особую роль. Можно было бы сказать, что
фигурные скобки — это команды, но, строго говоря, это не совсем верно. Знаток TEX’a мог бы назначить другие символы на роль фигурных
скобок, но они вполне справляются со своей задачей.
Иногда полезно применять группирование, даже когда не нужно заботиться о структуре блока, а просто для улучшения контроля за проблемами. Рассмотрим к примеру команду \LaTeX, которая печатает логос
LATEX’а:
{\LaTeX}
или
\LaTeX{}
Команда, которая меняет значение или смысл параметра либо другой команды, являeтcя декларацией. В отличие от обычной команды декларация ничего не производит в печатном документе и поэтому может
располагаться в преамбуле входного файла. Область действия декларации начинается от места ее появления и заканчивается закрывающей
фигурной скобкой }, соответствующей первой скобке { перед декларацией. Командные скобки \begin и \end ограничивают область действия
деклараций так же, как это делают фигурные скобки. Декларация может быть отменена другой декларацией, действие которой противоречит
14
действию первой. В следующем примере \itshape, \scshape и \slshape
декларируют переход к шрифтам с разной формой, не меняя их серию,
семейство или размер:
{\slshape Приведем \itshape
еще один {фрагмент} пример
{\scshape входного} файла}
Приведем еще один фрагмент пример входного
файла
Декларация \slshape отменяется декларацией \itshape, а та — декларацией \scshape, которая, в свою очередь, действует только до первой закрывающей фигурной скобки. Командные скобки разделяют область действия деклараций точно так же, как фигурные скобки. В следующем примере декларация em действует только внутри тела процедуры
quote.
Этот текст предшествует
процедуре quote
\begin{quote}
\em Это тело процедуры.
\end{quote}
Этот текст следует за
процедурой.
Этот текст предшествует процедуре quote
Это тело процедуры.
Этот текст следует за процедурой.
Декларации, находящиеся в аргументах команд LATEX’а, действуют
только в пределах этих аргументов. Иными словами, скобки } и ], закрывающие аргументы команд, закрывают и область действия деклараций. Однако это не относится к командам, созданным Вами при помощи \newcommand и \renewсоmmаnd. При необходимости область действия
деклараций в аргументах таких команд следует ограничивать дополнительными фигурными или командными скобками. Следующие декларации являются глобальными:
\newcounter
\pagenumbering
\newlength
\setcounter
\thispagestyle
\newsavebox
\addtocounter
\pagecolor
\newtheorem
15
Область их действия не ограничивается никакими фигурными или командными скобками.
Декларации полезно оформлять в виде процедуры, если они действуют на большие фрагменты текста. Хотя для каждой декларации LATEX’a
имеется соответствующая ей процедура, обратное не верно. Например,
процедура center центрирует текст, но соответствующая ей декларация
называется \centering. Эта декларация определена LATEX’ом, поэтому
для нее нет соответствующей процедуры centering.
LATEX имеет множество процедур и допускает создание новых с помощью команды \newenvironment.
Процедура center центрирует текст, a flushleft и flushright выравнивают текст соответственно по левой и правой границам страницы.
LATEX имеет процедуры quote и quotation, использующиеся для квотирования текста. Можно сказать, что они выполняют роль кавычек для
длинных цитат. Обычно квотированный текст печатается с небольшим
отступом от правой и левой границ страницы.
Процедура verbatim печатает текст машинописным шрифтом.
Процедура verse применяется для печати стихов.
Процедуры itemize, description и enumerate применяются для составления списков.
Процедуры math, displaymath, equation и eqnarray печатают математические формулы, причем последние две еще и автоматически нумеруют их.
В процедуре picture доступны особые команды рисования.
Процедура minipage формирует боксы. Основное свойство бокса состоит в том, что его нельзя разрезать и нельзя по частям перенести со
страницы на страницу. В этом смысле любая буква также является боксом, но боксом малого размера.
Процедуры table и figure создают плавающие объекты. Они используются для размещения таблиц и рисунков, а также для создания подписей к ним.
Процедуры tabbing и tabular применяются для составления таблиц.
Процедура thebibliography печатает список литературы, позволяя
возложить на LATEX нумерацию ссылок.
Процедура theindex формирует алфавитный указатель.
Пометив с помощью команды \label{key} какой-нибудь меткой key
любой пронумерованный объект (например, формулу, таблицу и т. д.),
можно напечатать номер этого объекта в любом месте текста при помощи
команды \ref{key}.
16
Дополнительные возможности открывает использование пакетов, загружаемых командой \usepackage в преамбуле входного файла. Пакеты
образуют важное дополнение к процедурам и командам, составляющим
формат LATEX’a, которое автоматически загружается в начале компиляции входного файла.
Например, пакет graphics вводит команду \includegraphics, которая позволяет импортировать рисунки, подготовленные специализированными графическими программами.
Пакет longtable определяет процедуру longtable, предназначенную
для печати многостраничных таблиц.
Пакеты amsmath и amssymb существенно расширяют средства набора
и форматирования математических формул.
Пакет multicol вводит процедуру multicols, которая может форматировать текст в переменное число колонок.
Стандартный набор пакетов, распространяемых вместе с LATEX’ом,
включает в себя также пакеты для подключения дополнительных
PostScript шрифтов и для работы с текстами, написанными сразу на
нескольких языках.
Некоторые команды и процедуры не производят никакого текста в том
месте, где они стоят. LATEXрассматривает такую «невидимую» команду
в середине абзаца как невидимый текст. Вставка пробела или признака
конца строки одновременно до и после невидимого слова может создать
удвоенный пробел между видимыми словами. Для команд без аргументов проблемы с пробелами возникают редко, так как пробел игнорируется, если он следует за именем команды. Перечисленные ниже невидимые
команды и процедуры, имеющие аргументы, также удлиняют следующий за ними пробел, если имеется пробел перед ними:
\pagebreak
\color
\marginpar
\index
\linebreak
\nopagebreak
figure
\glossary
\vspace
\nolinebreak
\label
table
Любые другие невидимые команды с аргументами, появляющиеся внутри абзаца, должны быть присоединены непосредственно к предыдущему
слову. Полезно следовать этому правилу всегда, чтобы не задумываться
о возможных нестандартных ситуациях, когда вышеперечисленные команды и процедуры могут удвоить пробел. В сложных случаях можно
использовать команду
17
\ignorespaces
Она удаляет все пробелы, следующие за ней.
8
Неустойчивые команды
Ранее мы уже отмечали, что LATEX может переносить аргументы одних команд в аргументы других команд. Аргументы, которые куда-либо
передаются, называются подвижными. Над командой, находящейся в
подвижном аргументе, LATEX проделывает ряд операций, которые могут
расстроить механизм ее работы. Команды, поддающиеся расстройке, называются неустойчивыми в отличие от устойчивых команд, которым
ничего не страшно.
Например, команды \begin, \end, \footnote являются неустойчивыми, а декларации и команды переключения шрифта типа \Large,
\bfseries, \textbf устойчивы.
Неустойчивой команде, помещенной в подвижном аргументе, должна
предшествовать команда
\protect
Она действует только на команду, следующую за ней, причем ту не
следует окружать фигурными скобками:
\protect\begin ...
Хороший пример с \protect придумать трудно, так как обычно неустойчивым командам нечего делать в подвижных аргументах других команд.
Если же такое случилась, то неустойчивые команды в аргументе неустойчивой команды также должны быть защищены посредством \protect.
Нижеследующие команды и процедуры все имеют подвижные аргументы:
• Команды, аргументы которых могут быть вставлены в оглавление, список рисунков и таблиц, как-то: команды секционирования
типа \chapter, \section и т. д.; команды \addcontentsline и
\addtocontents, записывающие информацию в служебные файлы;
команда \caption, формирующая подписи к рисункам и таблицам.
Если необязательный аргумент используется с командами секционирования или \caption, то именно он является подвижным.
18
• Команды вывода на терминал \typeout и ввода с клавиатуры
\typein. Необязательный аргумент \typein не является подвижным.
• Команды, генерирующие текст верхнего колонтитула страницы:
\markboth (оба аргумента) и \markright.
• Процедура letter для составления писем.
• Команда \thanks для составления подстрочного примечания на титульной странице печатного документа.
• Символ @ в процедурах array и tabular. Хотя @ не являемся командой, неустойчивые команды в выражениях с @ должны быть
защищены посредством \protect, как если бы они находились в
подвижном аргументе.
Время от времени разработчики LATEX 2ε переводят команды, бывшие неустойчивыми, в разряд устойчивых. Команда \protect безвредна
и может предшествовать без всяких последствий даже устойчивой команде. Единственное исключение состоит в том, что команда \protect
не должна стоять перед командами, имеющими смысл длины, и не должна использоваться в аргументах команд \setcounter и \addtocounter,
работающих со счетчиками.
9
Шрифты, кернение и лигатуры
LATEX автоматически делает кернение сочетаний букв и распознает
лигатуры. Кернение — это способ печати, который регулирует средний
промежуток между соседними буквами. Этот промежуток зависит от
ширины букв. Некоторые пары букв смотрятся лучше, когда они стоят
более тесно, другие комбинации букв — когда они раздвинуты.
Лигатура — это комбинация символов, печатаемых одним символом.
Например, комбинации ff и fi являются лигатурами ff и fi. Информация, необходимая для кернения и выделения лигатур, заложена в метрических файлах шрифтов.
10
Экскурсия в море шрифтов
Выбор шрифта подчинен логической структуре текста. LATEX различает форму шрифта (shape), серию (series) и семейство (family). На
19
языке профессионалов серия шрифта называется насыщенностью, семейство — гарнитурой, а форма — начертанием.
По умолчанию используется шрифт формы upright, серии medium,
cемейства roman, поэтому три команды \textup, \textmd и \textrm выбрали один и тот же шрифт upright-medium-roman. Однако, комбинируя
команды, можно получить большой набор вариантов.
Некоторые комбинации могут быть недоступны. Если заказана недоступная комбинация, LATEX выведет на экран предупреждающее сообщение и заменит ее на ту, которая, по его разумению, ближе всего соответствует заказанной.
Каждой команде, из перечисленных выше, соответствует декларация.
Например, полужирный текст можно набрать либо при помощи команды
\textbf, либо при помощи декларации \bfseries.
Таблица 2: Соответствие между командами и декларациями
cmd
decl
cmd
decl
cmd
decl
\textup
\textit
\textsl
\textsc
\upshape
\itshape
\slshape
\scshape
\textmd
\textbf
\mdseries
\bfseries
\textrm \rmfamily
\textsf \sffamily
\texttt \ttfamily
Таблица 3: Примеры шрифтов
Форма шрифтов
Upright shape (прямая)
Italic shape (курсивная)
Slanted shape (наклонная)
Small caps shape (Капитель)
Серия шрифтов
Medium series (средняя)
Boldface series (полужирная)
Семейство шрифтов
Roman family (романский)
Sans serif family (рубленный)
Typewriter family (машинописный)
\textup{Upright shape ...}
\textit{Italic ...}
\textsl{Slanted ...}
\textsc{Small caps ...}
\textmd{Medium series ...}
\textbf{Boldface ...}
\textrm{Roman family ...}
\textsf{Sans serif ...}
\texttt{Typewriter ...}
Ни одна из этих команд или деклараций не может использоваться
в математических формулах, где для изменения шрифта применяются другие команды. Набор шрифтов, применяемых в математических
20
формулах, несколько отличается от шрифтов для обычного текста. Например, среди математических шрифтов обычно нет капительного, зато
имеются каллиграфические символы.
Таблица 4: Декларации переключения размера шрифта
Декларация
\tiny
\scriptsize
\footnotesize
\small
\normalsize
\large
\Large
Название
крошечный
индексный
подстрочный
маленький
стандартный
большой
большой
\LARGE
большой
\huge
огромный
\Huge
огромный
образец
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
А а ... я Я
Команды переключения шрифтов имеют длинные и неудобные имена.
EX предлагает команду \emph для логического выделения небольших
фрагментов текста, и этого вполне достаточно для подготовки визуально
идеального печатного документа. Допустим, автор желает, чтобы названия видов животных в его книге печатались курсивом. Тогда он может
определить команду \animal, которая будет делать то же самое, что и
команда \textit:
LAT
\newcommand{\animal}{\textit}
\animal{Муха} и \animal{слон}.
Муха и слон.
Если через некоторое время автор решит, что лучше напечатать машинописным шрифтом, он сможет легко изменить определение команды \animal. He следует писать \textit вместо \animal, так как команда
\textit может понадобиться для выделения терминов иного сорта. Хотя
команда \animal не короче, чем \textit, зато она ясно напоминает, для
чего предназначена, так как в переводе на русский слово animal означает
животное.
Имеется также набор деклараций для изменения размера (кегля)
шрифта. Они приведены в табл. 4. По умолчанию (если кегль не указан явно) действует декларация \normalsize.
21
11
Специальные символы
Широкий набор символов позволяет легко создавать тексты нестандартного написания. Фраза на французском языке «Nous sommes prẽts
à partir pour l’Université» во входном файле может выглядеть примерно
так:
Nous sommes pr\~ets \‘a partir pour l’Universit\’e
12
Слова и предложения
LATEX игнорирует то, как набран исходный текст во входном файле.
Он фиксирует только концы слов, предложений и абзацев.
Слова, как обычно, отделяются друг от друга одним или несколькими
пробелами.
Предложение заканчивается точкой (.), восклицательным (!) или вопросительным (?) знаками, за которыми следует пробел. После этих знаков LATEX обычно чуть увеличивает пробел.
В машинописном тексте правые и левые кавычки печатаются совершенно одинаково: ". LATEX изображает символ " как правые кавычки
". Чтобы напечатать левые кавычки (“), набирают два символа подряд:
‘‘. Тогда для единообразия правые кавычки набирают в виде двух апострофов: ’’. В текстах на английском и других иностранных языках
встречаются также одинарные кавычки ‘ и ’.
В редких случаях, когда цитата сама содержит цитату, и нужно «раздвинуть» кавычки, это можно сделать, добавив небольшой пробел с помощью команды \,.
Стандартный LATEX не содержит команд, соответствующих русским
кавычкам « и », но пакет babel, загруженный с опцией russian, обеспечивает несколько подходящих способов. Например, русские кавычки
можно набирать при помощи команд << и >>:
<<Время --- деньги>>
«Время — деньги»
13
Дефисы и тире
В текстовом режиме LATEX можно напечатать тире трех различных
размеров, если набрать один (кто-то), два (1941--1945) или три символа
’-’ подряд (Ромашка --- это цветок). LATEX печатает их как лигатуры.
22
Знак ’минус’ не является дефисом, хотя во входном файле они изображаются одинаковым символом. ’Минус’ может появляться только в математических формулах. Отметим, что в математическом режиме «двойной» дефис ‘--’ и «тройной» дефис ‘---’ будут напечатаны как два и три
знака минус соответственно.
14
Логосы
Отдельные слова и даже предложения могут набираться специальными командами — логосами. Логосы TEX, LATEX и LATEX 2ε печатаются
командами \TeX, \LaTeX и \LaTeXe соответственно.
Другой полезной командой является \ldots. Она печатает многоточие, то есть последовательность трех точек, заменяющих пропущенный
текст. Простой набор трех точек подряд не создаст многоточие с правильным расстоянием между точками. Команда \today генерирует сегодняшнюю дату.
Напомним, что LATEX игнорирует все пробелы, следующие за командой, состоящей из букв. Если все-таки пробел необходим, нужно вставить команды \␣ — пробел нормального размера; \, маленький пробел
(между одинарными и двойными кавычками); ~ — неразрывный пробел нормального размера; \/ — корректирующий пробел при переходе
от наклонного или курсивного шрифтов к прямому; \@ — увеличивает
пробел после знака пунктуации; \quad — очень широкий пробел; \qquad
— пробел в два раза шире, чем предыдущий.
LATEX различает прописные и строчные буквы в имени команд.
15
Подстрочные примечания
Подстрочное примечание (сноску) печатает команда \footnote. Ее
нужно вставить в том месте исходного текста, где в печатном документе
должен появиться маркер примечания, а в качестве аргумента набрать
текст примечания:
текст1 текст ...
текст\footnote{текст
примечания} текст ...
1
текст примечания
Маркер печатается там, где стоит обратный слеш, начинающий команду \footnote. Поэтому между словом примечание и командой \footnote
23
в данном примере нет пробела — иначе пробел появился бы перед маркером подстрочного примечания.
Способ маркировки подстрочного примечания определяется классом
документа. По умолчанию, сноски нумеруются арабскими цифрами и печатаются внизу страницы, а не в конце документа. Класс article определяет, что используется сквозная нумерация сносок на всем протяжении
документа. В классах report и book ссылки нумеруются в каждой главе
независимо. При удалении или добавлении сноски все другие перенумеровываются автоматически.
Команда \footnote не может использоваться в аргументах большинства других команд.
16
Строки и абзацы
Пустая строка, не содержащая даже комментария, означает конец абзаца. Количество пустых строк не имеет значения. Также не имеет значения, начинается первая строка в абзаце с первой или тринадцатой позиции — LATEX вставит в печатный документ отступ фиксированной длины.
С отступа начинается первая строка каждого абзаца, однако стандартные классы определяют, что первый абзац после заголовка отступа не
имеет. Команда \noindent отменяет отступ, a \indent, наоборот, вставляет, но даже она бессильна перед магией первого абзаца — столь сильна
традиция в английском языке не делать отступа после заголовка. Чтобы
LATEX сделал стандартный отступ в первом абзаце достаточно произвести
одно из следующий действий.
1. Вставить команду \hspace*{\parindent} в начале первого абзаца
каждого раздела.
2. Загрузить пакет indentfirst, который устанавливает, что первые
абзацы (как и все другие) в любом разделе начинаются с отступа.
LATEX автоматически разбивает текст на строки и переносит слова так,
чтобы пробелы между словами в соседних строках также были по возможности равны. Однако он не способен определить логически связанные сочетания слов, которые желательно располагать на одной строке.
Например, выражение «Рис. 3» выглядело бы странно, если бы «Рис.»
заканчивало одну строку, а «3» начинало следующую.
Столь же просто можно запретить перенос отдельного слова по слогам
или обучить LATEX правильно переносить слова, которые он не знает.
24
17
Титульная страница
Печатный документ обычно начинается с заголовка. Стандартный заголовок печатает команда
\maketitle
Эта команда обычно стоит сразу же после \begin{document}. Следующие команды должны предшествовать ей.
\title{Название} объявляет название печатного документа. Для того
чтобы указать LATEX’у, как разбить длинное название на строки, в
аргументе Название разрешается использование команды \\. Сама
команда обязательна, хотя название может быть пустым, тогда команда имеет вид \title{}.
\author{Автор} объявляет автора или список авторов, эта команд, также как и \title{Название}, обязательна. Аргумент Автор может
быть пустым. Для разбиения списка авторов на строки или для
того, чтобы в отдельной строке поместить их адреса или другую
информацию, используют команду \\.
\date{Дата} объявляет аргумент Дата датой выпуска печатного документа. При отсутствии команды LATEX ставит в заголовке текущую
дату. Если аргумент Дата пуст, т. е. имеет вид \date{}, то дата не
ставиться. Однако, некоторые нестандартные классы не печатают
дату, даже если использована команда \data с непустым аргументом.
Так как команды \title, \author и \date ничего не печатают, то их
можно поместить в преамбулу. Аргументы всех трех команд могут содержать команду \thanks{Спасибо}, которая печатает подстрочное примечание к заголовку. Эту команду обычно используют для указания адресов авторов, благодарностей за какую-либо поддержку и пр.
Аргумент команды \author может содержать команду \and между
фамилиями авторов. Фамилии в этом случае печатаются в виде таблицы.
В небольших печатных документах, таких как статьи в журналах,
вслед за заголовком часто следует аннотация. Аннотацию форматирует
процедура abstract
\begin{abstract}
...
\end{abstract}
25
Однако она не определена в классах book и letter, в которых эта процедура не нужна. В классе book основному содержанию предшествует
предисловие, а не аннотация.
18
Команды секционирования
В стандартных классах определены следующие команды секционирования (перечислены в порядке старшинства)
\part[toc]{имя}
\chapter[toc]{Часть}
\section[toc]{Раздел}
\subsection[toc]{Подраздел}
\subsubsection[toc]{Подподраздел}
\paragraph[toc]{Параграф}
\subparagraph[toc]{Подпараграф}
Каждая из команд начинает новый раздел, т. е. присваивает разделу
очередной номер, печатает заголовок (например, раздел), заносит его в
колонтитулы и в оглавление. Если имеется необязательный аргумент toc,
то именно он заносится в оглавление и колонтитулы.
Имеются так называемые ∗-формы:
\part*{имя}
\chapter*{Часть}
\section*{Раздел}
\subsection*{Подраздел}
\subsubsection*{Подподраздел}
\paragraph*{Параграф}
\subparagraph*{Подпараграф}
которые печатают только заголовок, ничего не записывая в оглавление
и колонтитулы; они также не увеличивают значения счетчика, нумерующего подразделы соответствующего раздела.
Формат номера раздела и заголовка определяется классом документа.
Обычно нумерация устроена иерархически, т. е. перед номером младшего раздела стоят номера старших разделов, отделенных друг от друга
точкой. При исполнении одной из команд секционирования счетчик соответствующий этому разделу, увеличивается на единицу, а счетчики
младших разделов обнуляются.
26
19
Библиография
Процедура
\begin{thebibliography}{lab}
...
\end{thebibliography}
печатает список цитируемой литературы, которую обычно помещают в
конец печатного документа. Аргумент lab задает левую границу списка литературы следующим образом: LATEX определяет ширину текста,
содержащегося в lab, так, как если бы он был напечатан, и сдвигает
левую границу текста в списке на соответствующее расстояние. Номера или метки записей в списке печатаются в образовавшейся свободной
колонке слева от границы текста.
Записи в теле процедуры thebibliography начинаются командой
\bibitem[label ]{key}, генерируя запись, помеченную меткой label. В случае отсутствия необязательного аргумента label запись получает очередной порядковый номер в списке литературы, который хранится в счетчике enumiv. Аргумент key является ключем, по которому команда
\cite[Доп.текст]{key}
печатает номер или метку label соответствующей записи. Если необязательный параметр label присутствует, то номер записи не печатается и
значение счетчика enumiv не увеличивается. Аргумент Доп.текст уточняет ссылку на источник, например номера страниц или параграфов.
Пример
В~\cite[гл.~1]{winnie} описана встреча Винни-Пуха с несколькими пчелами.
В \cite{voevoda,3med} приведены другие сведения о медведях.
\begin{thebibliography}{99}
\bibitem{voevoda}
М.\,Е.\,Салтыков-Щедрин. Медведь на воеводстве.
\bibitem{winnie}
А.\,А.\,Милн. Винни-Пух.
\bibitem{3med}
А.\,Н.\,Толстой. Три медведя.
. . .
\end{thebibliography}
27
20
Оглавление
Печатный документ обычно содержит оглавление (иногда список таблиц и рисунков). Если используются команды секционирования и плавающие объекты, то основную работу по созданию оглавления, списка
таблиц и списка рисунков можно возложить на LATEX. Команды
\tableofcontents
\listoftables
\listoffigures
печатают соответственно оглавление, список таблиц и список рисунков,
считывая необходимую информацию из файлов, имена которых совпадают с именем входного файла (если файлов несколько, то имя совпадает
с именем корневого файла), а расширения определяются из таблицы 5.
Чтобы оглавление, список рисунков и список таблиц «приобрели праТаблица 5: Таблица расширений
команда
расширение
\tableofcontents
toc
\listoffigures
lof
\listoftables
lot
вильный» вид, необходимо обработать файл LATEX’ом два, а иногда и
три раза (если внесены изменения в исходный текст, например, добавлена или удалена команда \section).
Информацию в оглавление, список таблиц и список рисунков можно
записывать с помощью двух команд. Первая команда
\addcontentsline{ext}{unit}{text}
добавляет запись text в файл с расширением ext, формируя ее в соответствии со значением аргумента unit. Значения ext и unit согласуются
согласно таблице 6.
Таблица 6: Таблица согласования
ext
toc
lof
lot
unit
part, chapter, section, ...
figure
table
28
Чтобы в оглавление или список ввести запись с номером раздела, text
должен иметь следующую форму
\protect\numberline{number}{text}, где number — номер, а text —
текст записи.
Вторая команда
\addtocontents{ext}{text}
добавляет текст или форматирующую команду непосредственно в файл
с расширением ext.
Следующие команды-логосы
\contentsname
\listfigurename
\listtablename
есть названия оглавления, списка рисунков и списка таблиц.
Наконец, два счетчика
secnumdepth
tocdepth
отвечают за контроль глубины нумерации разделов. Первый хранит уровень младшего раздела, который имеет номер, а во втором, хранится
уровень младшего раздела, перечисленного в оглавлении.
21
Счетчики
Всякое число, генерируемое LATEX’ом, в действительности порождается соответствующим счетчиком. Как правило, имя счетчика с точностью
до символа \ совпадает с именем использующего его окружения или команды. Перечень всех счетчиков, используемых в стандартных классах,
представлен в табл. 7.
Для любого окружения, создаваемого при помощи окружения
\newtheorem, также создается счетчик с именем данного окружения,
за исключением тех случаев, когда установлено, что нумерация должна
осуществляться в соответствии с текущим значением некоторого другого
окружения.
Значениями счетчика могут быть только целые числа, каждый счетчик может иметь одно текущее значение. Номер может быть комбинацией значений нескольких счетчиков; как правило, так нумеруются подразделы.
29
Таблица 7: Перечень счетчиков
part
chapter
section
subsection
subsubsection
paragraph
subparagraph
21.1
page
equation
figure
table
footnote
mpfootnote
enumi
enumii
enumiii
enumiv
Управление счетчиками
В самом начале отметим, что возможности приводимых ниже команд
возрастают, если использовать совместно с ними пакет calc.
\newcounter{newcount}[old] создает новый счетчик newcount и присваивает ему нулевое значение; определяет \thenewcount как
\arabic{newcount}. В качестве необязательного параметра может
быть использовано имя уже существующего счетчика; в этом случае значение счетчика newcount будет обнуляться всякий раз, когда
счетчик old изменит свое значение.
\setcount{count}{val} присваивает значение val счетчику count.
\addtocounter{count}{val} увеличивает значение счетчика count на величину val.
\value{count} считывает текущее значение счетчика count; чаще всего используется в качестве аргумента value команд \setcounter и
\addtocounter.
\stepcounter{count} увеличивает значение счетчика count и одновременно «обнуляет» все подчиненные счетчики.
\refstepcounter{count} работает как и \stepcounter, но дополнительно определяет соответствующее значение \ref как текст, генерируемый командой \thecount.
Следующие ниже команды позволяют управлять представление счетчика на печати:
\arabic{count} значение счетчика count печатается арабскими цифрами;
30
\roman{count} значение счетчика count печатается римскими цифрами
с использованием строчных латинских букв;
\Roman{count} значение счетчика count печатается римскими цифрами
с использованием прописных латинских букв;
\alph{count} значение счетчика count печатается строчными буквами
языка, который загружен пакетом \babel; при этом значение счетчика не должно превосходить количества букв в алфавите загруженного языка;
\Alph{count} значение счетчика count печатается прописными буквами языка, который загружен пакетом \babel; при этом значение
счетчика не должно превосходить количества букв в алфавите загруженного языка;
\fnsymbol{count} значение счетчика отображается одним из символов,
используемых для маркировки сносок: ∗ † ‡,. . . ;
\thecount выдает значение счетчика count (в форме, заданной при помощи одной из перечисленных выше команд).
Приведем
\equation:
пример
переопределения
представления
счетчика
\renewcommand{\theequation}{%
\arabic{part}.\arabic{section}.\arabic{equation}}
когда номер уравнения имеет вид 1.2.5, где 1 — номер главы; 2 — раздела
и 5 — самого уравнения.
Для подчинения одного счетчика countone другому counttwo используется следующая конструкция (если счетчик countone создан не с помощью команды \newcounter):
\makeatletter
\@addtoreset{countone}{counttwo}
\makeatother
Например,
\makeatletter
\@addtoreset{equation}{section}
\makeatother
означает, что значение счетчика equation будет обнуляться всякий раз,
когда значение счетчика section будет увеличиваться.
31
22
Режимы форматирования
Обрабатывая исходный текст, LATEX всегда находится в одном из четырех режимов.
1. Текстовая мода (paragraph mode).
2. Строковая мода (LR mode).
3. Математическая мода (math mode).
4. Графическая мода (restricted LR mode).
В текстовом режиме LATEX рассматривает исходный текст как последовательность слов, которые нужно разбить на строки, абзацы и страницы. Это основной режим форматирования. LATEX первоначально всегда
находится в текстовом режиме.
Когда LATEX переходит в строковый режим (LR от Left to Right), он
не разбивает текст на строки вне зависимости от их длины. В этом режиме LATEX обрабатывает аргументы таких команд, как \mbox{text},
\fbox{text}.
В математический режим LATEX переходит, когда обрабатывает тело
процедур, посвященных математическим формулам.
Графический режим включается, когда LATEX обрабатывает тело процедуры picture. Режимы форматирования могут быть вложены друг в
друга так же, как команды или процедуры. Математическую формулу
можно включить в рисунок, а рисунок — в формулу.
23
Сообщения LATEX’а
Не каждому новичку удается с первой попытки получить идеально
оформленный и красиво напечатанный текст из-за неизбежных поначалу
ошибок.
Если Вам, вопреки предсказаниям, удалось безошибочно ввести исходный текст во входной файл first.tex, предлагаем поэкспериментировать, удалив букву а из команды \begin{equation}.
Назовем испорченный таким образом входной файл second.tex. Читатель уже знает, как запустить tex на его компьютере. На нашем компьютере мы используем команду меню, которая заставляет операционную систему запустить tex, передав ей в качестве параметра имя входного файла. На компьютере командная строка запуска LATEX’a, а также
32
сообщения программы могут отличаться от приводимых здесь. Это зависит от операционной системы. Все примеры таких сообщений мы приводим с экрана нашего компьютера IBM PC, где программа tex работает
под операционной системой Windows в окне DOS.
Приступив к работе, tex выводит на экран дисплея сообщение.
This is emТеХ (tex386), Version 3.14159 [4а] 25 JAN 1998
15:04
**{\&}LATEX second.tex
(second.tex
LaTeX2e<1997/12/04>
(c:/texini/tex/latex/base/article.cls
Document Class: article 1997/10/10 vl.3x Standard LaTeX class
(c:/texmf/tex/latex/base/sizel0.clo
File: sizel0.clo 1997/10/10 v1.3x Standard LaTeX file (size
option)))
(c:/texmf/tex/latex/local/russian.sty
Package: russian 1998/01/24 v2.0b Russian language package
No file second.aux.
Из него следует, что работает программа tex386 из коллекции еmТeХ.
Она загружает формат LATEX, а затем файл second.tex (об этом говорит
вторая строка сообщения). Версия формата указана в четвертой строке.
Она датирована 4 декабря 1997 года. Сообщение ’No file second.aux’
в последней строке предупреждает, что не найден один из служебных
файлов. Такого рода предупреждения появляются при первой обработке LATEX’ом любого входного файла. Обрабатывая входной файл, LATEX
одновременно записывает служебную информацию во вспомогательный
файл с тем же именем second, что и входной файл, но присваивает ему
расширение aux. При повторной обработке такой вспомогательный файл
уже будет найден, и LATEX сообщит:
(second.aux)
LATEX использует файлы с расширением aux для автоматического создания перекрестных ссылок на номера страниц, рисунков, таблиц, цитируемую литературу и так далее. Так как в данном случае перекрёстных
ссылок нет, файл second.aux в общем-то бесполезен.
Затем обычно на экран выводится несколько строк с информацией о
загрузке шрифтов. Они начинаются со слов:
LaTeX Font Info
33
После следующего сообщения выполнение программы приостанавливается, так как она встретила ошибку.
! LaTeX Error: Environment eqution undefined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
1.53 \begin{eqution}
?
Чтобы расшифровать сообщение об ошибке, нужно уточнить разделение обязанностей между LATEX’ом и TEX’ом. Команды, используемые
в обычном входном файле, являются, по большей части, командами
LATEX’a. Они состоят из большого количества команд TEX’a — команд
низшего уровня, LATEX прилагает некоторые усилия, чтобы обнаружить
ошибки в своих командах, но не стремится зафиксировать абсолютно
все ошибки, иначе его работа очень замедлится. Если LATEX пропустит
ошибку, ее найдет TEX, но тогда ошибка в команде LATEX’a воспринимается TEX’ом как ошибка и одной из его собственных команд, из которых
составлена дефектная команда LATEX’а. Памятуя об этом, теперь уже
можно понять приведенное выше сообщение об ошибке.
Первая строка этого сообщения извещает, что ошибку обнаружил
A
LTEX еще до того, как TEX нашел ошибки в своих командах низшего
уровня. Эта строка начинается с восклицательного знака и называется
строкой индикации ошибки. Она содержит описание ошибки. В данном
примере ответ прост — процедуры с именем eqution не существует. Тем
не менее в следующих строках сообщения предлагается для объяснения
причины ошибки обратиться к учебникам по LATEX’y или нажать клавишу (h) и затем (Return) или (Enter), чтобы получить подсказку на
экране.
Предпоследние две строки сообщения называются строками локализации ошибки, причем первая заканчивается ошибочной командой
\begin{eqution}. Перед этой командой указывается номер строки во
входном файле, где эта ошибка находится. Вслед за строкой локализации ошибки tex выводит знак вопроса в начале новой строки и ждет
реакции пользователя. В ответ можно либо нажать клавишу (Enter),
чтобы проигнорировать ошибку, либо ввести букву h, чтобы получить
рекомендацию относительно дальнейших действий (на английском языке!). Другие возможные варианты: ввести букву х, чтобы немедленно
прекратить исполнение программы; ввести букву i, чтобы затем набрать
34
исправленный вариант команды (но входной файл потом всё равно придется исправлять); ввести q или r, чтобы LATEX больше не останавливался, встретив новые ошибки. В любом случае информация о всех ошибках
будет записана в файл second.log. Его можно использовать для последующего анализа ошибок. Нужно только иметь в виду, что одна действительно существующая ошибка часто вызывает несколько сообщений
о наведенных ошибках.
Большие тексты удобно разбивать на несколько файлов. Например,
каждый файл может содержать текст одной главы. Тогда корневой входной файл может состоять из команд \input{chapter.tex}, каждая из
которых как бы дословно переписывает содержание файла chapter.tex
в корневой файл. Дробление больших текстов на относительно короткие
часто позволяет упростить поиск ошибок: в любой момент можно «отключить» целые главы, закомментировав символом % соответствующие
команды \input.
Информацию, необходимую для своей работы, LATEX получает, считывая форматный файл с расширением fmt, содержащий в бинарном виде
команды, составляющие «ядро» LATEX’а, файлы с описанием класса (они
имеют расширение сls), опций класса (с1о) и пакетов (sty).
LATEX считывает информацию также из одного или нескольких служебных файлов, показанных с левой стороны рисунка.
Файл name.аuх содержит список ключей, устанавливаемых командой
\lаbеl и используемых для перекрестного цитирования формул, таблиц,
рисунков и вообще любых объектов, имеющих номер.
В файл name.toc записывается информация, необходимая для печати
оглавления; этот файл возникает, если текст документа содержит команду \tableofcontents, печатающую оглавление.
Файлы name.lot и name.lof соответственно содержат список таблиц
и рисунков, размещаемых процедурами table и figure. Они создаются
командами \listoftables и \listoffigures, печатающими эти списки.
Файл name.bib используется для автоматической нумерации ссылок
на цитируемую в тексте литературу из библиографической базы данных, содержащихся в файлах с расширением bbl. Работу с библиографической базой данных проводит программа BibTeX, распространяемая
вместе с LATEX’ом. Однако список литературы можно составить и без
BibTeX’а; его печатает процедура thebibliography. При любом варианте LATEX автоматически перенумерует все ссылки при внесении изменений в текст документа.
Файл name.idx содержит список входов в алфавитный указатель. Он
35
является входным для программы MakeIndex, которая записывает отсортированный список в файл name.ind. Команда \printindex вставляет
его в печатный документ в виде полностью сформатированного алфавитного указателя.
Файл name.glo содержит список входов в глоссарий (словарь терминов). Его также можно отсортировать с помощью программы MakeIndex,
которая запишет результат в файл name.gls. LATEX производит несколько файлов.
Файл name.dvi содержит смакетированный текст печатного документа в независимом от печатных устройств формате.
Файл name.log содержит протокол работы LATEX’a, в том числе всю
информацию, которая появляется на экране (имена прочитанных файлов, номера страниц, сообщения об ошибках и т.п.).
При каждой новой обработке исходного файла LATEX обновляет информацию, записанную в служебные файлы, и затем проверяет, совпадают ли новые версии служебных файлов со старыми. В случае несовпадения LATEX печатает предупреждение:
LaTeX Warning: Label(s) may have changed.
Rerun to get cross-references right.
Heнайденные перекрестные ссылки изображаются в печатном документе двумя вспомогательными знаками. Если в текст добавлена новая
глава, то при первом проходе информация о ней будет только записана
в файл name.toс, и лишь при следующем проходе она будет включена в оглавление. Однако на завершающей стадии работы над текстом в
него вносятся обычно очень незначительные изменения, которые не меняют содержание служебных файлов. Поэтому при последней обработке
проблем, как правило, не возникает. Если же LATEX все-таки выдал предупреждение, достаточно пропустить входной файл через TEX еще раз.
Отформатированный документ можно напечатать на принтере или
просмотреть на экране монитора. Печать на принтере и вывод на экран
дисплея осуществляют специальные программы-драйверы. Они знают,
как вывести графическое изображение печатного документа, записанное
в бинарном виде в файл name.dvi, на устройство того или иного вида.
36
Список литературы
[1] Львовский С. М. Набор и верстка в системе LATEX / С. М. Львовский.
– М. : МЦИМО, 2003.
[2] Котельников И. А. Издательская систем LATEX 2ε / И. А. Котельников, П. З. Чеботаев. – Новосибирск : Сиб. хронограф, 1998.
[3] Кнут Д. Э. Все про TEX / Д. Э. Кнут. – М. : Инд. дом “Вильямс”,
2003.
[4] Грэтцер Г. Первые шаги в LATEX : учеб. пособие по набору математики
средствами LATEX и AMS-TEX / Г. Грэтцер. М.: Мир, 2000.
[5] Гуссенс М. Путеводитель по пакету LATEX и его Web-приложениям /
М. Гуссенс, С. Ратц. – М. : Мир, 2001.
[6] Гуссенс М. Путеводитель по пакету LATEX и его графическим расширениям / М. Гуссенс. – М. : Мир, 2002.
[7] Гуссенс M. Путеводитель по пакету LATEX и его расширению LATEX 2ε
/ М. Гуссенс. – М. : Мир, 1999.
37
Составители
Голованева Фаина Валентиновна,
Шабров Сергей Александрович
Редактор
Золотарева К.А.
38
Download