<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF86:LaTeX - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF86:LaTeX&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 23:40:52 GMT</lastBuildDate>
		<item>
			<title>Crazy Rebel в 13:15, 24 декабря 2008</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF86:LaTeX&amp;diff=6188&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF86:LaTeX&amp;amp;diff=6188&amp;amp;oldid=6186&quot;&gt;(Различия между версиями)&lt;/a&gt;</description>
			<pubDate>Wed, 24 Dec 2008 13:15:33 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF86:LaTeX</comments>		</item>
		<item>
			<title>Crazy Rebel: викификация, оформление</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF86:LaTeX&amp;diff=6186&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация, оформление&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF86:LaTeX&amp;amp;diff=6186&amp;amp;oldid=6182&quot;&gt;(Различия между версиями)&lt;/a&gt;</description>
			<pubDate>Wed, 24 Dec 2008 11:36:45 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF86:LaTeX</comments>		</item>
		<item>
			<title>Crazy Rebel: викификация, оформление</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF86:LaTeX&amp;diff=6182&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация, оформление&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Категория:Учебники]]&lt;br /&gt;
: '''Компьютерные TeXнологии''' Учимся использовать культовую систему вёрстки&lt;br /&gt;
&lt;br /&gt;
{{Цикл/LaTeX}}&lt;br /&gt;
&lt;br /&gt;
=Графика=&lt;br /&gt;
&lt;br /&gt;
: '''ЧАСТЬ 3''': Порой иллюстрация стоит тысячи слов – и сегодня '''Евгений Балдин''' расскажет, как добавить их в создаваемые вами документы ''LaTeX''!&lt;br /&gt;
&lt;br /&gt;
::: '''Q''': ''Как быстро написать на LaTeX-е курсовую, в которой кроме текста есть и графики?''&lt;br /&gt;
&lt;br /&gt;
::: '''A''': ''Сделать для начала графики.''&lt;br /&gt;
&lt;br /&gt;
:::::::'''Вопрос и краткий ответ'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вероятно, на текущий момент ''TeX'' лучше других программ вёрстки умеет разбивать абзацы на строки, то есть удачнее всех разливать порции «клея» между «боксами». Но подготовка графики выносится за рамки этого процесса. Почти…&lt;br /&gt;
&lt;br /&gt;
С точки зрения ''TeX'', картинка – это просто очень большой прямоугольник, который надо как-то разместить на странице. От пользователя нужны только размеры этого прямоугольника. Отображение же иллюстрации лежит на плечах драйверов.&lt;br /&gt;
Самым востребованным форматом для представления графики в ''LaTeX'' до сих пор&lt;br /&gt;
является Encapsulated PostScript.&lt;br /&gt;
&lt;br /&gt;
==Encapsulated PostScript==&lt;br /&gt;
&lt;br /&gt;
Уже больше двадцати лет прошло с тех пор, как никому не известная фирма&lt;br /&gt;
Adobe Systems Inc. получила от компании Apple инвестиции на «обучение» лазерных принтеров молодому языку PostScript. Как следствие, этот платформеннонезависимый язык с полностью открытой спецификацией стал безальтернативным стандартом. Даже сейчас PostScript фактически не имеет конкурентов в области допечатной подготовки. Поэтому почти все «уважающие себя» графические программы умеют экспортировать результаты своей деятельности в виде инструкций PostScript. Это особенно касается векторных графических редакторов, так как PostScript подразумевает векторную графику.&lt;br /&gt;
&lt;br /&gt;
Encapsulated PostScript (EPS) – графический формат ['''скорее даже язык программирования, – прим. ред.''']. Файлы в этом формате обычно имеют расширение '''.eps'''. По сути дела, это PostScript с некоторыми упрощениями и дополнительными договорённостями. Самая интересная с точки зрения ''LaTeX'' договорённость – это обязательное наличие в заголовке информации о размере картинки, которая передаётся вместе с комментарием:&lt;br /&gt;
&lt;br /&gt;
  %!PS-Adobe-2.0 EPSF-2.0&lt;br /&gt;
  %%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software&lt;br /&gt;
  %%Title: picture.dvi&lt;br /&gt;
  %%BoundingBox: 127 464 430 667&lt;br /&gt;
  %%DocumentFonts: SFRM1200 SFRM0800&lt;br /&gt;
  %%EndComments&lt;br /&gt;
&lt;br /&gt;
Первая строка комментария обычно содержит версию PostScript (''Некоторые программы (не будем тыкать пальцем в драйвер для РostScript-принтеров одной очень распространённой операционной системы) добавляют перед комментарием бинарный мусор. Для полноценной работы с такими файлами этот мусор следует удалить.''). Вслед за комментарием '''BoundingBox''' идёт информация о размерах. Первые два числа соответствуют координатам левого нижнего угла картинки, а последние соответствуют координатам правого верхнего угла. Единицей измерения является «большой пункт» (bp=1/72 in), который примерно равен 0,351 мм. Для вёрстки текста указанной информации достаточно.&lt;br /&gt;
&lt;br /&gt;
Чтобы из уже имеющегося одностраничного PostScript-файла сделать EPS, необходимо и, как правило, достаточно добавить '''BoundingBox'''. Для вычисления искомых размеров можно воспользоваться утилитой ''ps2eps'' из одноимённого пакета. Если же в стандартной поставке эта программа отсутствует, то можно напрямую воспользоваться программой ''Ghostscript'' – свободным программным интерпретатором PostScript:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox «имя файла»&lt;br /&gt;
&lt;br /&gt;
Размеры выясняются с помощью указания специального драйвера '''bbox'''. Ключи '''-q, -dNOPAUSE''' и '''-dBATCH''' используются для подавления вывода ненужной информации и вопросов со стороны программы. Ключ '''-dSAFER''' гарантирует, что Ghostscript не будет производить никаких деструктивных действий (''Отключается возможность выполнения таких команд, как удаление и переименование, а чтение файлов происходит в режиме read-only. Очень полезный ключ, если Ghostscript используется в качестве фильтра.'').&lt;br /&gt;
&lt;br /&gt;
Ещё одной особенностью формата EPS является возможность добавлять растровое изображение для предварительного просмотра. Это было сделано для ситуаций, когда программа не понимает PostScript, а что-то на месте «дырки» для картинки отобразить надо. Такое добавление идёт вразрез с принципиальной кроссплатформенностью PostScript и его следует, по возможности, избегать. Для операций с этим расширением, в том числе и для добавления/удаления растра, можно воспользоваться утилитой ''epstool'' из одноимённого пакета.&lt;br /&gt;
&lt;br /&gt;
В конце рассказа про EPS хотелось бы упомянуть о замечательной утилите ''pstoedit'' из, естественно, одноимённого же пакета. Не все, но некоторые из болееменее внятно созданных PostScript-файлов она ухитряется перевести в редактируемый векторный графический формат. Это упрощает правку файлов, которые не имеют исходных текстов.&lt;br /&gt;
&lt;br /&gt;
==Как сделать EPS из растра==&lt;br /&gt;
&lt;br /&gt;
Одним из важных вопросов является конвертация растровых форматов в EPS. Растр&lt;br /&gt;
гораздо проще создавать, а кое-где, например, при снятии скриншотов, применим&lt;br /&gt;
фактически только растр. Стандартные же средства преобразования, например,&lt;br /&gt;
утилита ''convert'' из пакета ''ImageMagick'', не всегда дают оптимальные результаты.&lt;br /&gt;
&lt;br /&gt;
Возможным и вполне разумным решением является замена традиционной&lt;br /&gt;
линейки: ''LaTeX dvips'' [''ps2pdf''] на ''pdfLaTeX'', сразу «из коробки» поддерживающий растровые форматы '''PNG''' и '''JPEG''', которые можно внедрять в формат '''PDF'''напрямую. Массового перехода на данную технологию пока не наблюдается, но заметное движение в эту сторону есть. У неё есть неоспоримые достоинства, но она&lt;br /&gt;
не лишена недостатков. Рассказ о ''pdfLaTeX'' выходит за рамки этой статьи.&lt;br /&gt;
&lt;br /&gt;
Вопрос о конвертации из '''JPEG''' можно решить с помощью простой утилиты&lt;br /&gt;
''jpeg2ps'', которую можно найти в любом CTAN-архиве (''The Comprehensive TeX Archive Network. Центральный сайт: http://www.ctan.org.'') в директории '''nonfree/support/jpeg2ps'''. Утилита не преобразовывает '''JPEG'''-файл, а просто добавляет правильный EPS-заголовок. Декомпрессия '''JPEG''' производится непосредственно интерпретатором PostScript (''Это стало возможным, начиная с версии PostScript Level 2.''). К недостаткам утилиты можно отнести то, что в силу своей лицензии она не может распространяться со свободными дистрибутивами, а к достоинствам – отсутствие зависимостей.&lt;br /&gt;
&lt;br /&gt;
Более комплексными решениями являются утилиты ''sam2p'' из одноимённого пакета и ''bmeps''. Их также можно найти на CTAN в директориях '''graphics/sam2p''' и '''support/bmeps''', соответственно. ''sam2p'' является своеобразным комбайном, который&lt;br /&gt;
поддерживает множество растровых графических форматов, в то время как ''bmeps''&lt;br /&gt;
фокусируется на '''PNG''' и '''JPEG'''. Обе эти программы позволяют получить вполне приличную EPS-картинку для печати или просмотра на экране. В обоих случаях будет необходимо разобраться в ключах и настройках. С моей точки зрения, ''bmeps'' является более удобным решением, производящим достаточно маленькие (''Это важно, так как мало какой растровый редактор может оптимально сохранить EPS.'') по размеру EPS-файлы, но и ''sam2p'' достаточно хорош.&lt;br /&gt;
&lt;br /&gt;
Опять же на CTAN в директории '''graphics/a2ping''' можно взять довольно увесистый perl-скрипт ''a2ping.pl''. Он является своеобразной надстройкой над ''sam2p'' и ''Ghostscript'', что позволяет ему более-менее автоматически конвертировать из растра в PostScript и обратно.&lt;br /&gt;
&lt;br /&gt;
Обзор внешних программ закончен. Внимание! Далее слово «пакет» будет относиться к пакетам ''LaTeX'', а не пакетам дистрибутива GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
==graphicx==&lt;br /&gt;
&lt;br /&gt;
Ответственным за создание «бокса» для размещения картинки является пакет&lt;br /&gt;
''graphicx'' (''graphicx пришёл на смену пакету graphics — различия в последней букве. Команды из предыдущего пакет также можно использовать, но делать это настоятельно не рекомендуется.''), а точнее, команда '''\includegraphics'''.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF86_latex01.png|Пример использования \includegraphics.]]&lt;br /&gt;
&lt;br /&gt;
В команде есть один обязательный параметр – вставляемая картинка. Необязательные параметры передаются с помощью пар «ключ=значение», разделяемых запятой. За подобный способ объявления параметров отвечает пакет '''keyval'''.&lt;br /&gt;
Некоторые из поддерживаемых пакетом параметров перечислены ниже:&lt;br /&gt;
&lt;br /&gt;
* '''bb''' – позволяет исправить '''BoundingBox''' прямо в коде, не меняя EPS-файл. Значение представляет из себя четыре&lt;br /&gt;
числа, кодирующие положение левого нижнего и правого верхнего углов, например: ['''bb=127 464 430 667''']. Вместо одного '''bb''' можно воспользоваться четвёркой ключей: ['''bbllx=127,bblly=464,bbrx=430,bbry=667'''], каждому из которых присваивается только одно значение.&lt;br /&gt;
&lt;br /&gt;
Помимо перечисленных ключей, для модификации '''BoundingBox''' можно использовать '''viewport''' – четыре числа, описывающих границы '''BoundingBox''', где в качестве центра координат выбирается левый нижний угол уже сущест&lt;br /&gt;
вующего описания и '''trim''' – четыре числа, представляющих собой отступы от левой,&lt;br /&gt;
нижней, правой и верхней границ.&lt;br /&gt;
&lt;br /&gt;
* '''clip''' – обрезает вставленную картинку по '''BoundingBox'''. Это необходимо делать в случае изменения границ для «выкусывания» части картинки, иначе она будет «вылезать» за пределы выделенного ей бокса. По умолчанию имеет значение '''false'''. Отсутствие значение у ключа '''clip''' при его упоминании эквивалентно значению '''true'''. Подобное поведение верно и для других логических переключателей.&lt;br /&gt;
&lt;br /&gt;
* '''angle''' – поворачивает картинку на заданный угол в градусах.&lt;br /&gt;
&lt;br /&gt;
* '''origin''' – определяет координаты центра, вокруг которого вращается рисунок. Кроме непосредственно координат, '''origin''' принимает и буквенные сокращения: '''l, b, r''' и '''t''' – соответствует центру вращения слева, снизу, справа и сверху. В каждом случае выбирается середина указанной стороны. Возможны комбинации, задающие углы картинки: '''lt, rt, rb''' и '''lb'''. '''c''' обозначает центр картинки.&lt;br /&gt;
&lt;br /&gt;
* '''width''' – ширина вставляемой картинки.&lt;br /&gt;
&lt;br /&gt;
* '''height''' – высота вставляемой картинки.&lt;br /&gt;
&lt;br /&gt;
* '''scale''' – масштабный коэффициент.&lt;br /&gt;
&lt;br /&gt;
* '''keepaspectratio''' – логический переключатель. Модифицирует параметры высоты и ширины картинки в сторону уменьшения с целью сохранения исходных пропорций изображения.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF86_latex02.png|Ещё один пример использования \includegraphics]]&lt;br /&gt;
&lt;br /&gt;
Аргументы '''\includegraphics''' интерпретируются слева направо. Для команд вращения и масштабирования порядок следования имеет значение.&lt;br /&gt;
&lt;br /&gt;
==По вашим правилам==&lt;br /&gt;
&lt;br /&gt;
Пакет ''graphicx'' предоставляет возможность вызвать внешнюю программу для обработки картинки перед её вставкой. Так, например, можно добавить возможность&lt;br /&gt;
включения в документ PNG-файлов:&lt;br /&gt;
&lt;br /&gt;
 \DeclareGraphicsRule{.png}{eps}{.bb}{`bmeps -p3 -c #1`}&lt;br /&gt;
&lt;br /&gt;
Первый параметр определяет расширение нового графического формата, для которого задаются правила. В представленном примере это '''.png'''. Второй параметр&lt;br /&gt;
указывает тип графики. После преобразования это будет EPS – по умолчанию,&lt;br /&gt;
''dvips'' ничего другого и не знает. Третий параметр определяет расширение файла,&lt;br /&gt;
из которого будут считаны параметры '''BoundingBox'''. Файл должен содержать одну&lt;br /&gt;
строчку вида:&lt;br /&gt;
&lt;br /&gt;
 %%BoundingBox: 0 0 848 979&lt;br /&gt;
&lt;br /&gt;
Такой файл необходимо предварительно создать для каждой PNG-картинки. Это можно сделать, например, так:&lt;br /&gt;
&lt;br /&gt;
 bmeps -b «картинка».png «картинка».bb&lt;br /&gt;
&lt;br /&gt;
Последний параметр определяет команду, которую следует выполнить для&lt;br /&gt;
преобразования картинки. Команда должна выдавать результат в стандартный&lt;br /&gt;
поток вывода. '''#1''' соответствует имени обрабатываемого файла. Непосредственное&lt;br /&gt;
выполнение команды происходит при трансляции dvi-файла.&lt;br /&gt;
&lt;br /&gt;
Выполнение внешней команды является потенциально опасной процедурой,&lt;br /&gt;
поэтому защита по умолчанию этого не позволяет. Для просмотра dvi-файла через&lt;/div&gt;</description>
			<pubDate>Wed, 24 Dec 2008 10:44:32 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF86:LaTeX</comments>		</item>
	</channel>
</rss>