¿Separación de estructura y estilo de contenido en LaTeX?

¿Separación de estructura y estilo de contenido en LaTeX?

En HTML, durante la última década, ha habido un fuerte impulso hacia la separación completa de la estructura y el estilo del contenido. La mayoría de los sitios web ahora se crean utilizando HTML para el marcado estructural y CSS para la presentación de ese marcado. Esto hace que sea realmente fácil aplicar diferentes estilos sobre el mismo contenido: si no eres consciente de lo poderoso que es esto, consulta, por ejemplo.http://www.csszengarden.com/. Hay un documento W3c que defiendeseparación del marcado semántico y de presentación.

Soy relativamente nuevo en LaTeX, pero llevo un tiempo diseñando sitios web. Sí, son campos diferentes, pero intentan hacer lo mismo: presentar bien el contenido. Mi experiencia con LaTeX durante los últimos 6 meses me deja con la sensación de que este concepto de separación de contenido y estilo no ha llegado muy lejos en el mundo TeX. Por ejemplo, definir las reglas de ajuste de una celda de una tabla en HTML+CSS es tan simple como agregar una clase a la celda y agregar una línea a su documento CSS. En LaTeX, debes haceralgo horrible como esto.

Entonces, ¿me estoy perdiendo algo o es LaTeX? ¿Se utiliza este concepto de separación de contenido y estilo en el diseño de LaTeX? ¿Está simplemente mal implementado? ¿Es probable que se implemente mejor en futuras versiones (¿LaTeX3? ¿ConTeXt?)?

Nota: No quiero ofender a los desarrolladores de LaTeX: el sistema es realmente bueno por muchas otras razones. Simplemente veo este enorme vacío y poca discusión al respecto, y me pregunto por qué.

Respuesta1

Historia

Knuth escribió TeX a finales de la década de 1970 porque quería componer material lo mejor que pudiera, dadas las limitaciones de su propio conocimiento y de la tecnología disponible en ese momento. En general, se acepta que hizo un trabajo bastante bueno, pero lo que ciertamente no intentaba hacer era separar estructura y estilo.

Lamport escribió LaTeX a mediados de los años 1980 cuando vio la necesidad de una separación más clara de las dos áreas. LaTeX fue revisado a principios de la década de 1990 y el núcleo actual data de 1994 (con correcciones de errores, por supuesto). Esto es anterior al modelo HTML + CSS por algún tiempo y, nuevamente, las limitaciones tecnológicas significaron que una mayor complicación de LaTeX hubiera sido imposible. (En 1994, LaTeX era casi demasiado grande para muchas PC y el equipo trabajó muy duro para reducirlo).

En el mundo HTML, se pueden agregar nuevas etiquetas que los renderizadores que no las conocen las ignorarán. Ese no es el caso de TeX: las secuencias de control desconocidas son errores. Así que no podemos simplemente agregar nuevos conceptos y esperar que los documentos existentes funcionen: esto esen realidadimportante. Así que las decisiones tomadas en 1994 todavía tienen importancia para LaTeX hoy.

ConTeXt es más nuevo y separa mucho más diseño que LaTeX "listo para usar". ConTeXt también adopta un enfoque de estabilidad diferente al de LaTeX, con una perspectiva de desarrollo más activa para el kernel. Sin embargo, el enfoque de ConTeXt se parece más al TeX simple que al LaTeX, en el sentido de que ConTeXt mantiene el diseño "más cerca del usuario" que LaTeX.

Entrada y salida

En el mundo HTML, un documento se lee por completo en la memoria para crear el DOM para su representación. TeX no funciona así, al menos a menos que lo programemos todo nosotros mismos. En cambio, TeX lee una línea y la procesa antes de pasar a la siguiente. (LuaTeX puede alterar esto, pero creo que incluso en ConTeXt sigue siendo cierto que el modelo TeX es el principal). Como tal, los enfoques necesarios para alterar la apariencia son muy diferentes.

Un aspecto clave a tener en cuenta al pensar en esta área es lo que la gente quiere como resultado. En el mundo TeX, nos centramos en la composición tipográfica de alta calidad. Como tal, casi siempre habrá algún ajuste manual del diseño para reflejar las realidades del contenido. Eso no es lo que sucede en HTML "bien escrito" y, aunque puede expresarse en XML, ciertamente rompe la estricta separación. Otros y yo diríamos que esto no es malo: se necesita intervención manual para obtener los mejores resultados.

Mesas

Las tablas se mencionan específicamente en la pregunta y creo que merecen consideración por sí solas. En HTML, las tablas se han utilizado para diversos fines. En TeX, existe un enfoque mucho más restringido para las tablas. Las tablas son bestias famosas y complejas en el mundo TeX, y Knuth señaló que es sorprendente que funcionen. En la mayoría de los documentos tipográficos, las tablas se utilizan principalmente para "tablas formales", y éstas tienen una gama bastante restringida de "buenas" apariencias. Como tal, hay menos necesidad de proporcionar toda la gama de controles tipo CSS.

Como dice canaaerus en su respuesta, el mundo TeX no lo administra un comité sino nadie, por lo que lo que se implementa depende de lo que quieran los usuarios individuales. Existe una variedad de paquetes de tablas para LaTeX, además del enfoque ConTeXt y raw \halignen TeX simple. Sin embargo, principalmente intentan resolver otros problemas, lo que indica cuál es la prioridad para los usuarios.

Mirando hacia el futuro

Como miembro del Proyecto LaTeX3, sé que ciertamente estamos discutiendo una mejor separación entre contenido y diseño. Una cuestión que vale la pena tener en cuenta aquí es que el modelo HTML + CSS no siempre se traduce bien en lo que queremos para la composición tipográfica. Hay algunas diferencias significativas entre las dos áreas y eso significa que nunca será tan sencillo.

Cualquier enfoque mejor tiene que funcionar con TeX, tanto en términos de código como de interfaz. Tenemoscódigo experimentalpara tratar la relación entre objetos ('l3ldb'), más la idea de'plantillas' para diseño, los cuales están en esta área.

Respuesta2

Aunque esta separación de contenido y marcado es una idea ciertamente no ajena a los desarrolladores y usuarios de TeX, existen algunas diferencias fundamentales entre cómo funcionan TeX y HTML, así como sus comunidades.

HTML está, en esencia, organizado de forma centralizada. Existe un comité (concretamente el W3C) que desarrolla los estándares web. Entonces todos los autores de documentos HTML deben escribir de acuerdo con estos estándares y los desarrolladores de intérpretes HTML (es decir, en su mayoría navegadores web) deben implementarlos.

Para TeX, por otro lado, las cosas suceden de manera muy diferente. No existen estándares definitivos. Seguramente la mayoría de las cosas se basan en el TeX original de Knuth. Pero se han añadido muchas cosas. Por ejemplo, ahora existen diferentes paquetes de macros, ConTeXt y LaTeX. Allí puede ver fácilmente cómo la sintaxis básica ya no está arreglada. Cualquiera podría decir que quiere usarlo /para macros en lugar de \como lo hace LaTeX. Además, gran parte de la funcionalidad que se utiliza hoy en día se agrega como paquetes. Hacen que TeX sea extremadamente extensible.

Esto nos lleva a la parte técnica de la diferencia. ¡TeX es Turing completo! En cambio, HTML es solo un lenguaje de marcado. En HTML especificas el contenido, la estructura y el estilo de tu documento, en TeX escribes un algoritmo de cómo construir tu documento.
Por supuesto, en los casos más simples, no es necesario utilizar construcciones de programación complicadas, por lo que un documento TeX no se parece a si fue escrito en un lenguaje de marcado. Pero yo diría que, en lo que respecta a este tipo de documentos, la separación de contenido y marcado se aplica muy bien en TeX.

Si mirasel ejemplousted dio, ese es exactamente el punto donde los documentos dejan de tener marcas.

Respuesta3

¿Se utiliza este concepto de separación de contenido y estilo en el diseño de LaTeX? ¿Está simplemente mal implementado?

Se usa y no necesariamentemalimplementado (ver las otras respuestas para una perspectiva histórica). Más bien, se implementa de manera bastantenivel bajo.

poderUtilice absolutamente una separación rigurosa de contenido y estilo en LaTeX (y de hecho, recomiendo encarecidamente hacer esto). Pero para hacer esto necesitas aprovechar la capacidad de LaTeX para definir macros.

El látex tiene unapocosmacros semánticas como \chaptery \emph(por supuesto, hay muchas más). Hay clases de documentos y paquetes que le brindan muchas más opciones. Por ejemplo, las clases de script KOMA proporcionan una gran cantidad de macros parapersonalizarla apariencia de las macros semánticas proporcionadas por LaTeX.

Pero en la práctica, la semántica que necesitas depende en gran medida del tipo de documento que estás escribiendo. Entonces, existen clases de documentos scrlttr2que proporcionan macros semánticas para la tarea específica de escribir una carta, pero esas son la excepción:En lugar de proporcionar una gran cantidad de macros semánticas altamente específicas de un dominio, LaTeX proporciona un lenguaje para crear macros específicas de un dominio..

En última instancia, su documento debe estar libre de macros de diseño físico y utilizar macros semánticas exclusivamente. \textbf? No, usa una macro que describapor quéquieres texto en negrita.

Debido a que son tan específicos de un dominio, la mayoría de las macros que necesitará probablemente las escribirá usted mismo. Es por eso que muchos paquetes de LaTeX le brindan las herramientas para que esto sea lo más fácil posible. Por ejemplo, existen paquetes para personalizar la visualización de figuras (o para crear tipos de figuras personalizados; consulte captiono float); Hay paquetes que facilitan la escritura de macros potentes ( etoolboxy la mayoría de LaTeX3). Y hay paquetes para muchos casos de uso especiales, como resaltar el código fuente.

Con ellos, en la mayoría de los casos es relativamente sencillo armar un conjunto simple de macros semánticas que se pueden usar en todo el documento. Aún así, las macrodefiniciones de mi tesis de maestría ocupan aproximadamente una sexta parte (en SLOC, comentarios eliminados) del documento completo.

Respuesta4

Ciertamente estoy de acuerdo en que la separación de estructura y estilo es una de las ventajas fundamentales de LaTeX y ConTeXt. Sin embargo, en la práctica es difícil evitar mezclarlos por completo. Resulta que sólo los documentos muy simples pueden tener estilo y contenido completamente separados. Un caso de la vida real de un libro, incluso de tamaño modesto, casi siempre requiere un ajuste fino de último momento, que efectivamente destruye su separación. Para mí, como editor, la solución más práctica para lograr una separación del 100% es mantener siempre el contenido en un archivo xml que define la estructura del documento y tener todas las instrucciones relacionadas con el estilo en un archivo ConTeXt. ConTeXt resulta ser un procesador xml muy práctico. Por supuesto, puedes crear fácilmente un archivo LaTeX usando XSLT a partir de tu xml y usar LaTeX si lo prefieres. En este caso deberías poner todas las instrucciones relacionadas con el estilo en tu archivo xsl.

información relacionada