Пример наложения текста, формируемого средствами LaTeX, поверх изображения
Довольно типичной является ситуация, когда требуется вставить в текст на LaTeX изображение в векторном формате, содержащее надписи, причём эти надписи содержат формулы, и очень желательно обеспечить одинаковость шрифта в надписях в изображении со шрифтом в основном тексте. Добиться этого только средствами редактора изображений затруднительно. Обычным методом в таких случаях является использование текстовых меток («тегов») в изображении, которые, например, с помощью пакета psfrag подменяются текстом, сформированным LaTeX, уже во время компиляции tex-файла.
Однако в некоторых ситуациях psfrag не подходит. Одной из проблем с psfrag, рассчитанным на eps/dvi, является сложная схема работы с компиляцией в pdf, в процессе исполнения которой могут возникать непреодолимые ошибки. Заменить psfrag можно разными средствами. В данном посте я хочу продемонстрировать простейшее такое средство — команду \put
.
Пусть есть следующее изображение (в формате pdf).
Замечание. Изображение, использованное здесь в качестве примера, было создано в векторном редакторе Inkscape. Данный редактор позволяет экспортировать изображение командами теха или генерировать вспомогательный тех-файл, использующий команду \put
для вставки текстовых боксов поверх изображения, которые затем можно поправить по своему усмотрению. Однако, я не могу сказать, что это значимо упрощает работу по сравнению с «ручным методом», изложенным ниже, так как размеры текстовых надписей всё равно в итоге будут другими, а значит, всё равно придётся подгонять координаты. При этом генерируемый Inkscape’ом исходник теха содержит кучу вспомогательного кода со всякими там \makeatletter
и \providecommand
, что может быть непозволительной роскошью, например, при подготовке статьи в журнал.
Итак, всё что требуется — это пакет graphicx и окружение picture. Следующий пример LaTeX-кода
\documentclass[11pt]{article} \usepackage[T2A]{fontenc} \usepackage[cp1251]{inputenc} \usepackage{graphicx} % \usepackage{amssymb} \usepackage[english,russian]{babel} \begin{document} \selectlanguage{russian} \author{Кувшинов~Д.~Р.} \title{Пример наложения текста, формируемого средствами \LaTeX, поверх изображения} \maketitle Какой-то текст над картинкой. Просто, чтобы занять место. Ну должен же здесь быть какой-нибудь текст? Хотя бы на пару строчек? \bigskip \begin{figure}[h] \begin{center} \begin{picture}(320,192)(0,0) \put(16,16){ \includegraphics[width=288\unitlength]{image}} \put(53,106){ \makebox(0,0)[lb]{$u$}} \put(125,109){ \makebox(0,0)[lb]{$f$}} \put(106,186){ \makebox(0,0)[lb]{$f$}} \put(107,56){ \makebox(0,0)[lb]{$f$}} \put(226,102){ \makebox(0,0)[lb]{$f(t,x,u)$}} \put(0,45){ \makebox(0,0)[lb]{$\mathbb B^r(u; \delta(\rho))$}} \put(106,3){ \makebox(0,0)[lb]{$\mathbb B^n(f(t, x, u); \rho)$}} \put(316,189){ \makebox(0,0)[lb]{$\mathbb R^n$}} \put(224,6){ \makebox(0,0)[lb]{$f(t, x, \mathbb B^r(u; \delta(\rho)))$}} \put(0,189){ \makebox(0,0)[lb]{$\mathbb R^r$}} \end{picture} \end{center} \caption{Отображение $f$.}\label{pict:P1} \end{figure} Ну и немного текста под картинкой. Никакого \verb!\bigskip! или \verb!\vspace! здесь уже не требуется. \end{document}
даёт