GNU TeXmacs es un procesador de textos científico y un componente de composición tipográfica del Proyecto GNU . Se originó como una variante de GNU Emacs con funcionalidades TeX , aunque no comparte código con esos programas, al tiempo que utiliza fuentes TeX. [4] Está escrito y mantenido por Joris van der Hoeven y un grupo de desarrolladores. [5] El programa produce documentos estructurados con una interfaz de usuario WYSIWYG . El usuario puede crear nuevos estilos de documento. El editor proporciona algoritmos de composición tipográfica de alta calidad y fuentes TeX y otras para publicar documentos de aspecto profesional.
Como editor WYSIWYG estructurado y sistema de preparación de documentos, TeXmacs es similar a editores de documentos estructurados anteriores, como Interleaf (primer lanzamiento en 1985), Framemaker (1986), SoftQuad Author/Editor (1988), [6] Lilac, [7] Grif (1991), [8] y Thot; [9] también hubo investigaciones académicas sobre la edición interactiva de construcciones tipográficas complejas representadas de forma lógica. [10] [11]
En las décadas de 2000 y 2010, el interés en la edición interactiva de texto estructurado alentó el desarrollo de programas destinados a académicos en humanidades; un ejemplo de esto es CWRC-Writer, un editor XML visual con "edición casi WYSIWYG y enriquecimiento de textos académicos con representaciones visuales significativas de marcado". [12]
En otro lado del mundo de la edición y preparación de documentos, un programa de interacción visual con textos estructurados escritos en LaTeX es LyX , que no apunta a la edición WYSIWYG sino a la representación visual de la estructura ( WYSIWYM ).
Al igual que en muchos editores WYSIWYG (como Microsoft Word ), los autores manipulan un documento en pantalla que debería imprimirse en una copia en papel de aspecto similar. El objetivo de TeXmacs es proporcionar un editor WYSIWYG que, sin embargo, permita escribir documentos correctamente estructurados con resultados de composición tipográfica estéticamente agradables. A pesar de su nombre, TeXmacs no es una interfaz para TeX o LaTeX . [13] Sin embargo, los documentos de TeXmacs se pueden convertir a TeX o LaTeX. LaTeX también se puede importar (hasta cierto punto), y se proporciona tanto la importación como la exportación a HTML , Scheme, Verbatim y XML ; [14] la exportación HTML se puede estilizar con CSS (desde la versión 1.99.14). También hay un convertidor para MathML , y TeXmacs puede generar PDF y PostScript para imprimir. [15]
TeXmacs puede manejar fórmulas matemáticas , tablas, imágenes, referencias cruzadas y citas . Puede utilizarse como interfaz para varios sistemas de álgebra computacional como Maxima , FriCAS y SageMath , y puede a su vez integrar parte de sus resultados en su composición tipográfica. TeXmacs también admite un lenguaje de extensión de Scheme llamado Guile para personalizar el programa y escribir extensiones.
También incluye un modo de presentación y un pequeño editor de dibujos técnicos y existen planes para evolucionar hacia una suite de oficina científica completa con capacidades de hojas de cálculo . Una implementación de hojas de cálculo está presente a partir de la versión 1.99.12; las hojas de cálculo en TeXmacs pueden aprovechar complementos (por ejemplo, Python o Maxima) para calcular valores de celdas.
Actualmente, TeXmacs funciona en la mayoría de las arquitecturas basadas en Unix, incluidas Linux , FreeBSD , Cygwin , Haiku y macOS . Además de la versión Cygwin, hay disponible una versión nativa para Microsoft Windows .
En el editor TeXmacs, la estructura y la apariencia del documento se representan al mismo tiempo; [16] la estructura se hace evidente para el usuario mediante unidades lógicas circundantes del documento en marcos de enfoque anidados que llevan señales de color que se muestran de acuerdo con el movimiento del cursor. [17] Una descripción detallada de la estructura en la proximidad del cursor se proporciona en el pie de página de la ventana del editor, que se puede seleccionar con precisión presionando las flechas izquierda y derecha. [16] En el editor es posible cambiar entre el modo de texto y la edición en modo fuente, y existe soporte para la composición de macros; el editor fuente es consciente de la sintaxis . [18]
TeXmacs facilita la introducción de fórmulas matemáticas al asignar secuencias de pulsaciones del teclado a símbolos. Por ejemplo, el símbolo se puede introducir escribiendo .=>
Algunos símbolos no tienen esa representación ( por ejemplo). Estos se pueden ingresar con una tecla (por ejemplo, las pulsaciones de teclas son . Esta entrada basada en el teclado difiere de otros editores de fórmulas, que tienden a proporcionar menús de apuntar y hacer clic para esta tarea. [19]Tab ↹=>Tab ↹Tab ↹
Es posible utilizar TeXmacs como procesador por lotes (que es el modo de funcionamiento habitual de LaTeX ), utilizando el framebuffer virtual de X para evitar abrir ventanas no deseadas durante el procesamiento. Por ejemplo, el comando
$ xvfb-run texmacs --convert artículo.tm artículo.pdf --quit
genera un archivo PDF "article.pdf" a partir de un documento TeXmacs "article.tm".
Todos los documentos o fragmentos de documentos de TeXmacs pueden considerarse como árboles (el concepto de árbol también existe en el lenguaje de marcado SGML , al que el formato de Texmacs es similar). Por ejemplo, el árbol
representa la fórmula
(escrito aquí con el marcado TeX utilizado por Wikipedia) y es convertido por el propio motor de composición tipográfica de TeXmacs en una fórmula tipográfica, aquí insertada como una imagen:
Los árboles TeXmacs se representan en los archivos TeXmacs como cadenas y en el editor TeXmacs como la representación tipográfica del documento junto con su comportamiento interactivo. [20] En la representación en pantalla del árbol TeXmacs, el movimiento del cursor representa el movimiento dentro del árbol. En el disco, existen tres representaciones del formato TeXmacs: una representación nativa, una representación XML y una representación con expresiones Scheme S; la representación Scheme es útil para la interacción con los programas Scheme.
El proceso de composición tipográfica convierte los árboles TeXmacs en cajas. [21] La evaluación de los árboles TeXmacs se realiza mediante la reducción de los primitivos, es decir, mediante la evaluación de aplicaciones macro. Los primitivos de composición tipográfica están diseñados para ser muy rápidos y están integrados en el editor; la representación de muchos de los primitivos se puede personalizar a través de las variables de entorno integradas; el lenguaje de hojas de estilo permite a los usuarios escribir nuevos primitivos como macros sobre los primitivos integrados.
TeXmacs utiliza un algoritmo global para "saltos de línea" (similar al de TeX ) y además utiliza un algoritmo global para "saltos de página"; el algoritmo de salto de página tiene en cuenta objetos flotantes (figuras, tablas, notas al pie) y contenido de varias columnas.
Los documentos se pueden controlar mediante un sistema de macros nativo y mediante Guile-Scheme. Es posible personalizar los menús y las combinaciones de teclas del editor y actuar programáticamente sobre el árbol de documentos.
Las macros de TeXmacs proporcionan un medio de entrada estructurada (como en TeX/LaTeX) y se componen de forma inmediata, manteniendo al mismo tiempo los campos de entrada editables. Están escritas en código fuente, aunque el editor WYSIWYG puede ayudar en su composición mediante la traducción de estructuras visuales a su sintaxis. [22]
Scheme está integrado en TeXmacs a través de GNU Guile ; el editor en sí puede controlarse de esta manera: [21] los menús y las combinaciones de teclas pueden personalizarse. Los comandos de Scheme pueden invocarse de forma interactiva dentro de los documentos de TeXmacs, pueden invocarse desde la línea de comandos y desde dentro de las macros de TeXmacs. Los árboles de TeXmacs pueden pasarse a Scheme en diferentes formas: como "árboles pasivos" (convenientes para manipular el contenido directamente utilizando rutinas estándar de Scheme en listas), como "árboles activos" (mantienen un registro de la posición del árbol dentro del árbol global del documento y pueden usarse para modificar documentos mediante programación), y en una representación "híbrida".
Los objetos gráficos también forman parte del formato TeXmacs y pueden manipularse mediante programación desde Scheme. A continuación se muestra un ejemplo de gráficos TeXmacs generados en una sesión de Scheme TeXmacs junto con la sesión que generó la imagen. Las imágenes generadas mediante programación en una sesión de Scheme también pueden editarse mediante el editor de dibujo interno, ya que se insertan en el documento como un árbol; los scripts de Scheme también pueden ejecutarse mediante la extern
macro TeXmacs; en este caso, solo el material tipográfico está disponible en el documento y no es posible realizar ninguna edición directa (las modificaciones deben realizarse dentro del código de Scheme).
Esquema ] ( define pi ( acos -1 )) ;; Una función para definir un punto en el formato gráfico TeXmacs usando dos coordenadas Esquema ] ( define ( pt x y ) ' ( punto , ( número->cadena x ) , ( número->cadena y ))) ;; Puntos de ajuste Esquema ] ( definir xC ( - ( * 2 ( cos ( / pi 3 ))))) Esquema ] ( definir yC ( * 2 ( sen ( / pi 3 )))) Esquema ] ( definir pA ( pt -2 0 )) Esquema ] ( definir pB ( pt 2 0 )) Esquema ] ( definir pC ( pt xC yC )) Esquema ] ( definir tA ( pt -2,3 -0,5 )) Esquema ] ( definir tB ( pt 2,1 -0,5 )) Esquema ] ( definir tC ( pt ( - xC 0,2 ) ( + yC 0,2 ))) ;; Generar gráficos Esquema ] ( stree->tree ' ( con "gr-geometry" ( tupla "geometry" "400px" "300px" "center" ) ( gráficos ( con "color" "blue" ( text-at ( TeXmacs ) , ( pt -0.55 -0.75 ))) ( con "color" "black" ( arc , pA , pC ,pB )) ( con "color" "negro" ( línea , pA , pB )) ( con "color" "rojo" ( cline , pA , pB , pC )) ( con "color" "negro" ( texto en "A" , tA )) ( con "color" "negro" ( texto en "B" , tB )) ( con "color" "negro" ( texto en "C" , tC )))))
TeXmacs tiene back-ends que soportan muchas tecnologías.
La salida del complemento se puede integrar en documentos TeXmacs usando "interruptores ejecutables"; [23] de esta manera, uno puede alternar entre una entrada dada al sistema y la salida correspondiente, que se combina perfectamente en el documento.
Dado que TeXmacs no es una interfaz para LaTeX, se deduce que solo podemos asegurar conversiones correctas para un sublenguaje (bastante grande) de LaTeX.