Tag Archives: вставка надписей в изображения

Пример наложения текста, формируемого средствами 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}

даёт

Результат наложения текста на картинку

Результат наложения текста на картинку