Лента новостей
  17:47 4/06/2002 Совет: как вставить запакованные рисунки PostScript в документ LaTeX
Мы начинаем публикацию советов пользователям LaTeX'а на основе выдержек из новой книги известных популяризаторов этой издательской системы И.Котельникова и П.Чеботаева, которая готовится к публикации в издательстве «Мир».

Тем, кому приходилось вставлять рисунки в документы LaTeX, знают, что размер рисунков в формате PostScript часто бывает неоправданно большим. При архивации размер файлов PostScript часто удается уменьшить раз в 10.

Многие реализации LaTeX'а, в том числе tetex и MiKTeX, могут производить распаковку сжатых рисунков PostScript что называется на лету. Можно воспользоваться такой возможностью и постоянно хранить рисунки PostScript в сжатом виде.

Покажем, как это сделать на примере графического файла с именем sample.eps. Найдите в файле sample.eps строку, содержащую размер рисунка. Для этого откройте файл sample.eps в любом текстовом редакторе (например, в блокноте notepad) и найдите строку, содержащую слово BoundingBox. Она располагается в первых строках файла. Скопируйте эту строку в буфер. Закройте файл sample.eps. Cоздайте новый текстовый файл с именем sample.eps.bb и вставьте в него из буфера строку с BoundingBox. Должно получиться нечто вроде

%%BoundingBox: 91 3 322 234
Разумеется числа, которые собственно задают размеры, индивидуальны для каждого рисунка.

Теперь можно запаковать графический файл BoundingBox при помощи архиватора gzip. Присвойте файлу с запакованном рисунком имя sample.eps.gz. Исходный графический файл sample.eps можно безболезненно удалить.

Чтобы импортировать запакованный рисунок в документ LaTeX используйте команду \includegraphics. Она определена в пакетах graphics и graphicx, входящих в базовый дистрибутив системы LaTeX. Один из этих указанных пакетов нужно загрузить при помощи декларации \usepackage в преамбуле исходного текста документа. Лично я предпочитаю пакет graphicx. В нашем примере ключевые элементы исходного текста документа должны выглядить примерно следующим образом:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
. . . 
\includegraphics{sample.eps.gz}
. . .
По сравнению со вставкой незапакованного рисунка здесь изменено имя вставляемого файла. Чтобы импортировать исходный (незапакованный) рисунок нужно было бы написать так:
\includegraphics{sample.eps}

Впрочем, можно не забивать голову побобными деталями, указав имя импортируемого файла вообще без расширения:

\includegraphics{sample}
Тогда при компиляции документа система сама разберётся, какой файл вставлять. Сначала она попытается отыскать файл sample с расширением ps или eps. Если такой файл будет в наличии на момент компиляции документа, система определит размер рисунка из строки, содержащей BoundingBox, отведет под рисунок необходимое место и, возможно, вставит сам рисунок (последнее зависит от того в какой формат — dvi, ps или pdf — компилируется исходный текст). Если же sample.ps или sample.eps не будут найдены, система делает попытку обнаружить запакованный рисунок, т.е. файл sample.ps.gz или sample.eps.gz. В случае успеха она обычно не пытается сразу распаковать файл, а для экономии времени считывает размер рисунка, соответственно, из файла sample.ps.bb или sample.eps.bb. Распаковка рисунка происходит в момент печати документа на принтере, просмотра на экране или преобразовании откомпилированного документа в формат postscript или pdf.

Если кому-то из наших читателей не нравиться система двойных расширений в именах файлов (типа .eps.gz, .eps.bb), он должен знать, что пакеты graphics и graphicx имеют средства для изменения правил обращения с графическими файлами. Но стоит ли избретать велосипед по любому поводу?