Шрифт:
Система dvips, существующая в нескольких вариантах, конвертирует файлы в формате dvi в PostScript-программы. Возможности PostScript (вставка картинок, трансформация текста, цвет) значительно шире, чем у dvi, и естественно, что для их использования были разработаны макропакеты. Формат dvi, благодаря наличию в TEX команды \special, позволяет вставлять указания, специфические для выбранного драйвера, в частности программы на PostScript.
Файл в формате PostScript (или PDF, о котором ниже) не зависит от программного обеспечения компьютера, тогда как dvi-файл требует наличия всех шрифтов, использованных при его создании.
Этот формат (portable document format) – прямое развитие PostScript, хотя он и не является «настоящим» языком программирования. В pdf нельзя, например, вычислить 2+2. Данные в этом формате в основном бинарные, но даже текстовая часть связана абсолютными ссылками, что не позволяет ее изменять.
Зато pdf обладает неплохими средствами для организации диалога с пользователем. Фактически pdf по этому параметру не уступает html (поддерживаются гиперссылки, формы, которые могут обрабатываться самим документом или веб-сервером, а также javascript) и может использоваться вместо него. В отличие от html, языка обобщенной (логической) разметки, pdf жестко фиксирует способ показа каждого элемента документа.
Структура pdf-файла весьма проста – это список занумерованных объектов, после которых следует каталог ссылок на них, а затем – ссылка на этот каталог. Часть данных в pdf-формате (содержимое объектов), как правило, упакована по известным алгоритмам сжатия. Одним из недостатков pdf, отсутствующим у PostScript, является необходимость считывания всего документа перед показом любой его части, что обусловлено местом расположения каталога объектов.
Система pdfTEX создает основу для работы макропакетов типа ConTEXt, выдавая результат сразу в виде pdf. С одной стороны, она позволяет использовать разнообразные полиграфические средства – такие же, как в PostScript; а с другой – поддерживает все диалоговые возможности pdf: работу с графическими изображениями, цветом, мультимедиа, трансформацией текстов и изображений, элементами управления типа кнопок, полей ввода данных и т. п., а также веб-ссылки. Отметим еще всплывающие аннотации к любому участку документа, возможность размещения статьи в виде не связанных друг с другом фрагментов текста и простоту – одной командой – изготовления брошюр, когда, например, на листе A4 печатаются две страницы A5. рdf-ссылки могут указывать не только на какой-то URL, но и на другое место в текущем файле, а также на другой pdf-документ, и содержат указание не только на то, куда они отсылают, но и на способ отображения целевого объекта. В pdfTEX большое внимание уделяется работе с объектами – более мощными разновидностями традиционных теховских «боксов»[Бокс (калька с английского слова box) – прямоугольник, куда помещается картинка (в простейшем случае состоящая из одного символа)].
Эта система может быть напрямую использована с большинством TEX-макропакетов, в частности с LaTEX. Однако pdfTEX запрещает прямо использовать PostScript, а значит, и такие макропакеты, как TEXdraw, PSTricks и др. Кроме того, отсекается ряд расширений к некоторым макропакетам, например Xy-pic. В документ стало невозможным вставлять картинки в формате eps. Если последнюю проблему легко решить, переконвертировав изображение в png, jpeg или pdf, которые поддерживаются pdfTEX, то другие проблемы в рамках pdfTEX решения не имеют, поскольку команда \special игнорируется. Система pdfTEX в не-dvi-режиме производит только pdf и позволяет вставлять фрагменты данных тоже лишь в формате pdf (при помощи команды \pdfliteral).
Вообще говоря, использовать с форматом pdf макропакеты, основанные на PostScript, все-таки можно, если применять только стандартные средства: конвертер ps2pdf из пакета программ Ghostscript или сразу драйвер dvipdfm – аналог dvips, который может непосредственно из dvi получать pdf. Однако использовать в одном документе средства и PostScript, и pdfTEX практически невозможно. Единственный способ обойти это ограничение – прямая постраничная вставка содержимого одного документа pdf в другой – очень громоздок.
К сожалению, поддержка кириллицы в pdfTEX находится на примитивном уровне. Хотя внешний вид документов с кириллическими символами заслуживает высшей оценки, их содержимое практически невозможно использовать как текст – нельзя проводить поиск слов, а также копировать фрагменты текста в другие документы. Проблема вызвана недостаточной поддержкой кириллицы в разработках фирмы adobe – отсутствует стандартная таблица для связи фирменных названий кириллических символов с их кодами в Unicode, то есть это изъян не pdfTEX, а самого формата pdf. К pdfTEX добавлена недокументированная команда \pdffontattr, позволяющая использовать такого рода таблицы, созданные сторонними лицами. Например, Владимир Волович разработал и поместил в CTaN (Comprehensive TEX archive Network) таблицы для стандартных кодировок LaTEX, но только для невиртуальных шрифтов. К сожалению, многие кириллические шрифты – виртуальные[Виртуальные шрифты состоят из знаков, набранных из разных файлов с шрифтами – postscript type 1 или 3, true type, metafont и пр. Обозначенная проблема автором статьи частично решена: большинство виртуальных шрифтов и все кириллические можно связать с Unicode, использовав соответствующие таблицы для всех невиртуальных шрифтов, входящих в состав виртуальных; см..
Кроме того, в закладках (это, как правило, оглавление в отдельном окне сбоку) нельзя напрямую использовать что-либо кроме символов из стандартных кодировок Adobe, среди которых кириллицы нет. Проблема решается лишь прямой вставкой кодов Unicode (UTF-16BE) для букв кириллицы, для чего нужен соответствующий макрос. Вдобавок в большинстве макропакетов TEX символ "\" (backslash) очень трудно использовать самостоятельно, а в формате pdf все Unicode-коды удобнее начинать именно с него.
Это ориентированное на европейское языковое многообразие средство преимущественно служит для создания качественных электронных изданий. К нему прилагается руководство на шести языках: английском, немецком, итальянском, голландском, чешском и румынском. Более того, для перечисленных языков существует свой набор макросов – например, вместо английского названия макроса \appendix чешский пользователь может использовать \dodatek. Поддерживаются также, хотя и в меньшей степени, другие языки – в частности, вьетнамский. К сожалению, ситуация с кириллицей в этом макропакете даже хуже, чем в pdfTEX, хотя базовая поддержка имеется.