El formato de archivo independiente del dispositivo ( DVI ) es el formato de archivo de salida del programa de composición tipográfica TeX , diseñado por David R. Fuchs en 1979. [ 1 ] A diferencia de los archivos de marcado TeX utilizados para generarlos, los archivos DVI no están pensados para ser legibles por humanos ; consisten en datos binarios que describen la disposición visual de un documento de una manera que no depende de ningún formato de imagen , hardware de visualización o impresora específicos . Los archivos DVI se utilizan normalmente como entrada para un segundo programa (llamado controlador DVI ) que traduce los archivos DVI a datos gráficos. Por ejemplo, la mayoría de los paquetes de software TeX incluyen un programa para previsualizar archivos DVI en la pantalla del ordenador del usuario; este programa es un controlador. Los controladores también se utilizan para convertir de DVI a lenguajes de descripción de página populares (por ejemplo, PostScript , PDF ) y para imprimir.
El marcado TeX puede ser al menos parcialmente objeto de ingeniería inversa a partir de archivos DVI, aunque es poco probable que este proceso produzca construcciones de alto nivel idénticas a las presentes en el marcado original, especialmente si el marcado original utilizaba extensiones TeX de alto nivel (por ejemplo, LaTeX ).
DVI se diferencia de PostScript y PDF en que no admite la incrustación de fuentes, sino que simplemente hace referencia a nombres de fuentes externas. (Tanto PostScript como PDF permiten incrustar sus fuentes dentro de los documentos). Para que un archivo DVI se imprima o incluso se previsualice correctamente, las fuentes a las que hace referencia deben estar instaladas.
Además, al igual que el formato de documento PDF, DVI utiliza un tipo limitado de lenguaje de “programación” (en el caso de DVI, “un lenguaje similar al de una máquina”), [ 1 ] donde la terminación garantiza que no es un lenguaje de programación completo y Turing-completo como PostScript.
Desde 2004 existe una recopilación de las especificaciones que debe implementar un controlador DVI por parte del "Comité de Estándares de Controladores DVI de TUG". [ 2 ] Parece estar basada en un artículo de TUGboat del mismo nombre de 1992, pero que es mucho más corto. [ 3 ] Estos documentos no especifican el orden de bytes , que sin embargo es big-endian, como se puede ver al examinar un archivo DVI.
Especificación
El formato DVI fue diseñado para ser compacto y fácilmente legible por máquina. Con este fin, un archivo DVI es una secuencia de comandos que forman "un lenguaje similar al de una máquina ", en palabras de Knuth . [ 1 ] Cada comando comienza con un código de operación de ocho bits , seguido de cero o más bytes de parámetros. Por ejemplo, un código de operación del grupo 0x00hasta 0x7F(decimal 127), , formatea un solo carácter y mueve el cursor implícito a la derecha según el ancho de ese carácter. En cambio, el código de operación (decimal 247), (el preámbulo, que debe ser el primer código de operación en el archivo DVI), toma al menos catorce bytes de parámetros, más un comentario opcional de hasta 255 bytes.set_char_i0xF7pre
En un sentido más amplio, un archivo DVI consta de un preámbulo, una o más páginas y un postámbulo. Seis variables de estado,,,,, yse mantienen como enteros con signo de 32 bits, dondeyson los desplazamientos horizontales y verticales actuales desde la esquina superior izquierda (aumentandose desplaza hacia abajo en la página),ymantener valores de espacio horizontal, yymantener valores de espacio vertical.
Estas variables se pueden insertar o extraer de la pila . Además, la fuente actual f se mantiene como un valor entero, pero no se inserta ni se extrae con el resto de las variables de estado cuando se encuentran los códigos de operación pusho . La información de espaciado de la fuente se carga desde archivos TFM . Las fuentes en sí no están incrustadas en el archivo DVI, solo se referencian mediante un valor entero definido en la operación correspondiente. (Esto se hace exactamente dos veces para cada fuente cargada: una vez antes de que se haga referencia a ella y una vez en el postámbulo). f contiene un valor entero de hasta cuatro bytes de longitud, aunque en la práctica, TeX solo genera números de fuente en el rango de 0 a 255.popfnt_defi
De forma similar, el formato DVI admite códigos de caracteres de hasta cuatro bytes, aunque comúnmente solo se utiliza el rango 0-255, ya que el formato TFM está limitado a ese rango. Los códigos de caracteres en los archivos DVI se refieren a la codificación de caracteres de la fuente actual, no a la del sistema que la procesa. Esto significa, por ejemplo, que un sistema basado en EBCDIC puede procesar un archivo DVI generado por un sistema basado en ASCII , siempre que tenga instaladas las mismas fuentes.
Gráficos como especiales
El formato DVI no admite gráficos, salvo las cajas básicas en blanco y negro. En su lugar, DVI cuenta con un mecanismo general de escape/extensión, conocido como "specials" (expresado mediante el \specialcomando en TeX), que delega el procesamiento de gráficos (y color) a filtros posteriores. Existen numerosos "specials" de DVI, entre los que destacan los de PostScript , pero otros programas como tpic también tienen los suyos. [ 4 ] : 6, 17
Software relacionado con DVI
Los archivos DVI suelen convertirse a formato PDF, PostScript o PCL para su lectura e impresión. También pueden visualizarse directamente mediante visores DVI.
- Visores DVI: YAP (incluido en MiKTeX ), xdvi , windvi , Evince , KDVI , Okular , dviout , dviwin , DView (incluido en la distribución comercial BaKoMa TeX), javaDVI , MDVI y DVIWindo (de la ahora extinta distribución comercial Y&Y TeX, que se ha liberado como código abierto). [ 5 ]
- DVI a formato legible para humanos: dvitype (una especie de desensamblador)
- Convertidores de DVI a PDF: dvipdf , dvipdfm , dvipdfmx
- Convertidores DVI a PS: dvips es el estándar de facto. CTAN incluye algunos más antiguos como dvitops (y DVIPSONE [ 6 ] ) con una nota que indica que perdieron su cuota de mercado hace mucho tiempo. [ 7 ]
- Convertidores de DVI a mapa de bits: dvipng (genera GIF o PNG), o utilice dvips y Ghostscript.
- Convertidores DVI a SVG: dvisvg , [ 4 ] : 13 dvisvgm , [ 4 ] : 13 dvi2svg; [ 4 ] : 13 [ 8 ] A partir de 2014El único incluido en CTAN y mantenido activamente es dvisvgm . [ 9 ]
Los primeros visores DVI capaces de previsualizar y modificar documentos LaTeX en pantalla funcionaban en Amigas . [ 10 ] [ 11 ]
Convertidores de DVI a PDF
dvipdf es una herramienta para convertir archivos DVI (generados por TeX ) a archivos PDF . En las distribuciones Linux actuales como Ubuntu , es una capa ligera sobre dvips y Ghostscript , y está protegida por derechos de autor de Artifex Software (los creadores de Ghostscript). [ 12 ] Un programa posiblemente diferente con el mismo nombre —descrito como una versión modificada de dvips— fue anunciado a finales de la década de 1990 por Sergey Lesenko, [ 13 ] [ 14 ] [ 15 ] sin embargo, aparentemente nunca fue lanzado . [ 16 ] [ 17 ]
dvipdfm es un traductor de DVI a PDF desarrollado por Mark A. Wicks. La documentación inicial de dvipdfm menciona específicamente la disponibilidad limitada de dvipdf de Lesenko como una razón para crear dvipdfm. [ 18 ] dvipdfm admite la mayoría de las funciones especiales más recientes del formato PDF, incluidos marcadores , anotaciones , miniaturas y especiales dvips, una característica que permite la inclusión de archivos Encapsulated PostScript (.eps) como la salida METAPOST , así como la inclusión de imágenes JPEG y PNG ; otras características de dvipdfm incluyen la incrustación parcial de fuentes (reduciendo el tamaño del archivo) y el equilibrio de los árboles internos del documento PDF para acelerar la representación de documentos grandes. [ 4 ] : 798 Muchas de estas características (excepto la compatibilidad directa con archivos .eps [ 19 ] ) también están presentes en pdfTeX , que compone tipográficamente TeX directamente a PDF. La cuarta edición de 2004 de la Guía de LaTeX los compara de la siguiente manera: [ 20 ]
El programa dvipdfm se inspira en el espíritu original de TEX, que utiliza DVI como formato intermedio universal para todas las salidas. Los puristas podrían respetar este ideal. Al fin y al cabo, nadie consideró jamás reescribir TEX para generar directamente archivos PostScript. Dicho esto, hay que tener en cuenta que TEX se inventó en una época en la que ninguna especificación de impresora dominaba el sector. Hoy en día, PDF es mucho más que un formato de impresora; es el medio para representar documentos electrónicamente. Esto por sí solo no justifica preferir pdfTEX a un conversor de DVI a PDF, ni tampoco el hecho de que ahorre un paso de procesamiento; el argumento decisivo es que pdfTEX se ha consolidado como un programa fiable, robusto y flexible. En definitiva, probablemente se trate de una cuestión de con qué programa se sienta más cómodo el usuario y cuál le haya proporcionado mejores resultados.
dvipdfmx es una versión extendida del traductor de DVI a PDF dvipdfm, incluido en las distribuciones TeX actuales como TeX Live 2014 [ 21 ] y MiKTeX 2.9. [ 22 ] El objetivo principal del proyecto dvipdfmx es admitir codificaciones de caracteres multibyte y conjuntos de caracteres CJK para idiomas de Asia Oriental. [ 23 ] dvipdfmx también está incluido (en una forma ligeramente modificada) en XeTeX . [ 4 ] : 798
La segunda edición de 2008 del LaTeX Graphics Companion sugiere el siguiente flujo de trabajo: [ 4 ] : 803
La ruta que debes seguir depende principalmente del material gráfico que quieras incluir. Si la mayor parte está en formato EPS, la forma más sencilla es usar LaTeX, seguido de DviPS y, finalmente, ps2pdf . Si todos tus archivos gráficos ya están en formato PDF, con algunas imágenes JPEG y PNG, la ruta más directa es ejecutar pdflatex. También puedes combinar ambos enfoques ejecutando LaTeX y el programa dvipdfmx. Si usas mucho PSTricks , deberías consultar el paquete pst-pdf.
Referencias
- 1 2 3 Donald E. Knuth (diciembre de 1995). "DVItype" ( código fuente WEB ; extracción de la documentación completa mediante WEAVE ) . Versión 3.6 . Consultado el 7 de mayo de 2008.
El primer programa DVItype fue diseñado por David Fuchs en 1979.
- ↑ Comité de estándares de controladores DVI de TUG. "El estándar de controlador DVI, nivel 0" (PDF) . ctan.org .
- ↑ Comité de Estándares del Controlador DVI de TUG (1992). "El Estándar del Controlador DVI, Nivel 0" (PDF) . TUGboat . 13 : 54.
- 1 2 3 4 5 6 7 Goossens, Michel; Mittelbach, Frank; Rahtz, Sebastián ; Roegel, Denis; Voß, Herbert (2008). El compañero de gráficos LaTeX (2ª ed.). Addison-Wesley. ISBN 978-0-321-50892-8.
- ^ "Y&Y Inc.-DVIWindo" . www.tug.org .
- ^ "Y&Y Inc. - DVIPSONE" . www.tug.org .
- ↑ "CTAN: /tex-archive/dviware/dvitops" . ctan.org .
- ↑ Frischauf, Adrian; Libbrecht, Paul (2006). "DVI2SVG: Uso del diseño Latex en la web" (PDF) . tug.org . Archivado (PDF) del original el 13 de septiembre de 2025.
- ↑ "CTAN: /tex-archive/dviware" . ctan.org .
- ↑ En 1986, Tomas Rokicki imprimió su primera página con dvisw, un controlador de impresora DVI primitivo para Amiga, en una QMS SmartWriter usando AmigaTeX de Radical Eye Software. Un enlace a información sobre hitos de la historia de LaTeX está disponible en este sitio externo .
- ↑ Rokicki, Tomas (abril de 1988). "The Commodore Amiga: A Magic TeX Machine" (PDF) . TUGboat . 9 (1): 40– 41. Recuperado el 19 de noviembre de 2010 .
- ↑ "Ubuntu Manpage: Dvipdf - Convertir archivo DVI de TeX a PDF usando ghostscript y dvips" . Archivado del original el 9 de septiembre de 2015. Consultado el 3 de agosto de 2014 .
- ↑ Lesenko, Sergey (1996). "El programa DVIPDF" (PDF) . tug.org . Archivado (PDF) del original el 9 de septiembre de 2025.
- ↑ Lesenko, Sergey (1997). "DVIPDF y gráficos" (PDF) . tug.org . Archivado (PDF) del original el 20 de septiembre de 2025.
- ↑ "(La)TeX Navigator" .
- ↑ Helmut Kopka; Patrick W. Daly (febrero de 2008) [2004]. Guía de LaTeX (4.ª ed.; 9.ª reimpresión ). Pearson Education. § 13.2.2 El controlador dvipdfm. ISBN 978-0-321-17385-0.
- ↑ "¿Dónde está art dvipdf? - comp.text.tex" . compgroups.net . Archivado del original el 11 de agosto de 2014.
- ↑ Mark A. Wicks, Manual de usuario de Dvipdfm Archivado el 6 de julio de 2015 en Wayback Machine , Versión 0.12.4 19 de septiembre de 1999, página 2
- ↑ "texfaq2html redirige emulando la búsqueda de cgi-bin en el sitio original" . www.texfaq.org .
- ↑ Helmut Kopka; Patrick W. Daly (febrero de 2008) [2004]. Guía de LaTeX (4.ª; 9.ª edición impresa). Educación Pearson. § 13.2.3 El programa pdfTEX. ISBN 978-0-321-17385-0.
- ↑ "Debian -- Detalles del paquete texlive-base en sid" . packages.debian.org .
- ↑ «Paquetes MiKTeX AZ» . miktex.org .
- ↑ "El proyecto DVIPDFMx" . project.ktug.org .
- Fuchs, David (octubre de 1982). "El formato de los archivos DVI de TeX" (PDF) . TUGboat . 3 (2): 13–19 . Recuperado el 19 de agosto de 2009 .
Enlaces externos
- Descripción (no oficial) del formato de archivo DVI
- Utilidad de información de archivos DVI de TeX
- CTAN: /tex-archive/dviware
- Idiomas de descripción de página
- formatos de archivos informáticos
- Formatos abiertos
- Texas