documentclass, преамбула и тело
Урок разбирает скелет любого документа: класс, преамбулу и тело.
Преамбула — всё, что стоит между
\documentclassи\begin{document}: настройки, пакеты, объявления. Тело — между\begin{document}и\end{document}— это сам текст.
Каждый .tex-файл устроен одинаково: сначала вы объявляете тип документа и настраиваете окружение, потом пишете содержимое. Этот скелет нужно понимать наизусть.
Анатомия файла
\documentclass[12pt,a4paper]{article} % класс и опции
\usepackage{amsmath} % пакеты подключаются в преамбуле
\usepackage{graphicx}
\title{Моя статья}
\author{Иванов И. И.}
\begin{document} % здесь начинается тело
\maketitle % печатает заголовок из \title/\author
Текст статьи начинается тут.
\end{document} % конец документаРазберём по частям. \documentclass[12pt,a4paper]{article} задаёт класс article и опции: кегль 12 пунктов, формат A4. Дальше идёт преамбула — подключение пакетов и метаданные. Команды \title и \author только сохраняют данные; печатает заголовок команда \maketitle уже в теле.
Опции класса
В квадратных скобках перечисляются опции через запятую. Самые ходовые:
| Опция | Что задаёт |
10pt / 11pt / 12pt | базовый размер шрифта |
a4paper / letterpaper | формат страницы |
twocolumn | вёрстка в две колонки |
twoside | разные поля для чётных/нечётных (для печати книгой) |
draft | черновой режим: помечает переполнения |
Зачем разделять преамбулу и тело
Преамбула — это «настройки проекта», тело — «контент». Такое разделение позволяет, например, держать общую преамбулу для всех глав диссертации в отдельном файле и подключать её. А поскольку в преамбуле собрано всё оформление, по ней одной видно, «как настроен» документ, не вчитываясь в текст.
Как работает под капотом
Команды преамбулы выполняются до того, как начнётся набор страниц: \usepackage загружает дополнительные макросы, объявления \newcommand регистрируют ваши сокращения, настройки полей применяются к будущим страницам. Как только движок встречает \begin{document}, он «замораживает» конфигурацию и начинает реально верстать символы. Поэтому подключать пакеты после начала тела нельзя — будет ошибка.
Частые ошибки
- Поставить
\usepackageпосле\begin{document}— ошибка «Can be used only in preamble». - Забыть
\maketitle— данные\title/\authorзаданы, но заголовок не печатается. - Перепутать круглые и фигурные скобки: опции — в
[...], имя класса — в{...}.
Итоги
- Файл =
\documentclass+ преамбула +\begin{document}...\end{document}. - Пакеты и настройки живут в преамбуле, текст — в теле.
\title/\authorзадают данные,\maketitleпечатает заголовок.
Глобальные и локальные опции
Опции, перечисленные в квадратных скобках у \documentclass, называются глобальными: они становятся известны не только классу, но и каждому пакету, который вы подключаете ниже. Если пакет понимает такую опцию, он подстраивается под неё автоматически. Классический пример — \documentclass[a4paper]{article}: пакет geometry, увидев глобальный a4paper, сразу возьмёт правильный формат листа, и его не придётся дублировать. Локальные опции вы передаёте конкретному пакету в его собственных скобках: \usepackage[margin=2cm]{geometry}. Если глобальная и локальная опции конфликтуют, обычно побеждает локальная, заданная ближе к месту использования.
Из этого следует практичное правило: то, что касается всего документа сразу (формат листа, базовый кегль, односторонняя или двусторонняя печать), логично выносить в глобальные опции класса, а узкие настройки отдельного пакета держать рядом с ним. Так преамбула читается как осмысленный список решений, а не как набор разрозненных строк, и при переносе документа на другой класс вам не приходится вычищать настройки из десяти разных мест.
Объявления в преамбуле: свои команды
Преамбула — это ещё и место, где вы расширяете язык под себя. Команда \newcommand заводит собственное сокращение: например, \newcommand{\рф}{Российская Федерация} позволит дальше в тексте писать короткое имя вместо длинной фразы, и при правке достаточно поменять одно объявление. Парная ей \renewcommand переопределяет уже существующую команду, а \newenvironment создаёт целое окружение. Поскольку все эти объявления выполняются до начала вёрстки, к моменту \begin{document} движок уже знает обо всех ваших сокращениях и применяет их к любому месту тела — даже к тому, что физически написано выше объявления вряд ли получится, но к самому тексту тела это правило не относится.
Кодировка и язык в преамбуле
Отдельная и очень важная для русского текста часть преамбулы — настройка кодировки и языка. В классическом движке pdfLaTeX за это отвечают пакеты inputenc (как читать исходный файл, обычно utf8), fontenc (внутреннее кодирование шрифта, для кириллицы это T2A) и babel с опцией russian, который включает русские правила переносов и переводит автоматические подписи — «Содержание», «Глава», «Рисунок». В современных движках XeLaTeX и LuaLaTeX исходник читается как UTF-8 сразу, и вместо первых двух пакетов берут fontspec с системным шрифтом, оставляя babel или polyglossia для языковых правил. Важно, что вся эта настройка обязана стоять именно в преамбуле: к началу тела движок должен уже знать, какими буквами и по каким правилам он будет набирать текст.