LaTeX для новичков. Часть 5:Вставка картинок
Автор таки вышел из пост-дипломного запоя и отпуска. На очереди экзамены в магистратуру и ещё два года ада.
На этот раз рассмотрим вставку картинок и других вкусностей в документы LaTeX.
Работа с картинками в LaTeX значительно отличается от привычных массам офисных пакетов тем что:
1) Картинки нельзя впихнуть в текстовый файл, картинки кладутся отдельными файлами и при передаче проекта требуется передать картинки тоже
2) Картинки встраивается при каждой пересборке проекта, что облегчает их обновление. Требуется лишь заменить картинку на новую с тем же именем. При работе с графиками из CAS возможно получить автоматическую синхронизацию графиков с проектом (настроить автосохранение графиков в файл).
3) Поддержка форматов — LaTeX поддерживает как растровые, так и векторные форматы, что позволяет экономить время на конвертации. Предпочтительный растровый формат для графиков/чертежей/прочих картинок с линиями и текстом — png. Для svg требуются дополнительные манипуляции — пересохранение в inkscape для LaTeX. В этом случае будет синхронизирован шрифт текста на картинке с текстом документа.
4) Позиционирование картинок LaTeX делает сам. Пользователь может высказывать пожелания где их расположить. Есть режимы для форсирования положения, но они не рекомендуются к использованию.
5) Размер картинок — подбирается либо опытным путём, либо по аналогичной картинке. Есть работа с относительными единицами \textwidth, \linewidth и т.д. После привыкания становится крайне удобно — вставка картинки сводится к копипасту кода прошлой картинки, правки названия и подписи.
6) Обтекание текстом — по умолчанию отсутствует. Почему? Потому что смотрится плохо. Для тех кому оно всё таки нужно, есть пакет wrapfig.
Для поддержки вставки картинок в современных форматах требуется добавить в преамбулу следующие пакеты:
\usepackage
\usepackage
Для вставки картинки используем следующий код:
Как видно из данного кода, производится вставка иллюстрации (figure), с выравниванием по центру (\centering), файла 1oummm.jpg (лежащего в одной папке с проектом), подписью «диагрмма моментов. «, меткой fig:mpr, шириной 0.8 от ширины линии (соотношение сторон остаётся постоянным, если не указаны явно ширина и высота). Стоит также обратить внимание, что картинка вставлена не на месте кода, а ниже на строку. Это определяется параметром положения иллюстрации ([h]). Данный параметр может принимать следующие формы — h here, t top, b bottom, p page, H HERE (делает картинку плавающей с помощью пакета float). Также есть возможность форсировать положение добавив восклицательный знак — h! вставит картинку прямо на место кода, но это не является рекомендуемым вариантом вставки — достойный вид документа не гарантируется.
Картинки при вставке возможно вращать командой опцией angle (угол, против часовой стрелки в градуса), origin задают точку относительно которой вращается картинка (с соответствует центру)
Больше примеров возможно найти по следующей ссылке и в документации пакета graphics.
Inserting Images
Images are essential elements in most of the scientific documents. L a T e X provides several options to handle images and make them look exactly what you need. In this article we explain how to include images in the most common formats, how to shrink, enlarge and rotate them, and how to reference them within your document.
Contents
Introduction
Below is an example on how to import a picture.

Latex can not manage images by itself, so we need to use the graphicx package. To use it, we include the following line in the preamble: \usepackage
The command \graphicspath < <./images/>> tells L a T e X that the images are kept in a folder named images under the directory of the main document.
The \includegraphics
Note: The file extension is allowed to be included, but it’s a good idea to omit it. If the file extension is omitted it will prompt LaTeX to search for all the supported formats. For more details see the section about generating high resolution and low resolution images.
The folder path to images
When working on a document which includes several images it’s possible to keep those images in one or more separated folders so that your project is more organised.
The command \graphicspath <
This is a typically straightforward way to reach the graphics folder within a file tree, but can leads to complications when .tex files within folders are included in the main .tex file. Then, the compiler may end up looking for the images folder in the wrong place. Thus, it is best practice to specify the graphics path to be relative to the main .tex file, denoting the main .tex file directory as ./ , for instance:
as in the introduction.
The path can also be absolute, if the exact location of the file on your system is specified. For example, if you were working on a local LaTeX installation on your own computer:
Notice that this command requires a trailing slash / and that the path is in between double braces.
You can also set multiple paths if the images are saved in more than one folder. For instance, if there are two folders named images1 and images2 , use the command
Changing the image size and rotating the picture
If we want to further specify how L a T e X should include our image in the document (length, height, etc), we can pass those settings in the following format:

The command \includegraphics[scale=1.5]
You can also scale the image to a some specific width and height.

As you probably have guessed, the parameters inside the brackets [width=3cm, height=4cm] define the width and the height of the picture. You can use different units for these parameters. If only the width parameter is passed, the height will be scaled to keep the aspect ratio.
The length units can also be relative to some elements in document. If you want, for instance, make a picture the same width as the text:

Instead of \textwidth you can use any other default L a T e X length: \columnsep , \linewidth , \textheight , \paperheight , etc. See the reference guide for a further description of these units.
There is another common option when including a picture within your document, to rotate it. This can easily accomplished in L a T e X :

The parameter angle=45 rotates the picture 45 degrees counter-clockwise. To rotate the picture clockwise use a negative number.
Positioning
In the previous section was explained how to include images in your document, but the combination of text and images may not look as we expected. To change this we need to introduce a new environment.

The figure environment is used to display pictures as floating elements within the document. This means you include the picture inside the figure environment and you don’t have to worry about it’s placement, L a T e X will position it in a such way that it fits the flow of the document.
Anyway, sometimes we need to have more control on the way the figures are displayed. An additional parameter can be passed to determine the figure positioning. In the example, begin
| Parameter | Position |
|---|---|
| h | Place the float here, i.e., approximately at the same point it occurs in the source text (however, not exactly at the spot) |
| t | Position at the top of the page. |
| b | Position at the bottom of the page. |
| p | Put on a special page for floats only. |
| ! | Override internal parameters LaTeX uses for determining «good» float positions. |
| H | Places the float at precisely the location in the L a T e X code. Requires the float package, though may cause problems occasionally. This is somewhat equivalent to h!. |
In the next example you can see a picture at the t op of the document, despite being declared below the text.

The additional command \centering will centre the picture. The default alignment is left.
Wrapping text around figures
It’s also possible to wrap the text around a figure. When the document contains small pictures this makes it look better.

For the commands in the example to work, you have to import the wrapfig package. To use wrapfig , include the following line in the document preamble:
This makes the wrapfigure environment available and we can place an \includegraphics command inside it to create a figure around which text will be wrapped. Here is how we can specify a wrapfigure environment:
The position parameter has eight possible values:
| r | R | right side of the text |
| l | L | left side of the text |
| i | I | inside edge–near the binding (in a twoside document) |
| o | O | outside edge–far from the binding |
The uppercase version allows the figure to float. The lowercase version means exactly here.
Now you can define the wrapfigure environment by means of the commands \begin
For a more complete article about image positioning see Positioning images and tables
Captioning, labelling and referencing
Captioning images to add a brief description and labelling them for further reference are two important tools when working on a lengthy text.
Captions
Let’s start with a caption example:

It’s really easy, just add the \caption
Captions can also be placed right after the figures. The sidecap package uses similar code to the one in the previous example to accomplish this.

There are two new commands
\usepackage[rightcaption]
You can do a more advanced management of the caption formatting. Check the further reading section for references.
Labels and cross-references
Figures, just as many other elements in a L a T e X document (equations, tables, plots, etc) can be referenced within the text. This is very easy, just add a \label to the figure or SCfigure environment, then later use that label to refer the picture.

There are three commands that generate cross-references in this example.
\label
The \caption is mandatory to reference a figure.
Another great characteristic in a L a T e X document is the ability to automatically generate a list of figures. This is straightforward.

This command only works on captioned figures, since it uses the caption in the table. The example above lists the images in this article.
Important Note: When using cross-references your L a T e X project must be compiled twice, otherwise the references, the page references and the table of figures won’t work—Overleaf takes care of that for you.
Generating high-res and low-res images
So far while specifying the image file name in the \includegraphics command we have omitted file extensions. However, that is not necessary, though it is often useful. If the file extension is omitted, LaTeX will search for any supported image format in that directory, and will search for various extensions in the default order (which can be modified).
This is useful in switching between development and production environments. In a development environment (when the article/report/book is still in progress), it is desirable to use low-resolution versions of images (typically in .png format) for fast compilation of the preview. In the production environment (when the final version of the article/report/book is produced), it is desirable to include the high-resolution version of the images.
This is accomplished by
- Not specifying the file extension in the \includegraphics command, and
- Specifying the desired extension in the preamble.
Thus, if we have two versions of an image, venndiagram.pdf (high-resolution) and venndiagram.png (low-resolution), then we can include the following line in the preamble to use the .png version while developing the report —
The command above will ensure that if two files are encountered with the same base name but different extensions (for example venndiagram.pdf and venndiagram.png), then the .png version will be used first, and in its absence the .pdf version will be used, this is also a good ideas if some low-resolution versions are not available.
Once the report has been developed, to use the high-resolution .pdf version, we can change the line in the preamble specifying the extension search order to
Improving on the technique described in the previous paragraphs, we can also instruct L a T e X to generate low-resolution .png versions of images on the fly while compiling the document if there is a PDF that has not been converted to PNG yet. To achieve that, we can include the following in the preamble after \usepackage
If venndiagram2.pdf exists but not venndiagram2.png, the file venndiagram2-pdf-converted-to.png will be created and loaded in its place. The command convert #1 is responsible for the conversion and additional parameters may be passed between convert and #1. For example — convert -density 100 #1.
There are some important things to have in mind though:
- For the automatic conversion to work, we need to call pdflatex with the —shell-escape option.
- For the final production version, we must comment out the \epstopdfDeclareGraphicsRule , so that only high-resolution PDF files are loaded. We’ll also need to change the order of precedence.
Reference guide
L a T e X units and legths
| Abbreviation | Definition |
|---|---|
| pt | A point, is the default length unit. About 0.3515mm |
| mm | a millimetre |
| cm | a centimetre |
| in | an inch |
| ex | the height of an x in the current font |
| em | the width of an m in the current font |
| \columnsep | distance between columns |
| \columnwidth | width of the column |
| \linewidth | width of the line in the current environment |
| \paperwidth | width of the page |
| \paperheight | height of the page |
| \textwidth | width of the text |
| \textheight | height of the text |
| \unitlength | units of length in the picture environment. |
About image types in L a T e X
latex When compiling with latex, we can only use EPS images, which is a vector format. pdflatex If we are compiling using «pdflatex» to produce a PDF, then we can use a number of image formats — Vector format or bitmap format? Images can be of either vector format of bitmap format. Generally we don’t need to worry about it, but if we do happen to know the format the image is in, we can use that information to choose an appropriate image format to include in our LaTeX document. If we have an image in vector format, we should go for PDF or EPS. If we have it in bitmap format, we should go for JPG or PNG, as storing bitmap pictures in PDF or EPS takes a lot of disk space.
Ни слова о луке
В этой статье я вкратце расскажу об общих способах при подготовке различных учебных документов в LaTeX, а конкретно — о подготовке титульной страницы, вставке векторных рисунков (схем), вставке таблиц и вставке графиков, создающихся на основе подготовленных данных, занесённых или даже вычисляемых в электронной таблице.
Процесс будет рассматриваться со стороны Ubuntu/TeX Live, хотя всё рассказанное можно будет сделать и в Windows с использованием MikTeX и на Маке с использованием MacTeX. Также я затрону дополнительные open-source пакеты (версии которых, опять же, есть для всех операционных систем), которые помогут в процессе и опишу какие действия необходимо предпринять, чтобы получившийся в результате документ выглядел максимально близко к желаемому :). Это Inkscape, Gnumeric и пакеты pgfplots и pgfplotstable для LaTex.
Если вы в первый раз используете LaTeX, рекомендую стандартный вводный документ (англ., PDF) и небольшой справочник по форматированию текста (англ.). В качестве документации к pgfplots подойдёт официальная: pgfplots (англ., PDF), pgplotstable (англ., PDF).
Установка
Создадим тестовый документ в любом редакторе (для gedit вы можете установить gedit-latex-plugin ). Условимся, что наш основной документ будет называться work_0001_2010.tex , а все относящиеся к нему файлы будут использовать это название + какой-либо постфикс:
Вставим представленный тект в качестве содержимого, сохраним:
Скомпилируем и посмотрим, что получилось:
Если всё было сделано правильно — перед нами готовый результат.
Титульная страница
Итак, генерируемая по умолчанию страница обычно не соответствует тому, что ожидают преподаватели или ученики. Я просто покажу шаблон и то, что должно из него получиться — результат больше похож на ожидания, но конечно, при желании или необходимости, вы можете изменить его как заблагорассудится.
Содержание включено для примера и оно обновится в соотвествии с главами только при следующей компиляции — это правило для LaTeX. В результате всё это должно выглядеть так:

Схемы
Есть много способов вставить изображение в LaTeX-документ, и вам подойдёт любой из них, но так как я обо всём рассказываю, то должен рассказать хотя бы об одном. Я подготавливаю схемы в Inkscape (свободный векторный редактор), экспортирую их в PDF и затем вставляю в LaTeX-документ.
Inkscape очень удобен для подготовки схем — у прямых линий (да и у фигур и кривых) можно установить с любых концов стрелки или сделать их пунктирными (Object -> Fill and Stroke -> Stroke Style), сектора можно делать ограничивая углы развёртки у круга, любую фигуру можно залить стандартными для таких схем кистями (хоть в полька-точечку (Object -> Fill and Stroke -> Fill Style -> Polka dots)), кривые удобно рисовать инструментом Кривая Безье и кроме всего прочего есть “примагничивание” (правда оно почему-то включается в свойствах документа (File -> Document Properties -> Snap)). Практически любой график или схему из методички/учебника можно перенести в векторный вид за полчаса.
Итак, экспорт из Inkscape. Исходный файл, по принятому ранее соглашению, назовём work_0001_2010_graph01.svg
В меню File -> Save as… выберем формат *.pdf:

И отметим конвертацию шрифтов в пути (в Stroke Style -> Width у надписей советую ставить значения 0.1-0.3, иначе надписи в pdf-файле получаются очень толстыми):

Теперь в шапку LaTeX-документа наряду с остальными пакетами нужно добавить пакет graphicx :
how to add a jpg image in Latex
I want to insert a .jpg image(that is in my current folder, where the .tex file is) after a paragraph. How can I do it in Latex? What should I include / what commands should I use?
![]()
2 Answers 2
You need to use a graphics library. Put this in your preamble:
You can then add images like this:
This is the basic template I use in my documents. The position and size should be tweaked for your needs. Refer to the guide below for more information on what parameters to use in \figure and \includegraphics . You can then refer to the image in your text using the label you gave in the figure: