GNU Texmacs

un editor di testo libero

GNU TeXmacs è un editor di testo WYSIWYG e allo stesso tempo un sistema di tipografia digitale destinato particolarmente a scopi di tipo scientifico come la scrittura di libri, articoli e presentazioni. È ispirato a TeX e Emacs, ma sviluppato in maniera completamente indipendente da questi programmi. L'ideatore e sviluppatore principale è Joris van der Hoeven, coadiuvato da un gruppo di collaboratori.[1] Il programma genera documenti strutturati mediante un'interfaccia utente WYSIWYG. Gli utenti possono creare nuovi stili per i documenti; l'editor rende disponibili algoritmi di alta qualità per la tipografia permettendo di ottenere documenti dall'aspetto professionale.

GNU Texmacs
software
Logo
Logo
Schermata di esempio
Schermata di esempio
GenereEditor di testo
SviluppatoreJoris van der Hoeven e altri
Ultima versione2.1.4 (11 marzo 2024)
Sistema operativoGNU
LinguaggioC++
Scheme
LicenzaGNU GPL v3+
(licenza libera)
Sito webwww.texmacs.org

Editing interattivo di documenti strutturati (anni 1980-2020) modifica

TeXmacs è l'erede moderno di programmi quali Interleaf (pubblicato nel 1985), Framemaker (1986), SoftQuad Author/Editor,[2] Lilac[3], Grif e Thot[4], sviluppati negli anni 1980 e 1990 con l'obiettivo di rendere possibile l'editing interattivo di documenti strutturati. In questi stessi anni, l'interesse nei sistemi per l'editing interattivo di costrutti tipografici complessi rappresentati con delle strutture logiche si era espresso, per esempio, nell'editor di equazioni presentato nella tesi di dottorato di Clement Shin Tai-Yin[5] e nell'editor grafico implementato nella tesi di dottorato di Paul Asente[6] (in questo lavoro la grafica è generata con Dum, un linguaggio procedurale, che può essere controllato attraverso un editor che agisce direttamente sulla grafica, Dee).

Negli anni 2000 e 2010, l'interesse per l'editing interattivo di documenti strutturati ha stimolato lo sviluppo di programmi rivolti agli studiosi di discipline umanistiche; un esempio di tali programmi è il "CWRC-Writer", un editor visuale XML con "Close-to-WYSIWYG editing and enrichment of scholarly texts with meaningful visual representations of markup"[7] ("Editing quasi-WYSIWYG e arricchimento di testi accademici con rappresentazioni visive del markup espressive").

In un'altra regione del mondo dell'editing e della preparazione di documenti, un programma per l'interazione visuale con testi strutturati scritti in LaTeX è LyX, che non mira all'editing WYSIWYG ma piuttosto alla rappresentazione visiva della struttura (WYSIWYM).

Caratteristiche modifica

Come in molti editor WYSIWYG (per esempio Microsoft Word), gli utenti manipolano sullo schermo un documento dalla disposizione grafica simile a quella che il documento avrà una volta stampato. L'obiettivo di TeXmacs è fornire un editor WYSIWYG che renda possibile scrivere testi scientifici in maniera strutturata. TeXmacs non è un front-end per LaTeX ma i documenti TeXmacs possono essere convertiti in formato LaTeX; è anche possibile importare documenti LaTeX (l'importazione è limitata a un insieme di comandi). Inoltre ci sono filtri per l'importazione da ed esportazione verso i formati HTML, Scheme, "Verbatim", e XML. È disponibile la conversione nel formato MathML, e nei formati PDF e PostScript per ottenere versioni stampabili del documento.

TeXmacs permette la scrittura di formule matematiche in maniera efficiente, supporta tabelle, immagini, riferimenti interni e bibliografici e può interfacciarsi con diversi programmi con un'interattività simile a una shell (Maxima, mupad, python, scypy, Mathematica, Bash). È distribuito con la licenza GNU GPL v3. TeXmacs supporta il linguaggio di estensione Guile permettendo così di estendere la funzionalità del programma.

 
Uno screenshot con formule matematiche e caratteri corsivi. Una cornice di focus circonda l'ambiente più interno (una formula) nel quale si trova il cursore, mentre un'altra cornice, di aspetto non invadente, denota un altro tag attivo (l'ambiente teorema che circonda la formua)

Fra gli stili di TeXmacs è incluso uno stile per presentazioni; il programma comprende inoltre un piccolo editor grafico. A partire dalla versione 1.99.12 è possibile inserire dei fogli di calcolo che possono sfruttare alcuni dei plugin (ad esempio Python o Maxima) per le loro operazioni.

Attualmente ci sono eseguibili TeXmacs per la maggior parte delle architetture basate su Unix fra le quali Linux, FreeBSD, Cygwin e macOS. Al fianco della versione Cygwin è presente un port nativo per Microsoft Windows.

L'editor di TeXmacs modifica

Nell'editor di TeXmacs sono rappresentati sia la struttura sia l'aspetto del documento;[8] la struttura viene evidenziata con delle cornici di "focus" grigie o ciano che racchiudono le suddivisioni logiche del documento e vengono mostrate o nascoste a seconda della posizione del cursore, che è finemente controllabile[9]. Nell'editor sono presenti il modo "testo" (WYSIWYG e cornici di struttura) e il modo "sorgente"; alcuni comandi supportano la composizione delle macro.

Inserimento delle formule matematiche modifica

L'input di formule matematiche in TeXmacs è reso snello dalla possibilità di inserire simboli usando combinazioni di tasti. Per esempio, il simbolo   può essere inserito con la sequenza di tasti =>.

Simboli che non sono rappresentati con sequenze di tasti (per esempio  ) sono suddivisi in gruppi; ogni gruppo è assegnato a un tasto e gli elementi del gruppo sono successivamente raggiungibili tramite la pressione ripetuta del tasto tab (per esempio la sequenza di tasti che permette di ottenere   è => tab tab).

Il formato di TeXmacs modifica

Tutti i documenti di TeXmacs (e ogni loro parte) possono essere visti come alberi. Per esempio, l'albero

 

rappresenta la formula

 

(qui scritta con il markup TeX usato da Wikipedia) ed è resa da TeXmacs col suo proprio sistema di typesetting come rappresentato dalla seguente immagine:

 

Gli alberi di TeXmacs sono rappresentati su disco come stringhe, e nell'editor di TeXmacs come la rappresentazione tipografica del documento combinata con la sua interattività.[10] Nella rappresentazione su schermo degli alberi di TeXmacs, il movimento del cursore coincide con il movimento all'interno dell'albero.

Composizione tipografica e controllo del documento modifica

Il processo di composizione tipografica converte gli alberi di TeXmacs in "scatole".[11] La trasformazione degli alberi in scatole avviene attraverso riduzione di primitive, o in altre parole a ogni macro viene sostituito il suo risultato. Le primitive per la composizione tipografica sono state progettate in modo tale da essere molto veloci e sono integrate nell'editor; il rendering di molte delle primitive può essere modificato attraverso le variabili d'ambiente integrate nell'editor stesso; i fogli di stile supportano un linguaggio con il quale gli utenti possono aggiungere nuove primitive nella forma di macro.

Controllo dei documenti modifica

I documenti possono essere controllati con un sistema di macro nativo o usando Guile-Scheme. È possibile personalizzare i menu dell'editor e le scorciatoie da tastiera e manipolare programmaticamente gli alberi di TeXmacs.

Le macro di TeXmacs modifica

Le macro di TeXmacs sono un modo di effettuare l'input strutturato (come in TeX/LaTeX) e sono rese tipograficamente in tempo reale, mantenendo allo stesso tempo campi di input editabili.

Controllo dei documenti tramite Scheme modifica

Scheme è integrato in TeXmacs attraverso Guile. L'editor stesso può essere controllato in questo modo, personalizzando i menu e le scorciatoie da tastiera.[11] I comandi di Scheme possono essere invocati interattivamente dai documenti di TeXmacs, possono essere invocati dalla linea di comando e all'interno delle macro. Gli alberi di TeXmacs sono passati a Scheme in varie forme: come "alberi passivi" (una buona rappresentazione per la manipolazione del contenuto attraverso l'azione di routine di Scheme su liste), "alberi attivi" (che contengono l'informazione sulla posizione dell'albero all'interno dell'albero globale del documento e possono essere usati per la modifica programmatica dei documenti) e in una rappresentazione "ibrida".

Grafica modifica

Gli oggetti grafici sono parte del formato di TeXmacs e possono essere manipolati programmaticamente attraverso Scheme. Gli oggetti grafici generati tramite una sessione Scheme sono accessibili e modificabili anche dall'editor grafico, perché vengono inseriti nel documento come alberi; se invece i programmi scritti in Scheme sono eseguiti attraverso la macro di TeXmacs extern, solo il materiale già composto tipograficamente appare nel documento, e ulteriori modifiche possono essere fatte solo nel codice Scheme. Un esempio di grafica generata in una sessione di Scheme in TeXmacs è mostrato qui di seguito, assieme con il codice usato per generarla. È anche possibile nascondere il codice usato per generare la grafica che quindi appare integrata nel documento senza soluzione di continuità (vedi sezione Embedding dell'output dei plugin).

Scheme]  (define pi (acos -1))
;; A function to define a point in the TeXmacs graphics format using two coordinates
Scheme]  (define (pt x y)
  (point ,(number->string x) ,(number->string y)))
;; Set points
Scheme]  (define xC (- (* 2 (cos (/ pi 3)))))
Scheme]  (define yC (* 2 (sin (/ pi 3))))
Scheme]  (define pA (pt -2 0))
Scheme]  (define pB (pt 2 0))
Scheme]  (define pC (pt xC yC))
Scheme]  (define tA (pt -2.3 -0.5))
Scheme]  (define tB (pt 2.1 -0.5))
Scheme]  (define tC (pt (- xC 0.2) (+ yC 0.2)))
;; Generate graphics
Scheme]  (stree->tree
 (with "gr-geometry" (tuple "geometry" "400px" "300px" "center")
    (graphics
      (with "color" "blue"  (text-at (TeXmacs) ,(pt -0.55 -0.75)))
      (with "color" "black" (arc ,pA ,pC ,pB))
      (with "color" "black" (line ,pA ,pB))
      (with "color" "red"   (cline ,pA ,pB ,pC))
      (with "color" "black" (text-at "A" ,tA))
      (with "color" "black" (text-at "B" ,tB))
      (with "color" "black" (text-at "C" ,tC)))))

 

Back-end supportati modifica

 
Una sessione di Maxima in TeXmacs

TeXmacs supporta molti back-end:

Linguaggi di programmazione: CLISP, CMUCL, Python, R, Shell

Sistemi di calcolo simbolico: Axiom, Giac, Macaulay 2, Mathematica, Maxima, MuPAD, PARI/GP, Reduce, SageMath, Yacas

Sistemi di calcolo numerico: GNU Octave, Matlab, Scilab

Programmi per la rappresentazione grafica delle funzioni: Gnuplot, Graphviz, XYpic, Mathemagix

Altri: DraTeX, Eukleides, GTybalt, Lush, Juris-M or Zotero (programmi per la ricerca di referenze e la gestione delle bibliografie).

Embedding dell'output dei plugin modifica

L'output dei plugin può essere incorporato in documenti TeXmacs usando i cosiddetti "executable switches";[12] in questo modo è possibile passare in entrambe le direzioni da un dato input all'output corrispondente, facendo sì che l'output sia incorporato nel documento senza soluzione di continuità (in particolare il prompt del plugin non è presente) rimanendo però modificabile.

Note modifica

  1. ^ Authors of GNU TeXmacs, su texmacs.org.
  2. ^ Susan Brown, Remediating the Editor, in Interdisciplinary Science Reviews, vol. 40, n. 1, 1º marzo 2015, pp. 78–94, DOI:10.1179/0308018814Z.000000000106. URL consultato il 27 novembre 2020.
  3. ^ K.P. Brooks, Lilac: a two-view document editor, in Computer, vol. 24, n. 6, 1991-06, pp. 7–19, DOI:10.1109/2.86832. URL consultato il 26 novembre 2020.
  4. ^ Thot structured editor, su opera.inrialpes.fr. URL consultato il 26 novembre 2020.
  5. ^ "A structured document model", Clement Shin Tai-Yin, PhD Thesis, Department of Computing, Imperial College London, 1989
  6. ^ "Editing Graphical Objects Using Procedural Representations", Paul Asente, PhD Thesis, Department of Computer Science, Stanford University (1987)
  7. ^ CWRC-Writer: An In-Browser XML Editor Archiviato il 4 novembre 2015 in Internet Archive., G. Rockwell et al., Digital Humanities 2012 Conference
  8. ^ Joris van der Hoeven, GNU TeXmacs: A free, structured, wysiwyg and technical text editor (PDF), in Cahiers GUTenberg, vol. 39-40, 2001, p. 39.
  9. ^ The TeXmacs manual. 2.2, Typing structured text (PDF), su texmacs.org.
  10. ^ Joris van der Hoeven, The TeXmacs format, su texmacs.org. URL consultato il 10 agosto 2019.
  11. ^ a b M. Gubinelli, The Guile in TeXmacs, presentation at the Guile and Guix Days in Strasbourg, June 21–22 2019 (pdf) Retrieved 2019-09-22
  12. ^ TeXmacs user manual, section "Traversal of a presentation" (PDF), su texmacs.org. URL consultato il 10 novembre 2020.

Altri progetti modifica

Collegamenti esterni modifica