Chi si occupa di tipografia elettronica dovrebbe sapere qualcosa di “cosa c’è sotto”. Un tempo era obbligatorio, occorreva essere dei tecnici per poter usare i programmi di impaginazione. Oggi non serve, dato che molto del lavoro di composizione tipografica è affidato a programmi con interfaccia grafica, che mostrano a schermo solo la pagina come verrà stampata o visualizzata, e non i comandi che l’hanno generata. Lo stesso avviene nelle pagine web e in tanti altri casi. La potenza di calcolo e le qualità grafiche dei computer di oggi permettono questa stratificazione. Ciò non avviene con LaTeX. Con LaTeX ci abituiamo a vedere su un solo piano sia il testo che verrà stampato, sia i comandi che ne definiranno il formato. Infatti fa parte della grande famiglia dei linguaggi markup. Si tratta di linguaggi, usati in genere per la produzione, visualizzazione, stampa di testi formattati, nei quali il testo da visualizzare è memorizzato in un file insieme alle regole di formattazione. La parola markup significa “annotazione”. Un po’ come quelle che usava l’editor per passare le istruzioni al tipografo: “Da qui in poi corsivo”… “fine corsivo”, “ingrandisci il carattere del 10%”, “vai a capo qui e lascia due righe bianche”…
Un esempio semplice di markup a livello zero è contenuto nel linguaggio di Whatsapp: se voglio che una parola o una stringa venga riprodotta in grassetto, basta inserirla tra una coppia di asterischi e il destinatario la leggerà in grassetto ma senza gli asterischi. Per esempio *questa stringa* verrà ricevuta questa stringa. Avremmo ottenuto il corsivo se avessimo utilizzato la lineetta bassa al posto dell’asterisco: _corsivo_
Dunque i simboli * e _ sono per Whatsapp dei comandi di formattazione oltre che semplici caratteri Ascii. A proposito: sapete cosa sono i caratteri Ascii? Acronimo per “American Standard Code for Information Interchange”, fu introdotto tantissimi anni fa per far corrispondere ogni carattere a un numero, in modo da poterli usare per programmare i computer o per far andare le telescriventi. Il set Ascii base si compone delle lettere dell’alfabeto inglese maiuscole e minuscole, delle cifre da zero a nove e di alcuni caratteri speciali, punteggiatura, spazi, andare a capo, parentesi. In tutto 127 simboli erano sufficienti all’inizio. Niente caratteri accentati però (in inglese non servono). Parleremo di codifica un’altra volta. Ricordatecelo, grazie!
Torniamo al sistema markup: dall’esempio di Whatsapp dovrebbe essere chiaro di cosa stiamo parlando. Qual è il vantaggio? Che basta la codifica più semplice di tutte, ossia la vecchia Ascii per comporre un file con tutti i comandi di formattazione, inserimento tabelle, figure, cambio tipi di caratteri eccetera, ossia tutto ciò che serve in tipografia. Se oggi apro un file markup scritto e registrato cinquanta anni fa, qualunque computer si usasse allora, posso leggerlo e trasformarlo in carta stampata, se conosco il significato dei comandi.
Viceversa, se cerco di aprire qualunque documento creato con un moderno programma di impaginazione, per esempio Indesign di Adobe, scopro che senza il programma che l’ha creato non posso proprio aprirlo, dato che si tratta di un file binario.
Ma che tipo di istruzioni possiamo trovare in un generico markup? Tutte quelle che servono a definire i caratteri di stampa, la giacitura del testo, la lunghezza delle righe, gli spostamenti verticali o orizzontali, l’inserimento di file grafici eccetera. In poche parole: tutto. Le più semplici sono quelle che modificano l’estetica dei caratteri, per esempio li ingrandiscono, li rimpiccioliscono, li usano come apice o pedice, oppure li mostrano in corsivo o in grassetto eccetera.
Ovviamente il sistema che decodifica il file deve essere a conoscenza sia dei comandi veri e propri, sia dei codici speciali che indicano il passaggio dal testo stampabile al comando vero e proprio. Quindi oltre al testo e ai comandi troveremo anche dei cosiddetti caratteri di escape, ossia gli indicatori del passaggio da un modo all’altro. Il carattere di escape che usa LaTeX è la barra rovesciata \. Ogni comando di formattazione comincia quindi con una di queste barre.
Dunque, in definitiva, ciò che si trova in un generico file markup sarà: testo stampabile, comandi di formattazione, caratteri di escape. Più, in genere, un “cappello” che precede il testo vero e proprio e che informa il sistema di decodifica sul lavoro che dovrà effettuare: si tratta dei cosiddetti metadati che hanno a che fare con la codifica usata, con il formato della pagina o del dispositivo di output e altre informazioni preliminari. La prima riga indica sempre di quale linguaggio si tratta, e in quale versione. Dato che ora qualcuno vorrebbe vedere un esempio, oltre al frammento in sgml della figura in cima, ecco poche righe in linguaggio HTML, uno dei più diffusi linguaggi markup (si usa per costruire ipertesti e siti web), ed è quello con cui è composta questa pagina, anzi è la codifica di uno dei periodi che abbiamo letto sopra:
<p>Un esempio semplice di <em>markup</em> a livello zero è contenuto nel linguaggio di <em>Whatsapp</em>: se voglio che una parola o una stringa venga riprodotta in grassetto, basta inserirla tra una coppia di asterischi e il destinatario la leggerà in grassetto ma senza gli asterischi. Per esempio *questa stringa* verrà ricevuta <strong>questa stringa</strong>. Avremmo ottenuto il <em>corsivo</em> se avessimo utilizzato la lineetta bassa al posto dell’asterisco: _corsivo_
Oltre all’HTML vi sono altri linguaggi markup, molti dei quali usiamo correntemente senza rendercene conto. Per esempio l’XML (eXtensible Markup Language) è un linguaggio potentissimo, anzi un metalinguaggio che serve a produrre linguaggi markup. Ancora più in su troviamo il SGML (Standard Generalized Markup Language) da cui discendono tanti sottolinguaggi.
Forse non tutti sanno, per esempio, che lo stesso MS-Word, il word processor più diffuso al mondo, dal 2010 utilizza al suo interno una codifica XML: è il formato con cui sono registrati i file con estensione docx, ed ecco spiegata la ragione della x. Questa rivoluzione, passata quasi inosservata a livello dell’utilizzatore, ha permesso al produttore di mantenere la leadership sul mercato, dato che fornisce agli sviluppatori un codice finalmente esplorabile e modificabile al livello più intimo, essendo un linguaggio markup.
In realtà un file docx non è di per sé un testo in chiaro, ma una cartella compressa che contiene, oltre al file vero e proprio, altri file d’appoggio e di definizione, per cui anche se scrivo un testo che contiene una sola parola, quando lo salvo scopro che non occupa pochi byte come ci si aspetterebbe, ma parecchi kilobyte. Provate a creare un docx con la parola “Salve”, registratelo e guardatene le dimensioni. Ora provate a modificare l’estensione da docx a zip in modo da avvisare il sistema che si tratta di un file compresso. Facendoci doppio clic potete osservarne la costituzione interna, che forse vi stupirà.
Tra gli altri file scritti in linguaggio markup che utilizziamo senza rendercene conto vi sono ancora quelli usati per registrare gli ebook, ossia i libri in formato digitale “aperto”, per esempio gli “epub”, basati sull’XML. Il bello di tutti questi sistemi è la possibilità reale di effettuare conversioni dall’uno all’altro standard, il che rende veramente ampia la gamma di possibilità di ottenere, diffondere, divulgare l’informazione digitale.
Come ormai sarà chiaro, TeX, LaTeX e tutti i loro derivati costituiscono una grande famiglia di linguaggi markup. Vedremo in altri articoli come, grazie alla loro struttura aperta, sia possibile modificare, creare e personalizzare i codici di controllo, e come sia possibile importare o esportare file costruiti con altri standard markup.
(LaTeX Guru, aprile 2022)