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

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

Структура исходного текста

LaTeX-файл должен начинаться с команды

\documentclass

задающей стиль оформления документа (в LaTeX'е 2\varepsilon принято говорить "класс документа" 3В LaTeX 2.09 говорилось \documentstyle вместо \documentclass .

Пример:

\documentclass{book}

Слово {book} в фигурных скобках указывает, что документ будет оформлен, как книга: все главы будут начинаться с нечетных страниц, текст будет снабжен колонтитулами некоторого определенного вида и т.п. Кроме класса book, в стандартный комплект LaTeX'а входят классы article (для оформления статей), report (нечто среднее между article и book ), proc (для оформления изданий типа " труды конференции") и letter (для оформления деловых писем так, как это принято в США). Чтобы задать оформление документа с помощью одного из этих классов, надо в фигурных скобках после команды \documentclass указать вместо {book} название требуемого класса. Стандартные классы можно (а иногда и нужно) менять, можно создавать и новые классы, но пока что будем исходить из стандартных классов.

После команды \documentclass могут следовать команды, относящиеся ко всему документу и устанавливающие различные параметры оформления текста, например, величину абзацного отступа (вообще-то все эти параметры определяются используемым классом, но может случиться, что вам понадобится сделать в них изменения). Далее должна идти команда \begin

\begin{document}

Только после этой команды может идти собственно текст. Если вы поместите текст или какую-нибудь команду, генерирующую текст (например, \LaTeX до \begin{document} ), то LaTeX выдаст сообщение об ошибке. Часть файла, расположенная между командами \documentclass и \begin{document}, называется преамбулой.

Заканчиваться файл должен командой

\end{document}

Если после \end{document} в файле написано что-то еще, LaTeX это проигнорирует.

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

\documentclass{article}
\begin{document}
Проба пера.
\end{document}

Совет: если вы до сих пор не работали с системой LaTeX на компьютере, сейчас самое время попробовать (только замените русские буквы на латинские, если доступный вам LaTeX не " русифицирован").

Группы

Важным понятием TeX'а является понятие группы. Чтобы понять, что это такое, рассмотрим пример.

При обработке TeX'ом исходного файла набор текста в каждый момент идет каким-то вполне определенным шрифтом (он называется текущим шрифтом). Изначально текущим шрифтом является " обычный" прямой шрифт (по-английски "roman"). Команда \slshape, с которой мы уже столкнулись в разд."Команды и их задание в тексте", переключает текущий шрифт на наклонный, а upshape выполняет обратное переключение. Аналогичным образом команды bfseries и mdseries меняют жирность шрифта4Подробнее о переключении шрифтов будет рассказано в разделе "лекции 3" "Смена шрифтов в тексте" .

Полужирный шрифт начнется
с \bfseries этого слова.
Снова \mdseries светлый,
теперь \slshape наклонный,
до нового переключения;
вновь \upshape прямой
.
Полужирный шрифт начнется
с \bfseries этого слова.
Снова \mdseries светлый,
теперь \slshape наклонный,
до нового переключения;
вновь \upshape прямой.

В этом примере можно обойтись и без команд mdseries и upshape (отменяющих действие предыдущих команд). Для этого часть текста, которую вы хотите оформить полужирным или наклонным шрифтом, можно заключить в фигурные скобки, и дать команду bfseries или slshape внутри этих скобок! Тогда сразу же после закрывающей фигурной скобки TeX "забудет" про то, что шрифт переключался, и будет продолжать набор тем шрифтом, который был до скобок:

Полужирным шрифтом набрано
только {\bfseries это}
слово; после скобок все
идет, как прежде
.
Полужирным шрифтом набрано
только {\bfseries это}
слово; после скобок все
идет, как прежде.

Сами по себе фигурные скобки не генерируют никакого текста и не влияют на шрифт; единственное, что они делают — это ограничивают группу внутри файла. Как правило, задаваемые командами TeX'а изменения различных параметров (в нашем случае — текущего шрифта) действуют в пределах той группы, внутри которой была дана соответствующая команда; по окончании группы (после закрывающей фигурной скобки, соответствующей той фигурной скобке, что открывала группу) все эти изменения забываются и восстанавливается тот режим, который был до начала группы. Проиллюстрируем все сказанное следующим примером, в котором используется еще команда itshape (она переключает шрифт на курсивный):

Сначала {переключим
шрифт на \itshape курсив;
теперь сделаем шрифт
еще и {\bfseries
полужирным;}
посмотрите, как
восстановится} шрифт
после кон{ца  г}руппы
.
Сначала {переключим
шрифт на \itshape курсив;
теперь сделаем шрифт
еще и {\bfseries
полужирным;}
посмотрите, как
восстановится} шрифт
после кон{ца  г}руппы.

Как видите, группы могут быть вложены друг в дружку. Обратите внимание, что внутри внешней группы курсив начался не c того места, где была открывающая скобка, а только после команды itshape (именно команда, а не скобка, переключает шрифт). Шутки ради мы создали еще одну группу из двух последних букв слова конца, первой буквы слова группы и пробела между ними; как и должно быть, на печати это никак не отразилось: ведь внутри скобок мы ничего не делали!

Трюк с постановкой пары скобок "{}" после имени команды, о котором шла речь выше - тоже пример использования групп. В этом случае скобки ограничивают "пустую" группу; ставятся они в качестве не-букв, ограничивающих имя команды и при этом никак не влияющих на печатный текст.

Фигурные скобки в исходном тексте должны быть сбалансированы5Это не относится к скобкам, входящим в состав команд \{ и \} .: каждой открывающей скобке должна соответствовать закрывающая. Если вы почему-либо не соблюли это условие, при трансляции вы получите сообщение об ошибке.

Некоторые команды, называемые глобальными, сохраняют свое действие и за пределами той группы, где они были употреблены. Всякий раз, когда идет речь о глобальной команде, это будет специально оговариваться.

Команды с аргументами

Команды наподобие LaTeX или, скажем, bfseries действуют " сами по себе"; многим командам, однако, необходимо задать аргументы. Первый пример тому дает команда documentclass: слово, указываемое в фигурных скобках, — ее аргумент; если его не указать, то произойдет ошибка. В LaTeX'е аргументы команд бывают обязательные и необязательные. Обязательные аргументы задаются в фигурных скобках если для команды предусмотрено наличие обязательных аргументов, она без них правильно работать не будет. У многих команд предусмотрены также и необязательные аргументы: они влияют на работу команды, коль скоро они указаны, но их отсутствие не ведет к сообщению об ошибке. Необязательные аргументы задаются в квадратных скобках.

В частности, у команды documentclass предусмотрен обязательный аргумент, о котором уже шла речь, и необязательный: в квадратных скобках перед обязательным аргументом можно указать список (через запятую) так называемых классовых опций, т.е. дополнительных особенностей оформления. Например, если мы хотим, чтобы книга набиралась шрифтом кегля 12 вместо кегля 10, принятого по умолчанию6Примечание для полиграфистов: TeX'овский кегль 10 примерно соответствует нашему девятому кеглю, и притом в две колонки, мы должны начать файл командой

\documentclass[12pt,twocolumn]{book}

Есть также классовая опция 11pt, означающая, что текст будет набираться кеглем 11. Полный список возможных классовых опций приведен в разд. "Классы, пакеты и классовые опции" " лекции 4" .

Наряду с классовыми опциями в LaTeX'е используются и так называемые стилевые пакеты. После команды \documentclass, начинающей файл, может следовать команда \usepackage, в аргументе которой стоит (через запятую) список подключаемых этой командой стилевых пакетов. (Можно использовать и несколько команд usepackage.) Например, первые две строки файла могут быть такими:

\documentclass[12pt,twocolumn]{book}
\usepackage{amsfonts,longtable}

Здесь пакет amsfonts подключается, чтобы использовать в математических формулах дополнительные шрифты, позволяющие напечатать что-нибудь вроде \mathfrak{sl}_2(\mathbb C), а пакет longtable нужен, чтобы иметь возможность набирать таблицы, простирающиеся на несколько страниц. Когда мы говорим: "чтобы воспользоваться этой возможностью, необходимо подключить такие-то стилевые пакеты", мы молчаливо предполагаем, что поставка LaTeX'а, которой вы пользуетесь, все эти пакеты содержит. В приложении Ж мы расскажем о том, откуда их взять.

Необязательных аргументов может быть предусмотрено несколько; иногда они должны располагаться до обязательных, иногда после. В любом случае порядок, в котором должны идти аргументы команды, надо строго соблюдать. Между скобками, в которые заключены обязательные аргументы, могут быть пробелы, но не должно быть пустых строк.

Окружения

Еще одна важная конструкция LaTeX'а - это окружение(environment)

Окружение - это фрагмент файла, начинающийся с текста

\begin{"TeXtit{имя_окружения} "}

где TeXtit{имя\_окружения} представляет собой первый обязательный (и, возможно, не единственный) аргумент команды \begin. Заканчивается окружение командой

\end{"TeXtit{имя\_окружения} "}

(команда \end имеет только один аргумент - имя завершаемого ею окружения). Например:

\begin{minipage}[t]{4cm}
\begin{center}\label{sml:center}
Все строки этого абзаца будут
центрированы; переносов не будет, 
если только какое-то слово, 
как в де\-зо\-кси\-ри\-бо\-ну\-кле\-ино\-вой 
кислоте, не длинней строки.
\end{center}
\end{minipage}
\begin{center}
Все строки этого абзаца 
будут центрированы; переносов 
не будет, если только 
какое-то слово, как в 
дезоксирибонуклеиновой 
кислоте, не длинней строки.
\end{center}

Каждой команде \begin, открывающей окружение, должна соответствовать закрывающая его команда \end (с тем же именем окружения в качестве аргумента).

Важным свойством окружений является то, что они действуют и как фигурные скобки: часть файла, находящаяся внутри окружения, образует группу. Например, внутри окружения center в вышеприведенном примере можно было бы сменить шрифт, скажем, командой \itshape, и при этом после команды \end{center} восстановился бы тот шрифт, что был перед окружением.

Звездочка после имени команды

В LaTeX'е некоторые команды и окружения имеют варианты, в которых непосредственно после имени команды или окружения ставится звездочка "*". Например, команда \section означает "начать новый раздел документа", а команда \section* означает "начать новый раздел документа, не нумеруя его".

Параметры

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

Параметры TeX'а обозначаются аналогично командам: с помощью символа "\" (" backslash"), за которым следует либо последовательность букв, либо одна не-буква. Например, \parindent обозначает в TeX'е величину абзацного отступа; если нам понадобилось, чтобы абзацный отступ равнялся двум сантиметрам, можно написать так:

\parindent=2cm

(Это изменение распространяется лишь на текущую группу: после конца группы восстановится старое значение отступа.)

Аналогично поступают и в других случаях: чтобы изменить параметр, надо написать его обозначение, а затем, после знака равенства, значение, которое мы "присваиваем" этому параметру; в зависимости от того, что это за параметр, это может быть просто целое число, или длина (как в нашем примере), или еще что-нибудь.

Единицы длины

Многие параметры, используемые TeX'ом, являются размерами (пример тому мы видели в разд. "Параметры"; в табл.1.1 собраны единицы длины (кроме нескольких экзотических), которые можно использовать в TeX'е при задании размеров.

Таблица 1.1. TeX'овские единицы длины
pt пункт \approx 0.35,миллиметра
pc пика=12pt
mm миллиметр
cm сантиметр = 10 mm
in дюйм = 25,4 mm
dd пункт Дидо \approx 1.07pt
cc Цицеро = 12 dd

Замечание для полиграфистов: TeX'овский пункт является единицей измерения, принятой в англо-американской типометрии; он отличается от пункта, принятого в континентальной Европе (в том числе и в России). Единица измерения, называемая в TeX'е пунктом Дидо, соответствует пункту, к которому привыкли отечественные полиграфисты.

Можно задавать размеры с помощью любой из этих единиц; при записи дробного числа можно использовать как десятичную запятую, так и десятичную точку (в таблице мы использовали оба способа); прописные и строчные буквы в обозначениях единиц длины не различаются.

Даже если длина, которую вы указываете TeX'у, равна нулю, все равно необходимо указать при этом нуле какую-нибудь из используемых TeX'ом единиц длины. Например, если написать

\parindent=0

то вы получите сообщение об ошибке; вместо "0" надо было бы писать, например, "0pt" или "0in".

Кроме перечисленных, в TeX'е используются еще две " относительные" единицы длины, размер которых зависит от текущего шрифта. Это em приблизительно равная ширине буквы "М" текущего шрифта, и ex приблизительно равная высоте буквы "x" текущего шрифта. Эти единицы удобно использовать в командах, которые должны работать единообразно для шрифтов разных размеров.

Автоматическая генерация ссылок

Система LaTeX предоставляет возможность организовать ссылки на отдельные страницы или разделы документа таким образом, чтобы программа сама определяла номера страниц или разделов в этих ссылках. Объясним это на примере.

Представим себе, что вам нужно сослаться на какое-то место в вашем тексте. Проще всего было бы указать страницу, на которой это место находится, написав "... как мы уже отмечали на с. 99" или что-то в этом роде, но как угадать, на какую страницу печатного текста попадет это место? Вместо того, чтобы гадать, можно сделать следующее:

  • пометить то место, на которое вы хотите сослаться в дальнейшем (или предшествующем) тексте;
  • в том месте текста, где вы хотите поместить ссылку, поставить команду-ссылку на вашу метку.

Конкретно это реализуется так. Помечается любое место текста с помощью команды \label. Эта команда имеет один обязательный аргумент (помещаемый, стало быть, в фигурных скобках) - " метку". В качестве метки можно использовать любую последовательность букв и цифр (не содержащую пробелов). Например, эта команда может иметь вид

\label{wash}

Ссылка на страницу, на которой расположена метка, производится с помощью команды \pageref. У нее также один обязательный аргумент — та самая метка, на которую вы хотите сослаться. Пример:

Обязательно мойте
руки\label{wash} перед
едой, чтобы не заболеть.

Как известно (см.
с.~99),
руки надо мыть
.
Обязательно мойте
руки\label{wash} перед
едой, чтобы не заболеть.

Как известно (см.
с.~\pageref{wash}),
руки надо мыть.

Обратите внимание, что мы поставили команду \label. рядом с ключевым словом "руки" без пробела, чтобы гарантировать, что будет помечена именно та страница, на которую попало это слово.

В этом примере мы использовали еще значок "~ " (" неразрывный пробел"), чтобы при печати сокращение " с." попало на ту же строку, что и номер страницы. Подробности см. в разд."Неразрывный пробел" " лекции 3" .

После того как вы впервые вставите в свой файл команды \label и \pageref, при трансляции вы получите сообщение о том, что ваша ссылка не определена, а на печати или при просмотре увидите на месте своих ссылок вопросительные знаки. Дело в том, что в этот момент LaTeX еще не знает значения ваших меток: он только записывает информацию о них в специальный файл (с тем же именем, что у обрабатываемого файла, и расширением aux) при следующем запуске он прочтет эту информацию и подставит ссылки. Если в промежутке между двумя запусками в файл были внесены изменения, это может привести к сдвигу нумерации страниц. Если такие изменения действительно произошли, LaTeX сообщит вам об этом и попросит запустить программу еще раз, чтобы получить корректные ссылки. (На практике иногда нужно и больше запусков программы LaTeX — если в книге есть оглавление, предметный указатель и др.)

Если вы после двух запусков подряд получите сообщение о неопределенной ссылке, значит, в исходном тексте присутствует ошибка (вероятнее всего, опечатка в аргументе команды \pageref ; возможно, вы забыли включить в текст команду \label ).

На место, помеченное с помощью команды \label, можно сослаться с помощью команды \ref, а не \pageref — тогда на печати получится не номер страницы, а номер раздела документа, в котором находится метка, или номер рисунка, или номер элемента в нумерованном перечне и т.п. — пометить с возможностью ссылки можно почти любой элемент документа. Об этом мы будем подробно говорить в разд. "Еще о метках и ссылках" " лекции 4" .

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