Geräteunabhängiges Dateiformat - Device independent file format

Geräteunabhängig (DVI)
Zeigen Sie die Vorschau einer DVI-Datei an.png
Zeigen Sie die Vorschau einer DVI-Datei an. Beachten Sie, dass referenzierte Bilder nicht angezeigt werden, da sie nicht Teil der DVI-Datei sind. Bilder werden von einem Druckertreiber wie dvips hinzugefügt .
Dateinamenerweiterung
.dvi
Internet-Medientyp application/x-dvi (inoffiziell)
Entwickelt von David R. Fuchs
Formattyp dokumentieren

Das geräteunabhängige Dateiformat ( DVI ) ist das Ausgabe - Dateiformat des TeX Satzprogrammes, entworfen von David R. Fuchs und umgesetzt von Donald E. Knuth 1982. Im Gegensatz zu den TeX - Markup - Dateien verwendet , um sie zu erzeugen, DVI - Dateien sind nicht dazu gedacht für Menschen lesbar sein ; Sie bestehen aus Binärdaten, die das visuelle Layout eines Dokuments auf eine Weise beschreiben, die nicht von einem bestimmten Bildformat , Anzeigehardware oder Drucker abhängig ist . DVI-Dateien werden normalerweise als Eingabe für ein zweites Programm (genannt DVI- Treiber) verwendet), die DVI-Dateien in grafische Daten umwandelt. Die meisten TeX-Softwarepakete enthalten beispielsweise ein Programm zur Vorschau von DVI-Dateien auf dem Computerbildschirm eines Benutzers; Dieses Programm ist ein Treiber. Treiber werden auch zum Konvertieren von DVI in gängige Seitenbeschreibungssprachen (zB PostScript , PDF ) und zum Drucken verwendet.

TeX Auszeichnungs kann zumindest teilweise sein Reverse-Engineering von DVI - Dateien, obwohl dieser Vorgang unwahrscheinlich ist , konstruiert , um solche , die in den ursprünglichen Auszeichnungs, insbesondere wenn das ursprüngliche Auszeichnungs verwendete High-Level - TEX - Erweiterungen (zB identische hohe Ebene erzeugen Latex ).

DVI unterscheidet sich von PostScript und PDF dadurch, dass es keine Form der Schrifteinbettung unterstützt. (Sowohl PostScript- als auch PDF-Formate können ihre Schriftarten entweder in die Dokumente einbetten oder auf externe verweisen.) Damit eine DVI-Datei gedruckt oder sogar richtig in der Vorschau angezeigt werden kann, müssen die Schriftarten, auf die sie verweist, bereits installiert sein. Wie PDF verwendet DVI eine begrenzte Art von Maschinensprache mit Terminierungsgarantien, die keine vollständige, Turing-vollständige Programmiersprache wie PostScript ist.

Ab 2004 gibt es eine Zusammenstellung der Spezifikationen, die ein DVI-Treiber vom "TUG DVI Driver Standards Committee" umsetzen muss. Es scheint auf einem gleichnamigen TUGboat-Artikel von 1992 zu basieren, der jedoch viel kürzer ist. Diese Dokumente geben nicht die Endianness an , die jedoch Big Endian ist, wie man beim Betrachten einer DVI-Datei selbst sehen kann.

Spezifikation

Das DVI-Format wurde so konzipiert, dass es kompakt und leicht maschinenlesbar ist. Zu diesem Zweck ist eine DVI-Datei eine Folge von Befehlen, die in Knuths Worten "eine maschinenähnliche Sprache " bilden . Jeder Befehl beginnt mit einem 8-Bit- Opcode , gefolgt von null oder mehr Parameterbytes. Ein Opcode aus der Gruppe bis (dezimal 127) setzt beispielsweise ein einzelnes Zeichen und bewegt den impliziten Cursor um die Breite dieses Zeichens nach rechts. Im Gegensatz dazu benötigt Opcode (dezimal 247) (die Präambel, die der erste Opcode in der DVI-Datei sein muss) mindestens 14 Byte Parameter plus einen optionalen Kommentar von bis zu 255 Byte. 0x000x7Fset_char_i0xF7pre

Im weiteren Sinne besteht eine DVI-Datei aus einer Präambel, einer oder mehreren Seiten und einer Postambel. Sechs Zustandsvariablen werden als Tupel von 32-Bit-Ganzzahlen mit Vorzeichen verwaltet: . h und v sind die aktuellen horizontalen und vertikalen Versätze von der oberen linken Ecke (ein zunehmendes v bewegt sich auf der Seite nach unten), w und x enthalten horizontale Abstandswerte, y und z , vertikal.

Diese Variablen können auf den Stack gepusht oder vom Stack entfernt werden . Außerdem wird die aktuelle Schriftart f als ganzzahliger Wert gehalten, aber nicht mit den restlichen Zustandsvariablen gepusht und ausgegeben, wenn die Opcodes pushoder popangetroffen werden. Informationen zum Schriftabstand werden aus TFM- Dateien geladen . Die Schriftarten selbst werden nicht in die DVI-Datei eingebettet, sondern nur durch einen ganzzahligen Wert referenziert, der in der entsprechenden Op definiert ist. (Dies wird für jede geladene Schriftart genau zweimal durchgeführt: einmal vor der Referenzierung und einmal in der Postambel.) f enthält einen ganzzahligen Wert von bis zu vier Byte Länge, obwohl TeX in der Praxis immer nur Schriftartnummern im Bereich ausgibt 0 bis 255. fnt_defi

In ähnlicher Weise unterstützt das DVI-Format Zeichencodes mit einer Länge von bis zu vier Bytes, obwohl normalerweise nur der Bereich 0–255 angezeigt wird, da das TFM- Format auf diesen Bereich beschränkt ist. Zeichencodes in DVI-Dateien beziehen sich auf die Zeichencodierung der aktuellen Schriftart und nicht auf die des Systems, das sie verarbeitet. Das bedeutet zum Beispiel, dass ein EBCDIC- basiertes System eine DVI-Datei verarbeiten kann, die von einem ASCII- basierten System generiert wurde , solange es die gleichen Schriftarten installiert hat.

Grafiken als Specials

Das DVI-Format unterstützt keine Grafiken, mit Ausnahme der einfachsten Schwarz-Weiß-Boxen. Stattdessen verfügt DVI über einen allgemeinen Escape-/Erweiterungsmechanismus, bekannt als Specials (ausgedrückt durch den \specialBefehl in TeX), der Grafiken (und Farben) an Nachbearbeitungsfilter verschiebt. Es gibt zahlreiche DVI-Specials, von denen die bekanntesten PostScript- Specials sind, aber auch andere Programme wie tpic haben ihre eigenen.

DVI-Versionen

DVI-bezogene Software

DVI-Dateien werden zum Lesen und Drucken häufig in das PDF-, PostScript- oder PCL- Format konvertiert . Sie können auch direkt mit DVI-Viewern angezeigt werden.

  • DVI-Viewer: YAP (enthalten in MiKTeX ), xdvi , windvi , Evince , KDVI , Okular , dviout , dviwin , DView (enthalten in der kommerziellen BaKoMa TeX-Distribution), javaDVI , MDVI und DVIWindo (von Y&TeX die Open-Source ist).
  • DVI in ein menschenlesbares Format: dvitype (eine Art Disassembler)
  • DVI-zu-PDF-Konverter: dvipdf, dvipdfm, dvipdfmx
  • DVI-zu-PS-Konverter: dvips ist der De-facto-Standard. CTAN enthält einige ältere wie dvitops (und DVIPSONE) mit dem Hinweis, dass sie ihren Marktanteil vor langer Zeit verloren haben.
  • DVI-zu-Bitmap-Konverter: dvipng (erzeugt GIF oder PNG) oder verwenden Sie dvips und Ghostscript
  • DVI-zu-SVG-Konverter: dvisvg , dvisvgm , dvi2svg; Ab 2014 ist nur noch dvisvgm in CTAN enthalten und wird aktiv gepflegt.

Die ersten DVI-Vorschauprogramme, die LaTeX-Dokumente auf dem Bildschirm anzeigen und ändern konnten, liefen auf Amigas .

DVI-zu-PDF-Konverter

dvipdf ist ein Tool zum Übersetzen von DVI-Dateien (von TeX erzeugt ) in PDF- Dateien. In aktuellen Linux-Distributionen wie Ubuntu ist es ein dünner Wrapper um dvips und Ghostscript und ist urheberrechtlich von Artifex Software (den Herstellern von Ghostscript) geschützt. Ein möglicherweise anderes Programm mit demselben Namen – beschrieben als modifizierte Version von dvips – wurde Ende der 1990er Jahre von Sergey Lesenko angekündigt, aber anscheinend nie veröffentlicht .

dvipdfm ist ein von Mark A. Wicks entwickelter DVI-zu-PDF-Übersetzer. Die frühe Dokumentation von dvipdfm erwähnt ausdrücklich die begrenzte Verfügbarkeit von dvipdf von Lesenko als Grund für die Entwicklung von dvipdfm. dvipdfm unterstützt die meisten der neueren Spezialfunktionen des PDF-Formats, einschließlich Lesezeichen , Anmerkungen , Miniaturansichten und dvips-Specials – eine Funktion, die die Einbindung von Encapsulated PostScript (.eps)-Dateien wie der METAPOST- Ausgabe ermöglicht – sowie die Einbindung von JPEG- und PNG- Bildern ; Weitere Funktionen von dvipdfm sind die teilweise Einbettung von Schriftarten (Verringerung der Dateigröße) und das Ausbalancieren der internen PDF-Dokumentenbäume, um das Rendern großer Dokumente zu beschleunigen. Viele dieser Funktionen (mit Ausnahme der direkten Unterstützung von .eps-Dateien) sind auch in pdfTeX vorhanden , das TeX direkt in PDF schreibt . Die 2004, 4. Ausgabe des Guide to LaTeX vergleicht sie wie folgt:

Das Programm dvipdfm entspricht dem ursprünglichen Geist von TEX, das DVI als universelles Zwischenformat für alle Ausgaben verwendet. Puristen neigen dazu, dieses Ideal zu respektieren. Schließlich dachte niemand daran, TEX umzuschreiben, um direkt PostScript-Ausgaben zu erzeugen. Allerdings muss man bedenken, dass TEX zu einer Zeit erfunden wurde, als noch keine Druckerspezifikation das Feld dominierte. PDF ist heute viel mehr als ein Druckerformat; es ist das Mittel zur elektronischen Darstellung von Dokumenten. Das allein würde es nicht rechtfertigen, pdfTEX einem DVI-zu-PDF-Konverter vorzuziehen, noch würde es einen Verarbeitungsschritt sparen; ausschlaggebend ist, dass sich pdfTEX als zuverlässig, robust und flexibel etabliert hat. Am Ende ist es wahrscheinlich die Frage, mit welchem ​​Programm man sich wohler fühlt und welches für den jeweiligen Benutzer die besseren Ergebnisse gebracht hat.

dvipdfmx ist eine erweiterte Version des DVI-zu-PDF-Übersetzers dvipdfm, der in aktuellen TeX-Distributionen wie TeX Live 2014 und MiKTeX 2.9 enthalten ist. Das Hauptziel des dvipdfmx-Projekts ist die Unterstützung von Multibyte-Zeichenkodierungen und CJK- Zeichensätzen für ostasiatische Sprachen. dvipdfmx ist auch (in etwas abgewandelter Form) in XeTeX enthalten .

Die 2. Ausgabe 2008 des LaTeX Graphics Companion macht den folgenden Workflow-Vorschlag:

Die Route, der Sie folgen sollten, hängt hauptsächlich von dem Grafikmaterial ab, das Sie einbinden möchten. Wenn das meiste davon im EPS-Format vorliegt, ist es am einfachsten, Latex zu verwenden, gefolgt von dvips und schließlich ps2pdf . Wenn alle Ihre Grafikdateien bereits im PDF-Format vorliegen, mit einigen JPEG- und PNG-Bildern, ist der direktere Weg, pdflatex auszuführen. Sie können beide Ansätze auch kombinieren, indem Sie latex und das Programm dvipdfmx ausführen. Wenn Sie PSTricks häufig verwenden , sollten Sie sich das [...] pst-pdf-Paket ansehen.

Referenzen und Hinweise

Externe Links