Edición interactiva en LaTeX: recompilar párrafos en 1 ms

Fuentes: Real-Time LuaTeX: Recompiling Large Documents in 1 ms

Un artículo técnico de Clemens Lode, publicado en TUGboat, demuestra que la salida tipográfica pixel-perfect de LaTeX y la edición en tiempo real no son incompatibles. La clave está en explotar una propiedad estructural del algoritmo de partición de líneas de Knuth–Plass: el corte de líneas es local al párrafo, mientras que la partición de páginas es global pero no perceptiblemente inmediata, por lo que no tiene por qué bloquear el ciclo de edición.

El sistema, bautizado como texlode, mantiene viva una instancia de LuaTeX, le envía párrafos individuales y extrae listas de presentación directamente de las estructuras de nodos del motor, sin pasar por la generación de PDF. Funciona sobre TeX Live estándar, sin modificar el motor, y mantiene compatibilidad total con microtype. En un portátil de gama media (Intel Core i7-1355U, TeX Live 2025), la recompilación de un párrafo medio se completa en torno a 0,70 ms; un párrafo largo supera por poco los 2 ms; los párrafos cortos rondan 0,17 ms. El coste depende sobre todo de la longitud, no de la complejidad del contenido.

Los benchmarks en 500 párrafos consecutivos muestran una latencia O(1): el tiempo de compilación por párrafo no crece con el tamaño del documento. Es el mismo patrón que utilizan desde hace décadas procesadores como Word, InDesign o Google Docs, que recompilan únicamente el párrafo editado y difieren la reorganización de páginas a un proceso en segundo plano. En comparación, la compilación incremental de Typst escala linealmente con el tamaño del documento.

La propuesta se inspira en una década de servicios editoriales con LaTeX del propio autor, donde libros largos con tipografías complejas suelen agotar los tiempos de compilación de plataformas como Overleaf. texlode se ofrece como una herramienta de autor en el navegador cuya salida es idéntica a la de lualatex estándar. El artículo también revisa alternativas previas, como TeXpresso (basada en snapshots con fork, limitada a Linux y macOS), SwiftLaTeX y BusyTeX (WebAssembly) o el rediseño desde cero de Typst, y señala que todas comparten el mismo supuesto equivocado: tratar el documento completo como unidad de compilación.

La limitación principal es la inconsistencia temporal: las páginas que el usuario no está viendo pueden quedar atrasadas hasta que un proceso en segundo plano las recompila. Además, ciertos elementos acoplan un párrafo a la página (notas al pie, referencias con \ref, \thepage o \parshape), lo que obliga a recurrir a la compilación completa en esos casos.