¿Por qué SVG no es compatible con el backend de TeX?

¿Por qué SVG no es compatible con el backend de TeX?

Siempre me he preguntado por qué SVG es un problema tan grande para muchas herramientas de creación de documentos. Por ejemplo, MS Office no puede hacerlo, Libre Office solo puede usar SVG muy simples, e incluso en Latex no podemos usarlos correctamente, pero deben convertirse, ya sea manualmente y luego usarse como gráficos de mapa de bits o automáticamente. herramientas externas como InkScape. Si bien me gusta InkScape, esto no me satisface.

Especialmente de Latex o TeX, hubiera esperado soporte para SVG, ya que tanta gente en el mundo académico lo usa directa o indirectamente y con tanta atención al detalle, que parece extraño tener que buscar una solución alternativa para incluir SVG. en una obra. Sería muy bueno tener un PDF con zoom ilimitado y líneas claramente definidas en un diagrama, por ejemplo, en lugar de una línea pixelada, porque el SVG se convirtió antes de usarse en el PDF.

Entonces, ¿por qué todavía no tenemos soporte para SVG en el backend de TeX? ¿Sería tan difícil de implementar?

No sé mucho sobre el backend de TeX, básicamente solo que existe y convierte tus cosas en un archivo PDF, por lo que esta pregunta puede ser ingenua. Por otro lado, hay soporte para SVG en todos los navegadores y en casi todos los programas de visualización de imágenes que existen, por lo que creo que debería ser posible tenerlo. ¿Tal vez se trata de que el formato PDF en sí no admite la inclusión de SVG, por lo que no tiene sentido cambiar el backend de TeX para permitir SVG, hasta que cambie el formato PDF?

Respuesta1

Clásicamente TeX no se ocupa decualquierformatos de gráficos, el archivo dvi solo contiene un puntero a un archivo de gráficos que el controlador dvi incluirá. TeX sólo necesita saber el espacio a dejar, que puede leer desde un comentario de BoundingBox o desde argumentos opcionales en \includegraphics.

(Generalmente) es mucho más fácil incluir un formato de gráficos si es el formato que está generando para el documento, ya que el controlador dvi no necesita "comprenderlos", simplemente copiarlos en la secuencia, por lo que, por ejemplo, dvipspuede incluir Archivos EPS tal como se copian literalmente en la salida, de manera similar, archivos jpg y ciertos formatos de mapas de bits que se pueden convertir de manera más o menos trivial a mapas de bits PostScript.

La situación con pdftex es similar excepto que no puede manejar archivos EPS pero puede manejar archivos PDF nuevamente porque es mucho más fácil manejar PDF si estás escribiendo PDF.

Para manejar EPS en pdftex necesita un programa externo de traducción de EPS a PDF, al que se puede llamar mediante shell-escape desde TeX, pero conceptualmente (y de hecho) es bastante independiente.

La situación con SVG es la misma. Si está produciendo svg (por ejemplo, controlador dvisvgm dvi), es más fácil incluir SVG que EPS o PDF; si, por otro lado, está produciendo PostScript o PDF, entonces necesita un programa de conversión, generalmente incscape, en el bucle. Nuevamente, esto puede ocultarse detrás de un escape de shell y llamarse desde TeX si es necesario. Sin embargo, debes convertir el SVG a un formato escalable (PDF o EPS), no a un mapa de bits, si el objetivo final es incluirlo en un documento PDF.

Respuesta2

Ponte en el lugar de alguien que esté escribiendo un compilador TeX.Existen multitud de programas para convertir imágenes a un formato u otro (inkscape, imagemagick's convert,...); Entonces, ¿por qué debería dedicar tiempo a admitir más de un formato, lo que esencialmente sería el mismo trabajo que reimplementar un conversor desde cero?

En particular, el formato SVG contieneTodo menos el fregadero: desde texto chino bidireccional en un trazado Bézier curvo representado en una fuente personalizada usando un patrón de color de fondo, hasta un texto en toda reglaIntérprete de JavaScript. Ah, el horror. No, gracias;Es mejor invertir su tiempo corrigiendo errores y mejorando las funcionalidades principales.

(Está bien, la mayoría de los convertidores no admiten el conjunto completo de funciones de SVG, estoy de acuerdo, pero el concepto se mantiene).

Entonces, en la práctica, solo admite un formato (o tal vez un formato de mapa de bits y un formato vectorial) y les dice a sus usuarios que utilicen una de las muchas herramientas externas disponibles para convertir gráficos en él. Afortunadamente, la mayoría de ellos son usuarios inteligentes de UNIX, por lo que conocen un Makefile o un script de compilación.

Si quieres ser un tipo excelente, puedes admitir la conversión automática de epsa pdf, pero ni siquiera eso es tu responsabilidad. O tal vez podrías tener una charla con ellatexmk mantenedor y pedirle que te presentedependencias personalizadas, por lo que esto puede automatizarse por su parte.

TL;DR:A los programadores no les gusta reinventar la rueda..

Respuesta3

La creación de gráficos SVG se admite a través dedvisvgmpaquete en la distribución TeXLive. Funciona convirtiendo archivos DVI (producidos por texy latexen lugar de pdftexy pdflatex).

información relacionada