A DVI fájl (DeVice Independent, magyarul eszközfüggetlen) a TeX program kimeneti fájlformátuma, amit Donald Knuth, a Stanford University professzora írt, PhD hallgatói közreműködésével.[2] A fájlformátum egy dokumentum vizuális tulajdonságait írja le (például font, margók, de NEM tartalmazza az esetleges beszúrt médiafájlokat, fontokat közvetlenül) olyan módon (ahogy a neve is sugallja), hogy ne függjön semmilyen megjelenítő eszköztől. A fájl tipikusan egy másik program (DVI driver) bemenete, ami vizuálisan megjeleníthető alakra hozza (pl. egy DVI viewer alkalmazás, direkt nyomtatás).[3] DVI driver lehet egy másik fájlformátumba konvertáló program is. A DVI driverek szabványosításával a TeX Users Group's Technical Working Group on DVI Driver Implementation and Standardization Issues (röviden TWG-DVI) foglalkozik.[4][5]

DeVice Independent (DVI)
Fájlkiterjesztés.dvi
MIME-típusapplication/x-dvi
FejlesztőDavid Raymond Fuchs, Donald Erwin Knuth[1]
Formátum típusabináris dokumentum fájlformátum

Felépítés szerkesztés

Fizikai felépítés szerkesztés

A DVI fájl egy bájtstream, ami gépi kódszerű utasítások sorozatának feleltethető meg. Minden utasítás első bájtja egy műveleti kód (opcode), amelyet 0 vagy több bájt követ, ezek reprezentálják a műveleti kód paramétereit. A paraméterek maguk több bájtosak is lehetnek. A paraméterek rendszerint nemnegatív egészek, de a négy bájt hosszú, és a távolságot reprezentáló kisebb paraméterek negatív értékeket is felvehetnek, ezeket kettes komplemenssel ábrázolják. A több bájtos paraméterekhez a big-endian ábrázolást használják.

Logikai felépítés szerkesztés

A DVI fájl áll egy "preambulumból", amit egy vagy több "oldal" követ, majd egy "posztambulummal" záródik. A preambulum egy egyszerű pre utasítás. Minden oldal egy bop eop utasításokkal keretezett tetszőleges számú utasításból álló sorozat. Minden eop utasítást egy bop vagy egy post utasítás követ (ha eltekintünk a nop és az fnt_def utasításoktól), az utóbbi eset azt jelenti hogy nincs több oldal, a posztambulum következik.

A DVI utasítások listája (angol) szerkesztés

Bővebb referenciáért és az utasítások részletes leírásáért lásd a DVI fájlformátum specifikációját[6]

The DVI Instruction Set
Opcode Instruction Name Parameters Description
0...127 set_char_i typeset a character and move right
128 set1 c[1] typeset a character and move right
129 set2 c[2]
130 set3 c[3]
131 set4 c[4]
132 set_rule a[4], b[4] typeset a rule and move right
133 put1 c[1] typeset a character
134 put2 c[2]
135 put3 c[3]
136 put4 c[4]
137 put_rule a[4], b[4] typeset a rule
138 nop no operation
139 bop c_0[4]..c_9[4], p[4] beginning of page
140 eop ending of page
141 push save the current positions
142 pop restore previous positions
143 right1 b[1] move right
144 right2 b[2]
145 right3 b[3]
146 right4 b[4]
147 w0 move right by w
148 w1 b[1] move right and set w
149 w2 b[2]
150 w3 b[3]
151 w4 b[4]
152 x0 move right by x
153 x1 b[1] move right and set x
154 x2 b[2]
155 x3 b[3]
156 x4 b[4]
157 down1 a[1] move down
158 down2 a[2]
159 down3 a[3]
160 down4 a[4]
161 y0 move down by y
162 y1 a[1] move down and set y
163 y2 a[2]
164 y3 a[3]
165 y4 a[4]
166 z0 move down by z
167 z1 a[1] move down and set z
168 z2 a[2]
169 z3 a[3]
170 z4 a[4]
171...234 fnt_num_i set current font to i
235 fnt1 k[1] set current font
236 fnt2 k[2]
237 fnt3 k[3]
238 fnt4 k[4]
239 xxx1 k[1], x[k] extension to DVI primitives
240 xxx2 k[2], x[k]
241 xxx3 k[3], x[k]
242 xxx4 k[4], x[k]
243 fnt_def1 k[1], c[4], s[4], d[4],
a[1], l[1], n[a+l]
define the meaning of a font number
244 fnt_def2 k[2], c[4], s[4], d[4],
a[1], l[1], n[a+l]
245 fnt_def3 k[3], c[4], s[4], d[4],
a[1], l[1], n[a+l]
246 fnt_def4 k[4], c[4], s[4], d[4],
a[1], l[1], n[a+l]
247 pre i[1], num[4], den[4], mag[4],
k[1], x[k]
preamble
248 post p[4], num[4], den[4], mag[4],
l[4], u[4], s[2], t[2]

< font definitions >
postamble beginning
249 post_post q[4], i[1]; 223's postamble ending
250...255 undefined

Alkalmazások szerkesztés

DVI viewerek szerkesztés

YAP, a MiKTeX része.
xdvi
kdvi
evince

DVI konverterek szerkesztés

PDF-re: dvipdf, dvipdfm, dvipdfmx
Postscriptre: dvips
PNG-re: dvipng

Források szerkesztés

  1. Knuth, Donald Erwin; Fuchs, David Raymond: A DVI fájlformátum kanonikus implementációja (forráskód), 1982. [2013. december 13-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. július 1.)
  2. Walden, Dave: Interview of David Fuchs (angol nyelven), 2007. március. (Hozzáférés: 2009. július 1.)
  3. UK TeX Users’ Group: TeX Frequently Asked Questions -- question label "driver" (angol nyelven). [2009. január 2-i dátummal az eredetiből archiválva].
  4. DVI Driver Implementation and Standardization Issues (angol nyelven), 1995. május. [2009. szeptember 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. július 1.)
  5. TUG DVI Driver Standards Committee: The DVI Driver Standard, Level 0 (angol nyelven) (DVI). [2007. február 9-i dátummal az eredetiből archiválva].
  6. The DVI File Format. [2007. április 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. július 1.)