Рисунки: graphicx и плавающие figure
Урок учит вставлять изображения и оформлять их как плавающие рисунки с подписью.
Плавающее окружение (
figure) — это блок, который LaTeX сам размещает в удобном месте страницы, чтобы не оставлять некрасивых пустот.
Картинку в LaTeX вставляют командой из пакета graphicx, а чтобы у неё были номер и подпись и она аккуратно «обтекалась» текстом — оборачивают в окружение figure.
Вставка изображения
Подключите пакет и используйте \includegraphics:
\usepackage{graphicx} % в преамбуле
...
\includegraphics[width=0.5\textwidth]{plot.png}Опция width=0.5\textwidth масштабирует картинку до половины ширины текста — почти всегда задают ширину относительно \textwidth, чтобы рисунок подстраивался под формат. Поддерживаются PNG, JPG, PDF (а в XeLaTeX/LuaLaTeX ещё и другие форматы).
Плавающий рисунок с подписью
\begin{figure}[htbp]
\centering
\includegraphics[width=0.7\textwidth]{plot.png}
\caption{Зависимость ошибки от числа итераций.}
\label{fig:error}
\end{figure}Здесь \centering центрирует картинку, \caption добавляет подпись «Рис. N: ...» с автоматическим номером, \label ставит метку для ссылок. Окружение figure делает рисунок «плавающим».
Параметр размещения [htbp]
Буквы в скобках подсказывают LaTeX, куда поставить рисунок, в порядке предпочтения:
| Буква | Где разместить |
h | here — примерно здесь, где в коде |
t | top — вверху страницы |
b | bottom — внизу страницы |
p | page — на отдельной странице с плавающими |
Комбинация [htbp] означает «попробуй здесь, иначе вверху, иначе внизу, иначе на отдельной странице». Это рекомендуемый по умолчанию набор. Важно понять философию: вы не приклеиваете рисунок к конкретной строке — вы даёте LaTeX свободу разместить его красиво, а связь с текстом обеспечиваете ссылкой по метке.
Как работает под капотом
Плавающие объекты складываются в очередь и размещаются алгоритмом, который минимизирует пустоты и старается уважать [htbp]. Поэтому рисунок может «уплыть» на страницу вперёд или назад — это нормально и правильно. \caption увеличивает счётчик рисунков и пишет запись в файл .lof (список рисунков, аналог оглавления). Поскольку текст «привязан» к рисунку не местом, а ссылкой \ref{fig:error}, перемещение картинки ничего не ломает — номер в ссылке всегда верен.
Форматы файлов и пути к картинкам
Набор поддерживаемых форматов зависит от движка. Классический pdflatex понимает PNG, JPG и PDF, но не работает напрямую с EPS (его сначала конвертируют, например через пакет epstopdf). Современные xelatex и lualatex к этому набору добавляют ряд других форматов. Векторную графику почти всегда стоит хранить в PDF — она остаётся резкой при любом масштабе, тогда как растровый PNG на больших увеличениях «зернит». Чтобы не выписывать длинные пути в каждом \includegraphics, в преамбуле задают \graphicspath{{figures/}{images/}}: тогда LaTeX сам ищет файл по списку папок, а в коде остаётся только имя картинки. Расширение лучше не указывать — движок подберёт подходящий формат сам.
Несколько картинок рядом: subcaption
Когда нужно показать панель из нескольких связанных изображений с подписями «(a)», «(b)», «(c)», подключают пакет subcaption и внутри одного figure используют окружения subfigure. У каждой подпанели своя \caption и своя \label, поэтому на них можно ссылаться по отдельности — \ref{fig:a} и \ref{fig:b}, — а сам составной рисунок при этом остаётся единым плавающим объектом с одним общим номером. Это куда надёжнее, чем вручную приставлять буквы к подписям: нумерация панелей тоже становится автоматической.
Список рисунков и жёсткое размещение
Команда \listoffigures вставляет автоматический список всех рисунков — по сути оглавление иллюстраций, собранное из тех самых записей .lof, которые пишет каждая \caption. Для дипломов и книг это стандартное требование, и LaTeX выполняет его без ручного труда. Если же рисунок упорно нельзя отпускать в свободное плавание (скажем, он должен стоять строго в этом месте), подключают пакет float и пишут [H] — спецификатор «именно здесь, без плавания». Пользоваться им стоит редко и осознанно: он отключает алгоритм размещения и может оставить под рисунком некрасивую пустоту. Радикальное средство «вытолкнуть» все накопившиеся плавающие объекты — команда \clearpage, которая завершает страницу и размещает очередь до начала нового материала.
Частые ошибки
- Бороться с «уплыванием» жёсткой опцией
[h!]везде — ломает вёрстку. Доверьте размещение LaTeX и ссылайтесь по метке. \labelдо\caption— метка укажет не на тот номер. Ставьте\labelсразу после\caption.- Указать пиксельный размер вместо
\textwidth— рисунок не подстроится под формат страницы.
Итоги
\includegraphics[width=...]{файл}изgraphicxвставляет картинку.- Окружение
figure+\captionдают плавающий рисунок с авто-номером. [htbp]задаёт предпочтения размещения; связь с текстом — через метку, не место.