Mi è gia passata la voglia… 😀
Ma permettimi un piccolo sfogo da dove nasce l’esigenza di avere strumenti così complicati per lavorare 😕
Il mio punto di vista, che ho espresso più volte e che continuo a ritenere valido, è il seguente: si tratta di programmazione tipografica.
TeX è un linguaggio di programmazione e la sua semantica è la tipografia.
Credo vi siano al mondo 100 /200 linguaggi di programmazione, alcuni chiaramente
generici (C , C++, Java, Python, Lisp…) alcuni con output dedicato ma semanticamente generico (Assembly per x86 ad esempio), alcuni decisamente semanticamente dedicati
(SQL (sue estensioni proprietarie) , PostScript ad esempio ) altri a mezza via , come Perl — Practical Extraction and Report Language, ma se la cava bene in situazione generiche.
In generale però la teoria che sta dietro a questi linguaggi è solida e distribuita a vari livelli (i.e da un livello base ad un livello avanzato, tanto per capirci) e per ogni linguaggio si trovano anche parecchi esempio di applicazione — ma è raro trovare esattamente il programma completo che cerchi: in genere prendi spunto/adatti quelli esistenti
Nel caso del TeX , però, a situazione è differente: in primo luogo la teoria della programmazione tipografica , in paragone
alle altre teorie viste sopra, non è così sviluppata ed anche difficile da definere. Lo stesso termine tipo-grafia se visto in ottica mondiale ha una significato diverso rispetto a quello al quale noi occidentali siamo abituati, ossia grafia del “tipo” e le sue problematiche di spazio bianco/nero
Per le lingue orientali la tipografia è più tipo-grafica , per le lingua arabe siamo tra grafica e calligrafia (basta pensare alla calligrafia usata per decorazione).
E’ vero che esiste nel mondo una imponente quantità di documenti che hanno in comune delle strutture ( e questo se non altro per
effetto della globalizzazione) e che Knuth è partito da una istanza concreta di documento (essenzialmente i libro di computer science
che è un preciso modello di testo in lingua inglese con espressioni matematiche) per ricavare un modello di documento che va bene per molti casi e che è stato relativamente semplice adattare a nuovo situazioni (tipo ad esempio la composizione da destra verso sinistra).
E’ vero anche che il suo testo fondamentale è un mix di spiegazione del linguaggio TeX, di concetti illustrati solo con esempi, di teoria , ma non è un testo teorico di programmazione tipografica — ed infatti Knuth a prodotto una istanza concreta di documento, il formato plain che può essere usato come base di partenza per implementare altri tipi di documenti ma che oggi è pochissimo usata di per se,
La seconda complicazione è che TeX è un linguaggio di programmazione atipico perché si basa sulle macro (in breve, una macro definisce una serie di simboli che verranno emessi nel flusso di uscita nel momento in cui il programma raggiunge la macro nel flusso in entrata), ed anche perché è un linguaggio di programmazione turing complete — completo come quelli visti in precededenza , C ,C++, Java etc.
E la programmazione con le macro non è esattamente un paradigma di programmazione diffusa — esiste un solo altro linguaggio simil, M4, usato per lo più la configurazione di librerie — e talvolta non è per niente semplice accedere tramite le macro TeX agli stesso oggetti primitivi del TeX: si pensi ad esempio a scomporre una scatola verticale od orizzontale. Insomma, programmare in TeX è complesso e complicato.
Bene, allora forse esiste qualcos’altro ? Un nuovo linguaggio, una nuova teoria ?
No.
Io credo che TeX sia la cosa migliore; le altre soluzioni sono state e saranno varianti del TeX, oppure realizzabili come “estensione”, sia pure massiva , del formato plain.
LaTeX e ConTeXt ricadono in questo casistica, come pure luatex e ConTeXt MKIV
Anche PostScript può essere visto come variante del TeX (e viceversa certo, ma è il dvips che “ha vinto”: ci sono pochi linguaggi di programmazione tipografica simil TeX implementati in postscript)
Il linguaggio macro, poi, è il migliore proprio perché si immerge nel testo — il testo è il programma, in sostanza.
Gli altri linguaggi vedrebbero il testo come input del programma, programma che sarebbe quindi una entità separata dall’input — cosa che, comunque , è facilmente ottenibile anche col TeX.
E’ evidente che se vieni dal mondo di Indesign, trovi pochi punti di contatto se consideri solo l’aspetto DTP (=disegno col mouse), ma chiaramente Tex diventa competitivo quando devi programmare con Indesign, visto che ti ritrovi ad affrontare gli stessi problemi di programmazione.