Формат файла, независимый от устройства

Формат файла набора текста
Независимый от устройства (DVI)
Evince предварительный просмотр файла DVI. Обратите внимание, что ссылочные изображения не отображаются, поскольку они не являются частью файла DVI. Изображения будут добавлены драйвером печати, например dvips .
Расширение имени файла
.dvi
Тип интернет-СМИapplication/x-dvi (неофициально)
РазработаноДэвид Р. Фукс
Тип форматадокумент

Формат файла, не зависящий от устройства ( DVI ), — это формат выходного файла программы набора текста TeX , разработанной Дэвидом Р. Фуксом и реализованной Дональдом Э. Кнутом в 1982 году. [1] В отличие от файлов разметки TeX, используемых для их создания, файлы DVI не предназначены для чтения человеком ; они состоят из двоичных данных , описывающих визуальную компоновку документа способом, не зависящим от какого-либо конкретного формата изображения , оборудования отображения или принтера . Файлы DVI обычно используются в качестве входных данных для второй программы (называемой драйвером DVI ), которая преобразует файлы DVI в графические данные. Например, большинство пакетов программного обеспечения TeX включают программу для предварительного просмотра файлов DVI на дисплее компьютера пользователя; эта программа является драйвером. Драйверы также используются для преобразования из DVI в популярные языки описания страниц (например, PostScript , PDF ) и для печати.

Разметка TeX может быть, по крайней мере частично, реверс-инжинирингом из файлов DVI, хотя этот процесс вряд ли создаст высокоуровневые конструкции, идентичные тем, которые присутствуют в исходной разметке, особенно если исходная разметка использовала высокоуровневые расширения TeX (например, LaTeX ).

DVI отличается от PostScript и PDF тем, что не поддерживает никакую форму внедрения шрифтов, а просто ссылается на внешние имена шрифтов. (Оба формата PostScript и PDF могут внедрять свои шрифты в документы.) Для печати или даже правильного предварительного просмотра файла DVI шрифты, на которые он ссылается, должны быть уже установлены. Как и PDF, DVI использует ограниченный вид машинного языка с гарантиями завершения, который не является полным, полным по Тьюрингу языком программирования, таким как PostScript.

По состоянию на 2004 год существует сборник спецификаций, которые должен реализовывать драйвер DVI, составленный «Комитетом по стандартам драйверов DVI TUG». [2] Похоже, он основан на статье TUGboat с тем же названием от 1992 года, но которая намного короче. [3] В этих документах не указан порядок байтов , который, однако, является обратным порядком байтов, как можно увидеть, заглянув в сам файл DVI.

Спецификация

Формат DVI был разработан, чтобы быть компактным и легко читаемым машиной. С этой целью файл DVI представляет собой последовательность команд, которые образуют « машиноподобный язык », по словам Кнута . [1] Каждая команда начинается с восьмибитного кода операции , за которым следует ноль или более байтов параметров. Например, код операции из группы 0x00через 0x7F(десятичное число 127), набирает один символ и перемещает неявный курсор вправо на ширину этого символа. Напротив, код операции (десятичное число 247), (преамбула, которая должна быть первым кодом операции в файле DVI), занимает не менее четырнадцати байтов параметров, а также необязательный комментарий длиной до 255 байтов.set_char_i0xF7pre

В более широком смысле, файл DVI состоит из преамбулы, одной или нескольких страниц и постамбулы. Шесть переменных состояния поддерживаются как кортеж знаковых 32-битных целых чисел: . h и v — текущие горизонтальные и вертикальные смещения от верхнего левого угла (увеличение v перемещает вниз по странице), w и x содержат значения горизонтального пространства, y и z — вертикального. ( час , в , ж , х , у , з ) {\displaystyle (h,v,w,x,y,z)}

Эти переменные могут быть помещены в стек или извлечены из него . Кроме того, текущий шрифт f хранится как целочисленное значение, но не помещается и не извлекается вместе с остальными переменными состояния при обнаружении кодов операций pushили . Информация о интервалах между шрифтами загружается из файлов TFM . Сами шрифты не встроены в файл DVI, на них ссылается только целочисленное значение, определенное в соответствующем операторе. (Это делается ровно дважды для каждого загруженного шрифта: один раз перед ссылкой на него и один раз в постамбуле.) f содержит целочисленное значение длиной до четырех байтов, хотя на практике TeX выводит только номера шрифтов в диапазоне от 0 до 255.popfnt_defi

Аналогично, формат DVI поддерживает коды символов длиной до четырех байт, хотя обычно встречается только диапазон 0–255, поскольку формат TFM ограничен этим диапазоном. Коды символов в файлах DVI ссылаются на кодировку символов текущего шрифта, а не на кодировку обрабатывающей его системы. Это означает, например, что система на основе EBCDIC может обрабатывать файл DVI, созданный системой на основе ASCII , при условии, что в ней установлены те же шрифты.

Графика как спец.

Формат DVI не поддерживает графику , за исключением самых простых черно-белых полей. Вместо этого DVI имеет общий механизм выхода/расширения, известный как специальные (выраженный командой \specialв TeX), который откладывает графику (и цвет) на фильтры постобработки. Существует множество специальных DVI, наиболее примечательными из которых являются специальные PostScript , но другие программы, такие как tpic, имеют свои собственные. [4] : 6, 17 

DVI-версии

Файлы DVI часто конвертируются в формат PDF, PostScript или PCL для чтения и печати. ​​Их также можно просматривать напрямую с помощью просмотрщиков DVI.

  • DVI-просмотрщики: YAP (включен в MiKTeX ), xdvi , windvi, Evince , KDVI, Okular , dviout, dviwin, DView (включен в коммерческий дистрибутив BaKoMa TeX), javaDVI, MDVI и DVIWindo (из ныне несуществующего коммерческого Y&Y TeX, исходный код которого был открыт). [5]
  • DVI в формат, понятный человеку: dvitype (своего рода дизассемблер)
  • Конвертеры DVI в PDF: dvipdf, dvipdfm, dvipdfmx
  • Преобразователи DVI-PS: dvips является фактическим стандартом. CTAN включает некоторые старые, такие как dvitops (и DVIPSONE [6] ), с примечанием, что они давно потеряли свою долю рынка. [7]
  • Конвертеры DVI в растровое изображение: dvipng (генерирует GIF или PNG) или используйте dvips и Ghostscript
  • Конвертеры DVI в SVG: dvisvg, [4] : 13  dvisvgm, [4] : 13  dvi2svg; [4] : 13  [8] По состоянию на 2014 год [обновлять]единственным включенным в CTAN и активно поддерживаемым является dvisvgm. [9]

Первые программы предварительного просмотра DVI, способные просматривать на экране и изменять документы LaTeX, работали на Amigas . [10] [11]

Конвертеры DVI-в-PDF

dvipdf — это инструмент для перевода файлов DVI (сгенерированных TeX ) в файлы PDF . В современных дистрибутивах Linux, таких как Ubuntu , это тонкая оболочка вокруг dvips и Ghostscript , и авторские права на нее принадлежат Artifex Software (создателям Ghostscript). [12] Возможно, другая программа с тем же названием, описанная как модифицированная версия dvips, была анонсирована в конце 1990-х годов Сергеем Лесенко, [13] [14] [15] однако, по-видимому, она так и не была выпущена . [16] [17]

dvipdfm — это транслятор DVI в PDF, разработанный Марком А. Уиксом. В ранней документации dvipdfm в частности упоминается ограниченная доступность dvipdf Лесенко как причина создания dvipdfm. [18] dvipdfm поддерживает большинство новых специальных функций формата PDF, включая закладки , аннотации , миниатюры и специальные функции dvips — функция, делающая возможным включение файлов Encapsulated PostScript (.eps), таких как вывод METAPOST , а также включение изображений JPEG и PNG ; другие функции dvipdfm включают частичное внедрение шрифтов (уменьшение размера файла) и балансировку внутренних деревьев документов PDF для ускорения рендеринга больших документов. [4] : 798  Многие из этих функций (за исключением прямой поддержки файлов .eps [19] ) также присутствуют в pdfTeX , который напрямую преобразует TeX в PDF. В 4-м издании «Руководства по LaTeX» за 2004 год они сравниваются следующим образом: [20]

Программа dvipdfm соответствует изначальному духу TEX, который использует DVI в качестве универсального промежуточного формата для всех выходных данных. Пуристы, возможно, склонны уважать этот идеал. В конце концов, никто никогда не рассматривал возможность переписывания TEX для непосредственного получения выходных данных PostScript. При этом следует учитывать, что TEX был изобретен в те дни, когда ни одна спецификация принтера не доминировала в этой области. Сегодня PDF — это гораздо больше, чем формат принтера; это средство представления документов в электронном виде. Одно это не оправдывает предпочтение pdfTEX перед конвертером DVI в PDF, как и тот факт, что он экономит этап обработки; решающим аргументом является то, что pdfTEX зарекомендовал себя как надежный, прочный и гибкий. В конце концов, скорее всего, это вопрос о том, какая программа удобнее и какая из них дала лучшие результаты для конкретного пользователя.

dvipdfmx — это расширенная версия транслятора DVI-to-PDF dvipdfm, входящего в текущие дистрибутивы TeX, такие как TeX Live 2014 [21] и MiKTeX 2.9. [22] Основной целью проекта dvipdfmx является поддержка многобайтовых кодировок символов и наборов символов CJK для восточноазиатских языков. [23] dvipdfmx также включен (в несколько измененной форме) в XeTeX . [4] : 798 

Во втором издании LaTeX Graphics Companion за 2008 год дается следующее предложение по рабочему процессу: [4] : 803 

Маршрут, по которому вам следует следовать, в основном зависит от графического материала, который вы хотите включить. Если большая его часть в формате EPS, самый простой способ — использовать latex, затем dvips и, наконец, ps2pdf . Если все ваши графические файлы уже в формате PDF с некоторыми изображениями JPEG и PNG, более прямой путь — запустить pdflatex. Вы также можете объединить оба подхода, запустив latex и программу dvipdfmx. Если вы часто используете PSTricks , вам следует взглянуть на [...] пакет pst-pdf.

Ссылки и примечания

  1. ^ ab Donald E. Knuth (декабрь 1995 г.). "DVItype" ( исходный код WEB ; извлечь полную документацию с помощью WEAVE ) . Версия 3.6 . Получено 2008-05-07 .
  2. ^ Комитет по стандартам драйверов DVI TUG. "Стандарт драйвера DVI, уровень 0" (PDF) . ctan.org .
  3. ^ Комитет по стандартам драйверов DVI TUG (1992). "Стандарт драйверов DVI, уровень 0" (PDF) . TUGboat . 13 : 54.
  4. ^ abcdefg Мишель Гуссенс, Франк Миттельбах, Себастьян Рахц , Денис Рогель, Герберт Восс (2008). LaTeX Graphics Companion (2-е изд.). Аддисон-Уэсли. ISBN 978-0-321-50892-8.{{cite book}}: CS1 maint: несколько имен: список авторов ( ссылка )
  5. ^ "Y&Y Inc. -- DVIWindo" . www.tug.org .
  6. ^ "Y&Y Inc. -- DVIPSONE" . www.tug.org .
  7. ^ "CTAN: /tex-archive/dviware/dvitops". ctan.org .
  8. ^ https://www.tug.org/TUGboat/tb27-2/tb87frischauf.pdf [ пустой URL-адрес PDF ]
  9. ^ "CTAN: /tex-archive/dviware". ctan.org .
  10. ^ В 1986 году Томаш Рокицкий напечатал свою первую страницу с dvisw, ранним драйвером принтера DVI для Amiga, на QMS SmartWriter с использованием AmigaTeX от Radical Eye Software. Ссылка на реликтовую информацию о вехах истории LaTeX доступна на этом внешнем сайте.
  11. ^ Рокицкий, Томас (апрель 1988 г.). «Commodore Amiga: Волшебная TeX-машина» (PDF) . TUGboat . 9 (1): 40–41 . Получено 19 ноября 2010 г. .
  12. ^ "Ubuntu Manpage: Dvipdf - Преобразование файла TeX DVI в PDF с помощью ghostscript и dvips". Архивировано из оригинала 2015-09-09 . Получено 2014-08-03 .
  13. ^ https://www.tug.org/TUGboat/tb17-3/tb52lese.pdf [ пустой URL-адрес PDF ]
  14. ^ https://www.tug.org/TUGboat/tb18-3/tb56lese.pdf [ пустой URL-адрес PDF ]
  15. ^ "Навигатор (La)TeX".
  16. ^ Хельмут Копка; Патрик В. Дейли (февраль 2008) [2004]. Руководство по LaTeX (4-е; 9-е печатное изд.). Pearson Education. § 13.2.2 драйвер dvipdfm. ISBN 978-0-321-17385-0.
  17. ^ "Где art dvipdf? - comp.text.tex". compgroups.net . Архивировано из оригинала 11 августа 2014 г.{{cite web}}: CS1 maint: unfit URL (link)
  18. ^ Марк А. Уикс, Руководство пользователя Dvipdfm, архивировано 06.07.2015 на Wayback Machine , версия 0.12.4, 19 сентября 1999 г., стр. 2
  19. ^ "texfaq2html перенаправление эмулирует поиск cgi-bin на исходном сайте". www.texfaq.org .
  20. ^ Хельмут Копка; Патрик В. Дейли (февраль 2008 г.) [2004 г.]. Руководство по LaTeX (4-е; 9-е печатное изд.). Пирсон Образование. § 13.2.3 Программа pdfTEX. ISBN 978-0-321-17385-0.
  21. ^ "Debian -- Подробная информация о пакете texlive-base в sid". packages.debian.org .
  22. ^ "Пакеты MiKTeX AZ" . сайт miktex.org .
  23. ^ «Проект DVIPDFMx». project.ktug.org .
  • Фукс, Дэвид (октябрь 1982 г.). «Формат файлов TeX DVI» (PDF) . TUGboat . 3 (2): 13–19 . Получено 19 августа 2009 г. .
  • (Неофициальное) описание формата файла DVI
  • Утилита информации о файлах TeX DVI
  • CTAN: /tex-archive/dviware
  • pdftex - Почему pdflatex создает большие выходные файлы, чем latex+dvipdfm?
Retrieved from "https://en.wikipedia.org/w/index.php?title=Device_independent_file_format&oldid=1237545715"