ConTeXt

ConTeXt es un segundo sistema completo de preparación de documentos construido sobre TeX. Pertenece a la misma familia que LaTeX (ambos son “formatos”), pero su filosofía de diseño es bastante diferente: una familia consistente de comandos \setup... brinda un control preciso sobre la apariencia y el dibujo de MetaPost está profundamente integrado. Es una alternativa a LaTeX, favorecida especialmente para diseños elaborados y composición tipográfica automatizada.

¿Qué es ConTeXt?

Los pdfTeX, XeTeX y LuaTeX que hemos visto hasta ahora son motores: los programas que realizan el procesamiento. ConTeXt se encuentra en una capa diferente: al igual que LaTeX, es un formato, un sistema de comandos ensamblados a partir de macros TeX. Ha sido desarrollado desde la década de 1990 por Hans Hagen de los Países Bajos y su empresa PRAGMA ADE (Advanced Document Engineering), originalmente como una herramienta de producción para su propio trabajo editorial. El nombre proviene de “texto con TeX” – con-text-t.

Su lugar es un poco confuso: aunque ConTeXt no es un “motor” en el sentido pdfTeX/XeTeX, el material introductorio a menudo lo incluye junto con los motores y formatos. Es más exacto pensar en él como un hermano de LaTeX que se ejecuta sobre un motor. Construido sobre la misma base TeX, ofrece una forma diferente de escribir documentos.

En qué se diferencia de LaTeX

Mientras que LaTeX es una cultura de agrupar funciones de una amplia colección de paquetes de terceros, ConTeXt es altamente integrado y monolítico. Color, diseño, fuentes, índices, notas a pie de página: todo está diseñado en conjunto desde el principio. Por lo tanto, pasa menos tiempo preguntándose "¿qué paquete agrego para esto y si chocará con otro?", y los diseños de página complejos son más fáciles de controlar de manera limpia. Esa integración es su fortaleza central.

La interfaz también es consistente. Casi toda la apariencia se especifica mediante comandos de configuración que comienzan con \setup..., combinados con opciones clave=valor. El tamaño de fuente del cuerpo es \setupbodyfont, el tamaño del papel es \setuppapersize, el espaciado entre párrafos es \setupwhitespace, etc., la denominación y la sintaxis son muy regulares. Hay poca “gramática” ad hoc que memorizar y la configuración sigue siendo legible.

El marcado en sí también difiere de LaTeX. El cuerpo, \begin{document}…\end{document} de LaTeX, está envuelto en \starttext … \stoptext, y una sección es \startsection … \stopsection (o simplemente \section solo para el título). Los entornos se expresan con pares \start…/\stop… coincidentes, que es el modismo ConTeXt.

El material de aprendizaje también se reúne de forma diferente. El conocimiento de LaTeX está disperso en innumerables libros, sitios de preguntas y respuestas y manuales de paquetes en todo el mundo, mientras que la documentación de ConTeXt está comparativamente centralizada: la wiki oficial de ConTeXt (contextgarden) y manuales como *ConTeXt: una excursión*. La comunidad se reúne de la misma manera: una Reunión anual ConTeXt reúne a desarrolladores y usuarios cara a cara, y las discusiones sobre diseño e implementación tienden a fluir de regreso al material oficial.

El linaje MkII / MkIV / LMTX

ConTeXt viene en tres líneas principales, cada una adaptada a una generación del motor subyacente. Todos ellos son “ConTeXt”, pero funcionan con diferentes motores con diferentes componentes internos.

  • MkII: la línea más antigua, que se ejecuta en pdfTeX (y en XeTeX para scripts como el japonés). Ahora está congelado y sólo se mantiene.
  • MkIV: la reescritura de la era Lua que se ejecuta en LuaTeX. Introducido en 2007, explota las fuentes Unicode, OpenType y las secuencias de comandos Lua. También está en gran parte congelada.
  • LMTX (internamente MkXL): la línea actual recomendada, que se ejecuta en LuaMetaTeX. Disponible desde 2019, es donde continúa el desarrollo activo.

La pieza clave aquí es LuaMetaTeX. Es un motor optimizado que Hans Hagen y los desarrolladores de ConTeXt reconstruyeron específicamente para ConTeXt, como sucesor de LuaTeX. Deliberadamente elimina la salida de PDF (el backend), el manejo de fuentes y muchas primitivas de LuaTeX, dejando que se implementen en el lado de ConTeXt (Lua): un diseño audaz. No depende de bibliotecas externas, no necesita un ecosistema de compilación complejo y se adapta a distintos sistemas operativos con un esfuerzo mínimo: un sucesor autónomo y simplificado.

LuaMetaTeX es mantenido por el propio grupo ConTeXt, y por ahora ConTeXt (LMTX) es efectivamente lo único que le da un uso real. Si está comenzando desde cero con ConTeXt, LMTX es la opción estándar.

Integración profunda de MetaPost

Ninguna cuenta de ConTeXt está completa sin su fusión con MetaPost. MetaPost es un lenguaje de programación para cifras precisas, descendiente del METAFONT de Knuth. ConTeXt incorpora MPlib en su núcleo (MetaPost se convirtió en una biblioteca reutilizable, separada por Taco Hoekwater y Hans Hagen en 2007), por lo que puedes escribir código MetaPost directamente dentro de un documento y dibujar figuras sobre la marcha, durante la misma compilación.

En el MkII más antiguo, dibujar figuras en tiempo de ejecución ralentizaba la ejecución de TeX o requería generar archivos PostScript intermedios entre ejecuciones. MPlib hizo esto posible directamente en tiempo de ejecución, dando lugar a una cultura de dibujo claramente ConTeXt en la que incluso los elementos de la página (reglas, fondos, adornos) se generan dinámicamente con MetaPost.

Un ejemplo mínimo

Para tener una idea, aquí está el documento ConTeXt más pequeño que se compila. El cuerpo va de \starttext a \stoptext. No existe una declaración obligatoria de clase de documento como en \documentclass de LaTeX; configura cualquier apariencia que necesite en la parte superior con los comandos \setup....

latex
\setuppapersize[A4]
\setupbodyfont[12pt]

\starttext
\startsection[title=はじめに]
  Hello, \ConTeXt! 数式もそのまま組めます:
  \startformula
    E = mc^2
  \stopformula
\stopsection
\stoptext

Aquí \setuppapersize selecciona A4, \setupbodyfont establece un cuerpo de 12 puntos y \startsection abre una sección titulada "Introducción". Una ecuación mostrada va en \startformula … \stopformula. Los roles coinciden con \section{…} y \[ … \] de LaTeX, pero puedes ver que el estilo de escritura sigue el modismo \start…/\stop….

terminal
# ConTeXt は context コマンドで処理する / compile with the context command
context first-context.tex
# => first-context.pdf

El punto importante es que no ejecute pdflatex o lualatex aquí. ConTeXt no es el formato LaTeX, aunque el archivo aún puede terminar en .tex; entréguelo al comando context. Coloque "compilar este documento con context main.tex" en README para que los colaboradores y CI no utilicen accidentalmente un comando LaTeX.

LaTeX y ConTeXt uno al lado del otro

Para aquellos acostumbrados a LaTeX, aquí hay algunos modismos representativos uno al lado del otro. El pensamiento es similar, pero el vocabulario y las convenciones difieren.

LaTeXConTeXtObjetivo
\begin{document}\starttextcomenzar el cuerpo
\section{…}\section{…} / \startsectionUn encabezado de sección
\[ … \]\startformula … \stopformulaUna ecuación mostrada
geometry など\setuppapersize y otros \setup...Papel y diseño

Cuando elegirlo

  • Diseños elaborados o automatizados. Los diseños de páginas complejos o la composición tipográfica generada en masa a partir de datos se benefician de su control constante.
  • Presentaciones. Tiene modos de diapositivas dedicados y MetaPost puede crear ornamentación dinámica.
  • Publicación desde XML. ConTeXt tiene una sólida función de procesamiento XML y es bueno en flujos de trabajo que leen y escriben XML directamente.
  • Incrustar dibujos. Con MetaPost integrado, las figuras y el texto pueden vivir en una sola fuente.

Sin embargo, hay salvedades. La comunidad es mucho más pequeña que la de LaTeX y hay menos paquetes de terceros. Las plantillas de revistas, los tutoriales y las preguntas y respuestas acumuladas son más limitados que en LaTeX. Entonces, en la práctica la mayoría de los usuarios académicos todavía eligen LaTeX para artículos y tesis. Piense en ConTeXt como una opción especializada que se adapta perfectamente a su tipo de trabajo.

como conseguirlo

ConTeXt se entrega con la distribución estándar TeX Live, y el motor LuaMetaTeX se incluye desde TeX Live 2023, por lo que una instalación normal de TeX Live también le brinda LMTX (el TeX Live actual es la edición 2026). Si, en cambio, desea realizar un seguimiento del último ConTeXt, la ruta habitual es el ConTeXt independiente del grupo (ahora distribuido como LMTX): un paquete liviano exclusivo de ConTeXt que se actualiza con frecuencia.

Comenzando un primer capítulo en ConTeXt

Cuando pruebe ConTeXt, deje de lado el hábito LaTeX de buscar un paquete más. Primero cree el cuerpo con \starttext, \startsection y \startitemize, luego recopile los márgenes, las fuentes y la apariencia del encabezado en los comandos \setup... en la parte superior. Agregue estilo a medida que crece el capítulo; la configuración permanece fuera de la prosa y cambiar el diseño de la página más tarde significa buscar en un solo lugar.

  • Los envíos de revistas deben permanecer con LaTeX cuando la plantilla requerida es LaTeX.
  • Los folletos, el material didáctico y los catálogos en los que usted es propietario del diseño de la página se benefician del modelo de configuración integrado de ConTeXt.
  • Las cifras en la misma fuente que la prosa son una buena razón para probar la integración MetaPost temprano.