Автор таки вышел из пост-дипломного запоя и отпуска. На очереди экзамены в магистратуру и ещё два года ада.
На этот раз рассмотрим вставку картинок и других вкусностей в документы LaTeX.
Работа с картинками в LaTeX значительно отличается от привычных массам офисных пакетов тем что:
1) Картинки нельзя впихнуть в текстовый файл, картинки кладутся отдельными файлами и при передаче проекта требуется передать картинки тоже
2) Картинки встраивается при каждой пересборке проекта, что облегчает их обновление. Требуется лишь заменить картинку на новую с тем же именем. При работе с графиками из CAS возможно получить автоматическую синхронизацию графиков с проектом (настроить автосохранение графиков в файл).
4) Позиционирование картинок LaTeX делает сам. Пользователь может высказывать пожелания где их расположить. Есть режимы для форсирования положения, но они не рекомендуются к использованию.
Для поддержки вставки картинок в современных форматах требуется добавить в преамбулу следующие пакеты:
\usepackage%Вставка картинок правильная
\usepackage%Обтекание фигур (таблиц, картинок и прочего)
Для вставки картинки используем следующий код:
Картинки при вставке возможно вращать командой опцией angle (угол, против часовой стрелки в градуса), origin задают точку относительно которой вращается картинка (с соответствует центру)
Больше примеров возможно найти по следующей ссылке и в документации пакета graphics.
Скачиваем и устанавливаем WinEdt + MikTex или ставим Texmaker
Общее оформление документа
Начинается каждый документ с объявления типа документа (например article), размера шрифта и других атрибутов.
Далее нужно подключать различные пакеты, без них мало что можно будет сделать.
Если Вы читаете эту статью со смартфона, имейте в виду, что никаких переносов делать не надо. Пишите все команды слитно.
Во вставляемых листах не нужно отдельно писать documentclass и прочее, по логике это просто кусок текста, который вставляется в конечную страницу.
\tableofcontents
Вставляет автоматически сгенерированное оглавление. (каждый раз, когда тегом \section или \subsection или \subsubsection вводится новая глава LaTeX запоминает это и потом сам создает оглавление)
\section <Введение>
Первая глава будет называться «Введение»
\subsection <Состояние ядерной энергетики в мире>
Подпункт первой главы
\end
Заканчиваем документ
Таблицы и изображения имеют свойства появляться не там куда вы их хотите поместить, а там, куда их размещает LaTeX. Теоретически с этим можно бороться с помощью одного из параметров:
Параметры [h], [h!], [H] всё более настойчиво будут рекомендовать LaTeXу разместить объект именно там, где он и стоит.
Но [H] у меня воспринимается за ошибку а остальные почти никакого эффекта не дают. Поэтому после некоторых рисунков приходится вставлять тег
— который воспринимается LaTeXом как конец той области куда можно вставлять объекты, введенные в код выше.
такого действия не имеет.
Как вставить изображение LaTeX
Необходимый минимум знаний
Изображения нужно предварительно конвертировать в формат .eps.
Это означает, что .jpg, gif, .png и другие форматы работать не будут.
Про то как конвертировать в eps c помощью ImageMagick вы можете прочитать в моей статье jpg и png в eps
Также конвертировать в eps можно с помощью GIMP и другими способами
Не забывайте конвертировать изображения.
\caption <Название изображения номер один.\cite> \label
Название графика и ссылка на него.
Дополнительная информация
Для удобства изображения можно хранить в отдельных каталогах. Например, по отдельному каталогу на каждую главу диплома. Все каталоги нужно перечислить, для того чтобы LaTeX смог их найти.
Самое адекватное описание этой операции я нашёл в книге Роженко А.И. «Искусство верстки в LaTeXe»
Добавление таблиц в LaTeX
\begin
— этот тег начинает таблицу
\caption <Название таблицы \cite>
— название таблицы и ссылка на источник
\label
— метка, на которую потом можно будет ссылаться
\begin <|c|c|c|>\begin
— сама таблица начнётся после этого тега; три столбца, выравненные по центру
\hline
— рисует горизонтальную линию
Страна & число & Мощность (МВт (эл)) \\ \hline
— первая строка
Аргентина & 1 & 692 \\ \hline
— вторая строка
\end
— заканчивает таблицу
\end
— заканчивает таблицу
Таблица, которая задана с помощью
Может занять слишком много места и не поместиться по ширине, для того, чтобы избежать этого, вместо простого выравнивания можно зафиксировать ширину столбцов
Теперь слишком широкий текст автоматически будет переноситься на следующую строку внутри столбца.
В WinEdt 6.0 есть кнопка, с помощью которой можно быстро вставлять таблицы нужного размера.
Однако, сперва нужно использовать теги
\begin
\caption <Название таблицы>\label
Чтобы объединить столбцы можно воспользоваться тегом
— где <2>— это число столбцов, которые нужно объединить <|c|>— выравнивание по центру
(1) Вставьте несколько картинок и отобразите их в горизонтальном ряду: [Код реализации]
(2) Добавить отдельный серийный номер для каждого изображения: Остальная часть кода в приведенном выше примере остается прежней, просто нужно subfigure Добавить квадратную скобку [] ХОРОШО. [Код реализации]
нота: Серийный номер подфигуры автоматически упорядочивается и отображается в порядке, то есть содержимое в квадратных скобках не требуется.
(3) Добавить отдельную информацию описания для каждого изображения:дайте subfigure Квадратные скобки [] Заполните описание информацией внутри. [Код реализации]
3. Многострочный и многостолбцовый набор текста
(1) Реализуйте размещение изображений в несколько строк и нескольких столбцов: [Код реализации]
(2) Отображение группы изображений [Горизонтально]: [Код реализации]
(3) Отображение группы изображений [Вертикально]: [Код реализации]
subfigure Функция разрыва строки отсутствует, поэтому, если вы хотите реализовать подфигуру, содержащую несколько изображений с вертикальной компоновкой, вы можете minipage Используйте несколько \includegraphics Добавить новую строку после всех, кроме последнего \\ ХОРОШО.
Как видно из вышесказанного,
[Приложение] Официальная документация мини-страницы на LaTex:minipage.html
4. Размещайте картинки через препятствия
Когда бумага набрана в двойных столбцах, изображения должны быть размещены поперек столбцов. \begin
с участием <\end> Помеченные * ХОРОШО.
[Код реализации]
5. Другие детали
Формат заголовка рисунка
bf Значит жирный, name Имя для отображения, labelsep Является ли разделитель между именем и серийным номером, period Средства, разделенные точкой, space Обозначает разделенные пробелами, параметры по умолчанию не разделяются двоеточиями.
То же самое относится и к форме, измените то, что вам нужно name Для того, чтобы:
В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.
Иллюстрации и рисунки в LaTeX
Здесь приводятся базовые идеи и примеры, которые вам нужно освоить для вставки изображений и рисунков в LaTeX. Мы рассмотрим вставку нескольких рисунков в ряд и оформление групп рисунков, для чего будем пользоваться окружением minipage. Для набора дипломов по техническим специальностям приведённых сведений должно хватить.
После этого копируем полученный eps-файл в каталог, указанный в \graphicspath <>, в данном случае подкаталог noiseimages, который находится в каталоге с нашим tex-файлом.
Теперь надо ссылаться на рисунок так: как показано на Рис.
Полезно запомнить, что ЛаТеХ рассматривает рисунок как одну большую букву. Поэтому в некоторых сложных случаях полезно применять грубую силу, т.е. например можно сделать интервал от подписи командой \vspace <1cm>— не очень изящно, зато действенно.
Здесь ширина рисунка указана 1 \linewidth то есть во всю строку, но строка теперь ширины 0.49 \linewidth так что рисунок будет во весь фрейм размера в половину строки. Кроме того, после каждого рисунка идётразрыв строки и буква, обозначающая рисунок. Нужно помнить, что ссылка и подпись под рисунками одна.
Результат, как всегда, логичен и приятен:
Команда \hfill позволяет раздвинуть рисунки к краям страницы, как бы заполняя между ними пространство пустотой. Из приведённых примеров должно быть понятно, как вставлять несколько рисунков в строку, теперь немного усложним задачу и попробуем вставить два рисунка в строчку и два в столбец.
То есть теперь мы не падаем в обморок от просьбы вставить 12 рисунков по 3 в ряд. Все идеи те же самые, хотя едва ли в дипломе вам придётся столкнуться с большим количеством хитро расположенных рисунков.
Для этого случая код следующий:
Как видно, всё достаточно легко и просто. Не забываем проставлять нужные размеры minipage и рисунков, периодически посматривая на результат в kdvi и корректируя код по ходу дела.
Три рисунка с индивидуальными ссылками Вариация на тему предыдущего случая, но через subfigure. При этом можно ссылаться на под-рисунки отдельными ссылками, например «см. Рис
\ref< fig:actuatorscouplingSheme _ decoupledcase > будет отображено как «Рис 2(а)». Добавляем в преамбулу:
\usepackage < subfigure >
и далее вставляем этот код:
Так что теперь в тексте можем ссылаться отдельно на рисунок 2а, 2b или 2c с помощью команды \ref <>. На самом деле, subfigures умеют намного больше.
Три рисунка разной высоты Иногда случается такая партизанская засада, как разномасштабные рисунки, которые под один размер подгонять нехорошо по смыслу, и нужно сделать так, чтобы подписи к ним были в одну строчку. Иначе получается некрасиво: буквы под рисунками в разных положениях. Я не претендую на истину в последней инстанции, но вот выход, который я нашёл для себя:
Как это выглядит в документе:
Я немного забегаю вперёд и использую таблицы, которые будут описываться в другом разделе, но думаю, что человек с высшим образованием без труда переведёт слово tabular.
После этого у нас появляется замечательная возможность продемонстрировать свою невероятную оформительскую крутизну, используя окружение \begin < wrapfigure >. \end < wrapfigure >, когда нужно сделать обтекание рисунка:
Поговорим о том как и в каком формате вставлять рисунке в LaTeX документы.
Форматы рисунков
Самым часто используемым в LaTeX документах графическим форматом является формат EPS (Encapsulated PostScript). Второй по популярности и распространённости — это формат PDF (Portable Document Format). Традиционно формат EPS используют вместе с движком latex, тогда как формат PDF используют с движком pdflatex.
О движках
Первым появился движок latex, потом — движок pdflatex. Стоит отличать формат LaTeX и движок latex. Первый — это формальное описание команд, окружений, коллекции стандартных классов и приёмов для набора документов. Второе — обычная программа, используемая для вёрстки документа, набранного в формате LaTeX, в файл DVI (DeVice Independent). Документ в формате DVI можно преобразовать далее в PS или PDF файл и просмотреть его на экране монитора или распечатать. Обычно цепочка действий такова:
ps2pdf → PDF файл из PS,
Позже появилась программа, которая создавала сразу же PDF файл из LaTeX документа — движок pdflatex.
Кроме формата LaTeX есть обычный формат TeX (plain tex) и движок для него — tex, а движок для вёрстки документа в PDF формат — pdftex.
Вот известные движки:
latex — традиционный движок, верстает документ в DVI формат;
pdflatex — этот движок, как следует из названия, верстает документ в формат PDF, в остальном — ничем не отличается от latex;
xelatex — один из новых движок, верстает документ в PDF формат, поддерживает напрямую кодировку юникод, шрифты в форматах TTF, OTF и многое другое;
lualatex — новый движок, также верстает документ в PDF формат, но имеет встроенный язык программирования Lua, поддерживает напрямую кодировку юникод, шрифты в формате OTF и TTF;
dvilualatex — вариант движка lualatex, но в результате вёрстки выдаёт документ в формате DVI.
Пара dvilualatex и lualatex похожа на пару latex и pdflatex в том, что первая программа в паре верстает документ в DVI, вторая — в PDF.
Формат ConTeXt
Кроме форматов LaTeX и (plain) TeX также распространён формат ConTeXt. Этот формат может работать с движками pdftex, xetex, так называемый формат MkII, и с движком luatex — формат MkIV. ConTeXt позволяет использовать рисунки в форматах PDF, EPS, MPS, SVG. Но об этом не в этой заметке.
Как вставлять рисунки в документ
В зависимости от используемого движка в документе можно использовать либо рисунки в формате EPS, либо в формате PDF. Именно, если движок верстает документ в DVI, тогда следует использовать только формат EPS (см. детали ниже), если движок верстает документ в PDF — следует использовать рисунки в формате PDF.
Стандартный способ вставки рисунков в документ предполагает использование пакета graphicx и команды \includegraphics. Пример ниже.
Можно использовать любой другой стандартный класс документа, см. документацию.
Обязателен при вставки рисунков в документ.
Эта команда вставит рисунок в данном месте документа. Здесь image1 — это первичное имя файла, например для рисунка в формате EPS полное имя файла — image1.eps, для рисунка в формате PDF — image1.pdf.
«Детские» вопросы
«А как же движок узнает полное имя файла?»
Ответ очень простой — никак, он не делает никаких предположений относительно полного имени файла, он просто пытается вставить файл с указанным названием. Всё дело в пакете graphicx, он достаточно «сообразительный», он «знает», что для движка latex нужен файл image1.eps, а для движка pdflatex — image1.pdf. Если имеются два файла — image1.eps и image1.pdf, то движок latex будет использовать файла image1.eps, а движок pdflatex — файл image1.pdf!
«Ну и в чём преимущество, выгода, использовать только первичное имя файла?»
А в том, что можно сверстать один и тот же документ, ничего не изменив в нём как в DVI/PS, так и в PDF формат, воспользовавшись либо движком latex, либо движком pdflatex. НИЧЕГО НЕ ИЗМЕНИВ! Кстати, часто встречаются ситуации, когда на разных этапах или разным людям нужны документы в разных форматах. Это — решение для таких ситуаций.
Небольшое техническое отступление и исследование
«Всё течёт, всё изменяется» и в описанной схеме появляются интересные подробности. Первое о чём следует сказать, это что движок xelatex позволяет вставлять рисунки не только в формате PDF, но и EPS! Дело в том, что в действительности движок xelatex не верстает документ непосредственно в PDF формат, а создаёт промежуточный файл в формате XDV (eXtended DeVice independent), который сразу же преобразуется с помощью программы xdvipdfmx в PDF документ. На стадии работы программы xdvipdfmx рисунок EPS автоматически преобразуется в формат PDF. Но происходит это незаметно для пользователя.
Может быть к неудовольствию части пользователей LaTeX, такого преобразования над EPS файлами движки pdflatex и lualatex не делают, поэтому напрямую вставлять рисунки в формате EPS они не могут. Пользователю следует самостоятельно преобразовать EPS рисунки в PDF формат. Для этого есть небольшая программа epstopdf. Пример использования программы ниже.
После чего появится файл image1.pdf.
Для того, чтобы упростить переход пользователей к движку pdflatex и сделать совместное использование движков latex и pdflatex более простым был разработан пакетepstopdf (не путать с программойepstopdf), который позволяет на лету преобразовать рисунок в EPS формате в PDF и вставить его в документ. Типичный пример документа и ситуации его использования описаны ниже.
Допустим, что мы работаем над документом в формате LaTeX, вставляем рисунки в формате EPS, так что у нас все рисунки в этом формате. Всё работает нормально, движок latex верстает документ в DVI, а программа dvips выдаёт из DVI файла — PS документ, который мы просматриваем на экране и выводим на печать. Если вдруг потребуется перевести документ в PDF формат, то преобразование PS в PDF выполнит программа ps2pdf. Но что делать, если потребуется сверстать документ с помощью pdflatex? Что делать с рисунками? О варианте с преобразованием EPS в PDF при помощи программы epstopdf говорилось выше, а если файлов много? Воспользуемся пакетомepstopdf как в примере. Что же произойдёт? При вёрстке движком pdflatex пакет на лету преобразует файлы EPS в PDF (с помощью той же программы epstopdf), после чего PDF рисунки будут вставлены в документ.
Ранее пакет при преобразовании из файла image1.eps создавал файл image1.pdf, независимо от того, был файл с таким именем или нет. Сейчас пакет для файла image1.eps создаёт image1-eps-converted-to.pdf.
Поддержка пакета epstopdf разными дистрибутивами
Чтобы определить степень поддержки разными дистрибутивами TeX пакета epstopdf было проведено тестирование на 4 документах. В тестировании участвовали:
MiKTeX 2.9 (обновлённый по состоянию на 06-10-2011), установленный в Windows;
TeX Live 2011 (обновлённый по состоянию на 06-10-2011), установленный в ОС Linux и в Windows;
TeX Live 2009, установленный из репозиториев в дистрибутиве Ubuntu; версия TL2009 появилась в Ubuntu начиная с Lucid (10.04) и доступна в текущей ветке Natty (11.04);
TeX Live 2007, установленный из репозиториев в дистрибутиве Fedora 15.
TeX Live 2011 проверялся тремя способами: непосредственно в Linux, непосредственно в Windows и подключением ресурса с Linux машины с доступными win32 программами (samba share и net use).