GNU TeXmacs es un procesador de textos científico y un componente tipográfico del Proyecto GNU . Se originó como una variante de GNU Emacs con funcionalidades TeX , aunque no comparte código con esos programas, aunque usa 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 TeX y otras fuentes para publicar documentos de aspecto profesional.
Como editor estructurado WYSIWYG y sistema de preparación de documentos, TeXmacs es similar a editores de documentos estructurados anteriores, como Interleaf (primera versión 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 por la edición interactiva de textos estructurados alentó el desarrollo de programas destinados a académicos de humanidades; un ejemplo de esto es CWRC-Writer, un editor visual XML con "edición y enriquecimiento cercano a WYSIWYG 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 para la 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 ).
Como en muchos editores WYSIWYG (como Microsoft Word ), los autores manipulan un documento en la pantalla que debería imprimirse en una copia en papel de aspecto similar. El objetivo de TeXmacs es proporcionar un editor WYSIWYG que, no obstante, permita escribir documentos correctamente estructurados con resultados tipográficos estéticamente agradables. TeXmacs no es una interfaz para LaTeX [13] pero los documentos 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 diseñar 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 informática como Maxima , FriCAS y SageMath y, a su vez, puede integrar parte de su salida en su composición tipográfica. TeXmacs también admite un lenguaje de extensión Scheme llamado Guile para personalizar el programa y escribir extensiones.
También cuenta con un modo de presentación y un pequeño editor de dibujos técnicos y hay planes de evolucionar hacia una completa suite de oficina científica con capacidades de hoja de cálculo . Está presente una implementación de hojas de cálculo a partir de la versión 1.99.12; Las hojas de cálculo en TeXmacs pueden aprovechar los complementos (por ejemplo, Python o Maxima) para calcular los valores de las celdas.
TeXmacs actualmente se ejecuta en la mayoría de las arquitecturas basadas en Unix, incluidas Linux , FreeBSD , Cygwin , Haiku y macOS . Junto con la versión Cygwin, hay disponible un puerto nativo 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 al rodear las unidades lógicas del documento en marcos de enfoque anidados que llevan señales de color que se muestran de acuerdo con el movimiento del cursor. [17] Se proporciona una descripción detallada de la estructura en la proximidad del cursor en el pie de página de la ventana del editor, que se puede seleccionar con precisión presionando las flechas de izquierda a derecha. [16] En el editor es posible cambiar entre el modo de texto y el modo de edición de fuente, y está presente el soporte para la composición de macros; el editor de código fuente reconoce la sintaxis . [18]
TeXmacs facilita la introducción de fórmulas matemáticas asignando secuencias de pulsaciones del teclado a símbolos. Por ejemplo, el símbolo se puede ingresar escribiendo .=>
Algunos símbolos no tienen tal representación ( por ejemplo). Estos se pueden ingresar con teclas (por ejemplo, para las pulsaciones de teclas) . Esta entrada basada en 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 X para evitar abrir ventanas no deseadas durante el procesamiento. Por ejemplo, el comando
$ xvfb-run texmacs --convertir artículo.tm artículo.pdf --salir
genera un archivo PDF "article.pdf" a partir de un documento TeXmacs "article.tm".
Todos los documentos TeXmacs o fragmentos de documentos pueden considerarse árboles (el concepto de árbol también existe en el lenguaje de marcado SGML , al que el formato Texmacs es similar). Por ejemplo, el árbol
representa la fórmula
(escrito aquí con el marcado TeX utilizado por Wikipedia) y el propio motor de composición tipográfica de TeXmacs lo convierte en una fórmula tipográfica, aquí insertada como una imagen:
Los árboles TeXmacs se representan en 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 de Scheme es útil para la interfaz con los programas de 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 las primitivas, es decir, mediante la evaluación de aplicaciones macro. Las primitivas de composición tipográfica están diseñadas para ser muy rápidas y están integradas en el editor; la representación de muchas de las primitivas se puede personalizar mediante las variables de entorno integradas; El lenguaje de hojas de estilo permite a los usuarios escribir nuevas primitivas como macros encima de las primitivas integradas.
TeXmacs utiliza un algoritmo global para "salto de línea" (similar al de TeX ) y además utiliza un algoritmo global para "salto de página"; el algoritmo de salto de página tiene en cuenta los objetos flotantes (figuras, tablas, notas a pie de página) y el contenido de varias columnas.
Los documentos se pueden controlar a través de un sistema de macros nativo y mediante Guile-Scheme. Es posible personalizar los menús y combinaciones de teclas del editor y actuar mediante programación en el árbol de documentos.
Las macros de TeXmacs proporcionan un medio de entrada estructurada (como en TeX/LaTeX) y se componen inmediatamente, al mismo tiempo que mantienen campos de entrada editables. Están escritos 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í se puede controlar de esta manera: [21] los menús y las combinaciones de teclas se pueden personalizar. Los comandos de esquema se pueden invocar de forma interactiva dentro de documentos TeXmacs, se pueden invocar desde la línea de comandos y desde dentro de las macros de TeXmacs. Los árboles TeXmacs se pueden pasar a Scheme de diferentes formas: como "árboles pasivos" (convenientes para manipular contenido directamente usando rutinas estándar de Scheme en listas), como "árboles activos" (realizan un seguimiento de la posición del árbol dentro del árbol de documentos global y se puede utilizar 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 se pueden manipular mediante programación desde Scheme. A continuación se muestra un ejemplo de gráficos TeXmacs generados en una sesión de TeXmacs Scheme junto con la sesión que generó la imagen. Las imágenes generadas mediante programación en una sesión de Scheme también se pueden editar usando el editor de dibujos interno, ya que se insertan en el documento como un árbol; Los scripts de Scheme también se pueden ejecutar a través de la extern
macro TeXmacs; en este caso, solo el material tipográfico está disponible en el documento y no es posible la edición directa (las modificaciones deben realizarse dentro del código de Scheme).
Esquema ] ( definir pi ( acos -1 )) ;; Una función para definir un punto en el formato de gráficos TeXmacs usando dos coordenadas Esquema ] ( define ( pt x y ) ' ( punto , ( número->cadena x ) , ( número->cadena y ))) ;; Puntos de ajuste Esquema ] ( defina xC ( - ( * 2 ( cos ( / pi 3 ))))) Esquema ] ( defina yC ( * 2 ( sin ( / pi 3 )))) Esquema ] ( defina pA ( pt -2 0 )) Esquema ] ( define pB ( pt 2 0 )) Esquema ] ( define pC ( pt xC yC )) Esquema ] ( define tA ( pt -2.3 -0.5 )) Esquema ] ( define tB ( pt 2.1 -0.5 )) Esquema ] ( defina tC ( pt ( - xC 0.2 ) ( + yC 0.2 ))) ;; Generar esquema de gráficos ] ( 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" "negro" ( arco , pA , pC ,pB )) ( con "color" "negro" ( línea , pA , pB )) ( con "color" "rojo" ( clina , 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 servidores que admiten muchas tecnologías.
La salida del complemento se puede incrustar en documentos TeXmacs mediante "conmutadores ejecutables"; [23] de esta manera se puede alternar entre una entrada determinada al sistema y la salida correspondiente, que se combina perfectamente en el documento.
Dado que TeXmacs no es una interfaz de LaTeX, se deduce que solo podemos garantizar conversiones correctas para un sublenguaje (bastante grande) de LaTeX.