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 для языковых правил. Важно, что вся эта настройка обязана стоять именно в преамбуле: к началу тела движок должен уже знать, какими буквами и по каким правилам он будет набирать текст.

Проверьте себя
1. Где должны подключаться пакеты через \usepackage?
AВ любом месте документа
BВ преамбуле — между \documentclass и \begin{document}
CПосле \end{document}
DВнутри \maketitle
2. Что делает \maketitle?
AСоздаёт новый документ
BПечатает заголовок, используя ранее заданные \title и \author
CЗадаёт название файла
DВключает нумерацию страниц
3. Где указываются опции класса вроде 12pt и a4paper?
AВ фигурных скобках после имени класса
BВ квадратных скобках перед именем класса: \documentclass[12pt,a4paper]{article}
CВ отдельном файле настроек
DИх задают командой \usepackage