Независимый от устройства формат файла - Device independent file format

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

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

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

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

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

Технические характеристики

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

В более широком смысле файл DVI состоит из преамбулы, одной или нескольких страниц и постамбулы. Шесть переменных состояния хранятся в виде кортежа 32-битных целых чисел со знаком: . час и v - текущие горизонтальные и вертикальные смещения от верхнего левого угла (увеличение v перемещается вниз по странице), ш и Икс удерживать значения горизонтального пробела, у и z, вертикальный.

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

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

Графика как особенная

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

Версии DVI

Программное обеспечение, связанное с DVI

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

  • Зрители DVI: YAP (включен в MiKTeX ), xdvi, Windvi, Evince, KDVI, Окулар, dviout, Дввин, DView (входит в коммерческий дистрибутив BaKoMa TeX), javaDVI, MDVI и DVIWindo (ныне несуществующей коммерческой Y&Y TeX, исходный код которой открыт).[5]
  • DVI в удобочитаемый формат: dvitype (своего рода дизассемблер)
  • Конвертеры DVI в PDF: dvipdf, dvipdfm, dvipdfmx
  • Конвертеры DVI-to-PS: dvips является стандартом де-факто. CTAN включает некоторые старые, такие как dvitops (и DVIPSONE[6]) с примечанием, что они давно потеряли свою долю рынка.[7]
  • Конвертеры DVI-to-bitmap: dvipng (генерирует GIF или PNG) или используйте dvips и Ghostscript
  • Конвертеры DVI-to-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-to-PDF, разработанный Марком А. Уиксом. В ранней документации dvipdfm конкретно упоминается ограниченная доступность dvipdf Лесенко как причина для создания dvipdfm.[18] dvipdfm поддерживает большинство новых специальных функций формата PDF, включая закладки, аннотации, эскизы, и dvips specials - функция, делающая возможным включение Инкапсулированный PostScript (.eps) файлы, такие как МЕТАПОСТ вывод, а также включение JPEG и PNG изображений; другие функции dvipdfm включают частичное встраивание шрифтов (уменьшение размера файла) и балансировка внутренних деревьев PDF-документов для ускорения рендеринга больших документов.[4]:798 Многие из этих функций (за исключением прямой поддержки файлов .eps[19]) также присутствуют в pdfTeX, который набирает TeX непосредственно в PDF. 2004 г., 4-е издание Руководство по LaTeX сравнивает их следующим образом:[20]

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

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

2-е издание 2008 г. Графический помощник LaTeX предлагает следующий рабочий процесс:[4]:803

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

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

  1. ^ а б Дональд Э. Кнут (Декабрь 1995 г.). "DVItype" (WEB исходный код; извлечь полную документацию, используя Ткать ). Версия 3.6. Получено 2008-05-07. Цитировать журнал требует | журнал = (Помогите)
  2. ^ Комитет по стандартам драйверов TUG DVI. «Стандарт драйвера DVI, уровень 0» (PDF). ctan.org.
  3. ^ Комитет по стандартам на драйверы TUG DVI (1992). «Стандарт драйвера DVI, уровень 0» (PDF). ТУГбоат. 13: 54.
  4. ^ а б c d е ж грамм Мишель Гуссенс, Франк Миттельбах, Себастьян Ратц, Денис Рогель, Герберт Фосс (2008). Графический помощник LaTeX (2-е изд.). Эддисон-Уэсли. ISBN  978-0-321-50892-8.CS1 maint: несколько имен: список авторов (ссылка на сайт)
  5. ^ https://www.tug.org/yandy/dviwindo.htm
  6. ^ https://www.tug.org/yandy/dvipsone.htm
  7. ^ http://www.ctan.org/tex-archive/dviware/dvitops
  8. ^ https://www.tug.org/TUGboat/tb27-2/tb87frischauf.pdf
  9. ^ http://www.ctan.org/tex-archive/dviware/
  10. ^ В 1986 г. Томаш Рокицки напечатал свою первую страницу с dvisw, ранним драйвером принтера DVI для Amiga, на QMS SmartWriter с помощью AmigaTeX к Программное обеспечение Radical Eye. Доступна ссылка на реликтовую информацию о вехах истории LaTeX. на этом внешнем сайте.
  11. ^ Рокицки, Томас (апрель 1988 г.). "Коммодор Амига: Волшебная машина TeX" (PDF). ТУГбоат. 9 (1): 40–41. Получено 2010-11-19.
  12. ^ «Архивная копия». Архивировано из оригинал на 2015-09-09. Получено 2014-08-03.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  13. ^ https://www.tug.org/TUGboat/tb17-3/tb52lese.pdf
  14. ^ https://www.tug.org/TUGboat/tb18-3/tb56lese.pdf
  15. ^ http://tex.loria.fr/general/eurotex98/eurotex98-lesenko.ps.gz
  16. ^ Гельмут Копка; Патрик В. Дейли (февраль 2008 г.) [2004 г.]. Руководство по LaTeX (4-е; 9-е изд.). Pearson Education. § 13.2.2 драйвер dvipdfm. ISBN  0-321-17385-6.
  17. ^ http://compgroups.net/comp.text.tex/where-art-dvipdf/1912300
  18. ^ Марк А. Уикс, Руководство пользователя Dvipdfm В архиве 2015-07-06 в Wayback Machine, Версия 0.12.4 19 сентября 1999 г., стр. 2
  19. ^ http://www.tex.ac.uk/cgi-bin/texfaq2html?label=dvipdfmgraphics
  20. ^ Гельмут Копка; Патрик В. Дейли (февраль 2008 г.) [2004 г.]. Руководство по LaTeX (4-е; 9-е изд.). Pearson Education. § 13.2.3 Программа pdfTEX. ISBN  0-321-17385-6.
  21. ^ https://packages.debian.org/sid/texlive-base
  22. ^ http://miktex.org/pkg/az
  23. ^ Проект Dvipdfmx

внешняя ссылка