Приложение Б. PostScript и TeX
Драйвер dvips
предыдущем разделе мы уже упоминали программу dvips. Эта программа получает на вход dvi-файл и преобразует его в PostScript-файл. При этом она использует pk-файлы для шрифтов, ссылки на которые есть в dvi-файле, и включает описания этих шрифтов (или только нужных букв из этих шрифтов) в PostScript-файл. Таким образом, имея dvi-файл, программу dvips и PostScript-принтер, можно получить печатный текст: надо лишь1Это не всегда просто. В системах типа DOS или Windows иногда может помочь команда copy /b prn ; для использования PostScript-файлов в этих системах при отсутствии PostScript-принтера полезны программы Ghostscript и GSView, см. приложение Ж}. направить результат работы программы dvips в принтер.
При этом изготовление PostScript-файла и его печать могут быть разделены во времени и пространстве. Можно положить PostScript-файл статьи в архив препринтов, чтобы и через много лет (какой автор не мечтает об этом?) интересующиеся читатели его списывали и читали. Можно изготовить файл в одной стране и послать его по электронной почте в издательство другой страны.
Заметим, что для этого не нужно, чтобы в издательстве умели пользоваться системой TeX — вполне достаточно, чтобы там умели печатать PostScript-файлы.
Приведем примеры использования программы dvips. Команда
dvips -o article.ps article.dvi
преобразует файл article.dvi в PostScript-файл article.ps. Команда
dvips -o article.ps -p 5 -l 7 article.dvi
помещает в PostScript-файл только три страницы (с пятой по седьмую); указав только -p 5, можно напечатать все страницы с пятой до конца, а указав только -l 7, можно напечатать все страницы с начала до седьмой включительно. Команда
dvips -D 300 -o article.ps article.dvi
указывает, что нужно использовать (и включить в PostScript-файл) шрифты с разрешением dpi (по умолчанию обычно используются шрифты dpi); это можно быть полезно для старых принтеров. Ключ -E мы уже видели выше, он применим к файлам из одной страницы и обрезает их по краям (в качестве BoundingBox берется минимальный блок, содержащий текст). Наконец, иногда полезен ключ -e 0, который говорит, что при вычислении положений букв не надо полагаться на округления, произведенные в pk-шрифте (это полезно, если без этого получаются нерегулярные промежутки между буквами).
Ghostscript
Но как напечатать PostScript-файл, если принтер не понимает языка PostScript? (Как правило, дешевые лазерные принтеры, а также подавляющее большинство струйных и матричных принтеров его не понимают). Кроме того, неэкономно (и неэкологично) каждый раз печатать текст, когда хочется проверить, как он будет выглядеть после очередных изменений.
Фирма Adobe, которая разработала язык PostScript, написала интерпретатор этого языка, который можно встраивать в другие продукты (принтеры, программы). Например, существует программа Adobe Acrobat, которая умеет показывать на экране PostScript-файлы и печатать их на разных принтерах (то есть преобразовывать в другие форматы, доступные этим принтерам).
К сожалению, продукты фирмы Adobe дороги, часто требуют для работы (также дорогой) системы Windows, а воровать (как в теории признавал, кажется, даже Остап Бендер) грешно. К счастью, разработчики свободно распространяемого программного обеспечения о нас позаботились. Peter Deutsch и его коллеги написали свободно распространяемую программу Ghostscript, которая представляет собой интерпретатор языка PostScript, умеющий работать с самыми разными принтерами (лазерными, струйными, матричными), а также выводить файлы в разнообразных форматах (включая PDF — Portable Document Format, также разработанный фирмой Adobe). При этом используются любезно предоставленные фирмой URW шрифты. Эта программа приспособлена практически для всех операционных систем (Linux, FreeBSD, другие виды UNIX, DOS, Windows и др.) и стала стандартом defacto. (Например, организаторы некоторых конференций просят, чтобы присылаемые на рецензию статьи в формате PostScript правильно обрабатывались этой программой.)
Программа Ghostscript является составной частью программ, показывающих PostScript-файлы на экране (популярные программы такого типа — gv, ghostview, GSView). Обычно в такие программы встроена также возможность печати всего текста (текущей страницы, выбранного множества страниц) на принтере. Именно эти программы вы скорее всего будете использовать на практике; их интерфейс зависит от операционной системы, и мы скажем про него в приложении Ж.