|
подпись рисунка
|
24/10/05 |
Вставил рисунок в вставленный в Tex. Подскажите, пожалуйста, как можно подписать рисунок слева?
|
|
|
reader_st |
|
||
03/03/06 |
antoshka1303 Лично я не испытывал подобную необходимость. Единственное, что могу посоветовать это почитать вот этот файлик C:texmfdoclatexcaption, то на странице 20. Вроде там надпись справа от рисунка. Я для себя открыл это файлик благодаря myshka-masha , с ним не работал ввиду отсутствия нужды, но по аналогичному опыту думаю, что должно получиться. Если будуте что-то менять в исходниках не забудь сконфигурировать TeX заново —имею ввиду запуск двух файлов.
|
||
|
|||
antoshka1303 |
|
24/10/05 |
там уменя все на немецком и ничего не ясно. Код: includegraphics[scale=1.1]{picture.eps} Но у меня подпись под рисунком получается съехавшая. не по центру рисунка:(. Что я не так делаю?? Добавлено спустя 2 минуты 1 секунду: там уменя все на немецком и ничего не ясно. Код: includegraphics[scale=1.1]{picture.eps} Но у меня подпись под рисунком получается съехавшая в низ рисунка.а нужно, чтобы надпсь была по центру рисунка права. Что я не так делаю??
|
|
|
reader_st |
|
||
03/03/06 |
antoshka1303 Цитата: там уменя все на немецком и ничего не ясно. Что-то неясно где это на немецком. (Миттельбах-то немец). В том файле-help все на анг. Вечером повожусь, может что и выйдет.
|
||
|
|||
antoshka1303 |
|
24/10/05 |
reader_st писал(а): antoshka1303 Цитата: там уменя все на немецком и ничего не ясно. Что-то неясно где это на немецком. (Миттельбах-то немец). В том файле-help все на анг. Вечером повожусь, может что и выйдет. ура! у меня все получилось:))
|
|
|
Someone |
|
||
23/07/05 |
antoshka1303 писал(а): не подскажите, как избавиться от двоеточия после номера рисунка в подписе рисунка в документе? Из конференции fido7.ru.tex: FAQ писал(а): Q. Как изменить ‘:’ в подписи рисунка на ‘.’ — т.e. ‘Рис.1:’ на ‘Рис.1.’ A. [DM] Пакеты ccaption или caption (caption2 устарел): Цитата: EL> Хочу поменять Рис:1 на Рис.1 в подписях к рисункам. Раньше я делал EL> usepackage[caption2]{ccaption} EL> теперь(обновление системы) на это выдается ошибка EL> ! LaTeX Error: captionlabeldelim undefined. centering по желанию
|
||
|
|||
photon |
|
||
23/12/05 |
Someone писал(а): Из конференции fido7.ru.tex: А можно переопределить команду @makecaption. Об этом есть у Львовского в разделе 7.1. Оформление подрисуночной подписи
|
||
|
|||
Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы
Мы расскажем о том:
- какие пакеты нужны для того, чтобы вставить рисунок в документ LaTeX;
- как вставить рисунок в документ;
- как поместить рисунок в нужную часть страницы, снабдить его подписью и сделать на него ссылку.
Пакеты и настройка
Для вставки рисунков понадобится пакет graphicx. Его, как и другие пакеты LaTeX, необходимо указать в преамбуле документа:
usepackage[argument]{graphicx}
Значение аргумента argument
может быть следующим:
dvips
(аргумент по умолчанию при компиляции с помощьюlatex
), если вы собираетесь компилировать документ при помощиlatex
для получения DVI-файла.dvipdfm
, если документ компилируетсяlatex
, и полученный в результате DVI-файл предполагается конвертировать в PDF при помощиdvipdfm
.pdftex
(аргумент по умолчанию при компиляции с помощьюpdflatex
), если документ предполагается компилироватьpdftex
, чтобы непосредственно получить PDF-файл.
В дальнейшем мы будем использовать для компиляции документа pdflatex
, поэтому в преамбуле запишем:
безо всяких опций.
Теперь укажем путь к графическим файлам. Пусть они помещаются в подкаталог pictures
текущего каталога
graphicspath{{pictures/}}
(текущим считается тот каталог, где находится наш файл *.tex).
Кроме того, в преамбуле можно указать список расширений, которые будут трактоваться как графические
DeclareGraphicsExtensions{.pdf,.png,.jpg}
Теперь, вставляя в документ файл одного из указанных выше типов, его расширение указывать не обязательно.
Итак, для вставки рисунков к преамбуле документа нужно добавить:
usepackage{graphicx} graphicspath{{pictures/}} DeclareGraphicsExtensions{.pdf,.png,.jpg}
Команда вставки графического файла
В текст документа графический файл вставляется командой includegraphics
:
includegraphics{imagename}
Например, рисунок chick.png
вставляется так:
(предполагается, что .png
перечислено в списке расширений графических файлов). Это даёт, в результате:
Команда includegraphics
может иметь список аргументов
includegraphics[attr1=val1, attr2=val2, ..., attrn=valn]{imagename}
Вот некоторые из них
Параметр | Описание |
---|---|
width=xx | Задаёт ширину рисунка равной xx |
heigth=xx | Задаёт высоту рисунка равной xx (если задана только ширина или только высота, то рисунок масштабируется пропорционально) |
scale=xx | Умножает размеры изображения на коэффициент xx |
angle=xx | Поворачивает изображение на xx градусов по часовой стрелке |
Примеры:
includegraphics[scale=0.5]{chick}
includegraphics[width=1.5cm]{chick}
Для указания размеров можно использовать переменные документа:
ширину строки linewidth
, ширину текста нас странице textwidth
, высоту текста на странице textheight
и т. п.:
includegraphics[width=linewidth]{chick} includegraphics[width=textwidth]{chick} includegraphics[height=textheight]{chick}
Команда
includegraphics[scale=0.5, angle=180]{chick}
переворачивает рисунок и уменьшает его размер вдвое.
Окружение figure
Если нужно не просто поместить картинку в документ, но — в нужное место документа, снабдить картинку подписью, а также иметь возможность сослаться на нее, то это можно сделать с помощью окружения figure
:
begin{figure}[h] center{includegraphics[scale=0.5]{lena.jpg}} caption{Тестовый рисунок "Лена"} label{fig:image} end{figure}
- Опция
h
означает «here» и рекомендует TеX’у разместить картинку «здесь», то есть в том месте, где встретилась командаinludegraphics
. - Команда
center
центрирует рисунок по горизонтали. - Опция
scale
задает масштаб отображения рисунка: 50% от действительных размеров рисунка. - Подпись под рисунком вставляется с помощью
caption
. label
задает метку рисунка, что позволяет ссылаться на него.
Получаем нечто вроде:
Наличие опции h
вовсе не означает, что рисунок действительно будет вставлен «здесь» — окончательное решение остается за TeX’ом, и принимается, исходя из заполненности страницы. Есть и другие подобные опции: t
(top) — вверху страницы; b
(bottom) — внизу страницы и т. п. Эти опции можно использовать в комбинации. Например, если вы хотите поместить рисунок непосредственно в месте вставки или же вверху страницы, то укажите
Добавление !
к опции позволяет игнорировать установки TeX’а и вставить рисунок именно там, где указываете вы:
begin{figure}[h!] % хочу здесь, и точка!
Добавление буквы p
позволяет разместить картинку на отдельной странице:
begin{figure}[pt!] % только вверху и на отдельной странице
Обратите внимание, что к подписи под рисунком добавлено «Рис. 1» (или какой-то другой номер). Автоматическую нумерацию рисунков можно отключить, используя пакет caption
и «*»:
caption*{Заголовок без Рис. и номера}
(не забудьте usepackage{caption}
в преамбуле документа).
На наш рисунок можно ссылаться с помощью команды ref
. Указав в тексте «…как показано на Рис. ref{fig:image}» мы получим, после двухкратной компиляции: «…как показано на Рис. 1». Нужно только следить, чтобы метки рисунков не повторялись, и были, по возможности, осмысленными.
Важно использовать команду caption{}
перед label{}
, иначе в документе будет указана ссылка не на рисунок, а на текущую subsection
. Итак: метка идёт после заголовка.
Пример
documentclass[a4paper,12pt]{article} usepackage[T2A]{fontenc} usepackage[utf8]{inputenc} usepackage[russian,english]{babel} usepackage{graphicx} graphicspath{} DeclareGraphicsExtensions{.pdf,.png,.jpg} begin{document} Пример вставки рисунка в документ LaTeX. begin{figure}[h] center{includegraphics[scale=0.5]{lena.jpg}} caption{Тестовый рисунок "Лена"} label{fig:image} end{figure} end{document}
Примечание. Если вас не устраивает вид подрисуночной подписи (например, вместо «Рис. 1:» необходимо «Рис. 1 — «), используйте пакет caption
. В частности, для установки тире в качестве разделителя, вставьте в преамбулу документа следующий код:
RequirePackage{caption} DeclareCaptionLabelSeparator{defffis}{ --- } captionsetup{justification=centering,labelsep=defffis}
Одним из самых часто задаваемых вопросов о LaTeX является вопрос о
вставке картинок. Рисунки чаще всего помещаются в так называемые
плавающие объекты (floats). То, как ЛаТеХ размещает эти
объекты, уже обсуждалось в одном из предыдущих постов
из серии «ЛаТеХ для продвинутых». Теперь же стоит уделить внимание
содержанию плавающего объекта: расположению картинок и подписей к
ним внутри объекта float.
Одним из самых продвинутых средств в этой области является пакет
floatrow. Он
предоставляет удобный интерфейс для
- изменения взаимного расположения подписи и рисунка или таблицы (подпись
сверху, снизу, сбоку) без «ручного» перемещения команды
caption{}
; - выравнивания картинки/таблицы и подписи по горизонтали (влево, вправо,
центрированно) и контроля полей; - расположения нескольких плавающих объектов в ряд и их
взаимного выравнивания по вертикали; - дополнительных элементов оформления, таких как линий,
рамок и теней, отделяющих объект от основного текста или картинку
от подписи, и т.д., и т.п.
Целью данного поста является продемострировать
возможности
предоставляемые floatrow
для контроля
над расположением подписей к рисункам и таблицам.
Все примеры из поста могут быть найдены
здесь
и
здесь
в виде tex-файлов готовых к компиляции. Документация к пакету
floatrow
доступна на
русском и
английском языках.
Для нетерпеливых
После загрузки пакета
01:
usepackage
{floatrow}
настройка параметров плавающих объектов осуществляется командой
01:
floatsetup
[тип флоат]{параметр=значение,параметр=значение,...}
где тип флоат
может быть, например,
figure
или
table
.
Наиболее интересные параметры, значение которых рассмотренно
подробнее далее в тексте, приведены в таблице ниже
Параметр | Значения, примеры | Пояснения |
---|---|---|
capposition | top, bottom, beside, TOP. Напр., capposition=top |
Положение подписи сверху, снизу, либо сбоку от картинки/таблицы. |
capbesideposition | {right/left/inside/outside, top/bottom/center}. Напр., capbesideposition= {right,bottom}
|
Если подпись сбоку, её положение относительно картинки/таблицы. |
capbesidewidth | 10cm, 0.3textwidth, sidefil. Напр., capbesidewidth= 0.5textwidth
|
Если подпись сбоку, её ширина |
floatwidth | 10cm, 0.3textwidth. Напр., floatwidth= 0.5textwidth
|
Ширина, отводящаяся на весь флоат. Если подпись сбоку, ширина картинки. |
margins | raggedright, raggedleft, centering. Напр., margins= raggedright
|
Положение («выключка») всего плав. объекта по горизонтали на странице (см. рис.). |
justification | raggedright, raggedleft, centering. Напр., justification= raggedright
|
Положение картинки внутри плав. объекта по горизонтали (см. рис.). |
Подпись сверху, подпись снизу
Подпись к рисунку, схеме или таблице можно располагать сверху, снизу
или сбоку от самого объекта. Традиционно, подписи к таблицам располагают
над ними, тогда как рисунки подписывают снизу. Конечно, этого можно
добиться переставляя команду caption{}
соответствующим
образом вручную. Однако в мире ЛаТеХа действия «руками» являются
моветоном, и поэтому floatrow
полностью автоматизирует процесс
с помощью команды floatsetup{}
. Например, вот такой
код в преамбуле
01:
02:
usepackage
{floatrow}03:
usepackage
{graphicx,wrapfigure}04:
05:
floatsetup
[table]{capposition=top}06:
floatsetup
[wrapfigure]{capposition=bottom}07:
floatsetup
[figure]{capposition=beside,08:
capbesideposition={right,bottom},09:
capbesidewidth=0.3textwidth
,10:
capbesidesep=quad11:
}
позволит автоматически перенести подписи ко всем таблицам наверх,
все wrapfigure
останутся подписанными снизу, а
обычные figure
плавающие объекты будут подписаны сбоку.
Уделим немного внимания команде floatsetup[]{}
.
Она принимает два аргумента. Первый, необязательный,
задаёт тип плавающего
объекта. Если он не указан, то опции, следующие во втором (обязательном)
аргументе будут применены ко всем типам floats в документе.
В данном случае мы использовали опцию
capposition
, которая
может принимать значения
top
, bottom
, TOP
и
beside
.
Первые два варианта приводят к очевидному эффекту. Параметр
TOP
имеет смысл только когда несколько объектов расположены
в ряд и поэтому мы сейчас не будем останавливатся на нём в подробностях.
Параметру beside
стоит уделить чуть болeе внимания.
В комбинации с
capbesideposition
он позволяет разместить
подпись слева capbesideposition={left,..}
или справа
capbesideposition={right,..}
от рисунка. В случае
двусторонней печати, можно использовать inside
и
outside
: тогда подпись будет расположена, соответственно,
на стороне «корочки» переплёта или на внешней стороне страницы.
Помимо этого, capbesideposition
контролирует и
вертикальное положение подписи относительно рисунка.
Надо лишь указать top
, bottom
или
center
.
Например,
01:
floatsetup
[figure]{capposition=beside,02:
capbesideposition={right,bottom}03:
}
поместит подпись сбоку справа внизу.
Параметры
capbesidewidth
и capbesidesep
контролируют ширину и отступ от рисунка. Ширину можно указывать
в абсолютных величинах (например, 5cm
), в
долях от какой-либо длины (например, 0.3textwidth
),
либо с помощью специального параметра sidefil
,
который выделит под подпись всю оставшуюся часть ширины страницы.
Например,
01:
floatsetup
[figure]{capposition=beside,02:
floatwidth=0.6textwidth
,03:
capbesidewidth=sidefil04:
}
выделит на картинку 60% страницы, а всё остальное отдаст под
подпись. Заметьте, что здесь был использован ещё один параметр
floatwidth
. Обычно этот параметр задаёт ширину
отводящуюся под весь флоат. Однако, если подпись находится
сбоку, то floatwidth
задаёт ширину отведённую под
непосредственно саму картинку, вставленную,
например, посредством includegraphics{}
.
Опции необязательно задавать глобально. Если использовать
thisfloatsetup{}
вместо floatsetup{}
,
то параметры будут применены только к одному плавающему объекту, который
первым следует за этой командой.
Пропуски, поля и выравнивание
Всемогущая команда floatsetup{}
позволяет
настроить расстояние между картинкой и подписью и в случае, если
подпись находится сверху или снизу. Делается это с помощью ключа
captionskip=<длина>
.
01:
floatsetup
[figure]{capposition=bottom,02:
captionskip=5ex,03:
floatwidth=0.5textwidth
,04:
margins=raggedright05:
}
Кроме того, в примере задана ширина floatwidth
всего float равной половине ширины текста и заказано разместить
весь float слева: margins=raggedright
(напомним, что
по умолчанию и без floatrow
, ЛаТеХ выравнивает плавающий
объект по центру горизонтали).
Параметр
margins
принимает также значения
centering
(по умолчанию), raggedleft
и др.
Если параметр margins
регулирует, по сути, горизонтальное
выравнивание всего float (картинка плюс подпись), то
выравнивание по горизонтали картинки в пределах плавающего объекта
контролируется с помощью justification
.
Обратите внимание, что если
используется пакет floatrow
, то не нужно
явно задавать горизонтальное выравнивание картинки
(centering
сразу после
begin{figure}
) поскольку по умолчанию
justification=centering
.
Другие значения, которые может принимать этот параметр, включают
raggedright
, raggedleft
и
justified
. Первые два выравнивают картинку по
левому и правому краю плавающего объекта, соответственно.
justified
для самой картинки просто означает, что она
будет находиться слева. Однако, если внутри float
есть текст
(не относящийся к подписи!), то он будет набран, как параграф выравненный
по всей ширине плавающего объекта.
Например,
01:
floatsetup
[figure]{capposition=bottom,02:
floatwidth=0.6textwidth
,03:
margins=raggedright,04:
justification=raggedleft05:
}
приводит к такому результату
Все параметры схематически изображены на рисунке ниже.
Выравниваем подпись по ширине картинки
До настоящего момента мы в подробностях рассмотрели всевозможные
варианты взаимного расположения и выравнивания картинки и подписи к ней.
Один весьма специфический случай, однако, остался без внимания: как сделать
так, чтобы весь флоат (то есть картинка и подпись) по ширине
совпадали с шириной картинки. При этом хотелось бы, чтобы ширина
определялась автоматически, а не вручную посредством
floatwidth=ширина
.
Сделать это можно с помощью команды ffigbox{}{}
для
figure
или
ttabbox{}{}
для table
. Здесь мы не
будем обсуждать все возможности этой мощной команды, а приведём
конкретный пример
01:
begin
{figure
}02:
ffigbox
[FBwidth
]{caption
{...}label
{...}}03:
{includegraphics
{...} }04:
end
{figure
}
Трюк здесь состоит в том, что первый, необязательный, аргумент команды
задаёт ширину плавающего объекта, а значит и подписи. Пакет
floatrow
определяет длину FBwidth
, которая
равна ширине текущего объекта.
Для таблиц, просто заменяем ffigbox
на
ttabbox
.
Во всей своей мощи и красе ffigbox
и FBwidth
предстают при расположении плавающих объектов в ряд. Но об этом в
следующий раз.
Стили
Пакет позволяет создавать стили, которые могут впоследствие быть
использованы как
01:
floatsetup
[тип флоат]{style=стиль}
Мы не будем здесь рассматривать создание собственных стилей
, а лишь заметим, что floatrow
предоставляет набор стилей, некоторые из которых вполне могут
буть использованы в реальных документах.
Стили можно комбинировать с другими командами, например
01:
floatsetup
[тип флоат]02:
{style=ruled,floatwidth=0.6textwidth
,...}
Заключение
Итак, пакет floatrow
позволяет легко и непринуждённо
управлять расположением различных частей плавающего объекта:
например, картинки (таблицы) и подписи.
Осуществляется это посредством команд floatsetup
(для глобальных установок или установок в пределах блока) и
thisfloatsetup
(только для первого следующего объекта):
01:
floatsetup
[тип флоат]{параметр=значение,...}
где тип флоат
может быть, например,
figure
,
table
,
wrapfigure
, и т.п. Список наиболее интересных параметров
можно найти в таблице приведённой выше.
Основным достоинством floatrow
по сравнению с «ручными»
способами, вроде использования minipages, является гибкий интерфейс,
позволяющий одной командой floatsetup
настроить
параметры всех плавающих объектов в документе.
Во всей своей красе floatrow
проявляет
себя при расположении
плавающих объектов в ряд. Но об этом в следующий раз.
Все примеры из данного поста могут быть найдены
здесь
и
здесь
в виде tex-файлов готовых к компиляции.
Документация к пакету
floatrow
доступна на
русском и
английском языках.