Il linguaggio di markup
Immagina di dover scrivere un programma che componga un testo tipografico elaborando semplici sequenze di caratteri e che tra questi ci sia il titolo del documento.
Il titolo dovrà essere messo in risalto per esempio con un font più grande a centro pagina. Invece di dire al programma come comporre il titolo potremo semplicemente dirgli che quei carratteri sono un titolo.
Potendo inserire informazioni solo attraverso caratteri, viene naturale marcare i caratteri del titolo con altri che ne dichiarino la funzione. Tra tante vengono in mente queste tre soluzioni:
1 - sintassi "chiave: valore":
title: 1984
2 - sintassi "chiave(valore)":
title(1984)
3 - sintassi "chiave valore endchiave":
title 1984 endtitle
La marcatura crea una regola che fa emergere un linguaggio. I caratteri diventano codice conforme a prestabilite regole grammaticali.
Il carattere di escape
Stando a questa idea, alcuni caratteri rappresentano un testo mentre altri una marcatura. I caratteri svolgono due ruoli tra loro molto diversi: il testo è parte del contenuto del documento mentre la marcatura è parte della presentazione tipografica.
Fino a ora tuttavia non è escluso che marcatura e testo non si possano
confondere: nella seconda riga di questo brano i caratteri titolo: 1984 per
l’Autore sono evidentemente testo semplice ma per il programma che lo elabora si
tratta del titolo 1984 da comporre come tale.
Sto scrivendo un libro ma non sono sicuro
del titolo: 1984 è l'anno di questo futuro
distopico in cui si svolge il romanzo...
Ogni ambiguità può essere esclusa introducendo un carattere speciale detto carattere di escape, un simbolo riservato alla definizione di una marcatura preferibilmente usato molto raramente.
La barra rovescia o backslash \ è una scelta conveniente anche perché sulla
tastiera corrisponde a uno dei pulsanti in alto a destra.
Il titolo del romanzo di George Orwell preso a esempio si definirebbe così:
1. sintassi \chiave: valore
\title: 1984
2. sintassi \chiave(valore)
\title(1984)
3. sintassi \chiave valore \endchiave
\title 1984 \endtitle
Delle tre marcature la due è interessante per questi motivi:
- non ha il difetto della uno dove sulla stessa riga è ammesso solo il valore
- è più compatta o meno prolissa della tre
- da l’idea di funzione con il suo argomento
Note
In LaTeX esiste il comando
\title{}definito nelle classi standard, ma non ha lo scopo descritto in questa sezione. La macro ha solo il compito di scrivere in memoria il titolo che poi verrà effettivamente composto assieme ad altre informazioni dalla macro\maketitleche non accetta argomenti
Le macro di LaTeX
In LaTeX il backslash \ è il carattere di escape e la sintassi più comune è
proprio la due con l’argomento delimitato da parentesi graffe { e }. Anche
questi due caratteri di delimitazione sono poco usati e non sono mai
interpretati come testo.
Emerge così il primo elemento del linguaggio di markup di LaTeX: il comando. La sequenza dei caratteri di un comando prevede
\+ nome marcatura + eventuale argomento. Il comando è chiamato anche macro.
Alcune considerazioni:
- una macro e il corrispondente effetto sono concetti separati: un titolo può essere composto in molti modi differenti ma il codice dichiarativo rimane identico
- l’Autore definisce oggetti tipografici esprimendo astrazioni rispetto ai caratteri digitati
- le proprietà tipografiche di una macro possono dipendere da parametri o da elaborazioni di parametri consentendo dinamiche compositive arbitrariamente complesse
La diversità rispetto a un Word Processor dovuta all’uso di un linguaggio per esprimere i contenuti del documento è netta.
Un sistema di composizione tipografica basato sul codice non è per niente desueto come dimostra il numeroso gruppo di linguaggi di markup disponibile oggi a cominciare da HTML, XML, Markdown, AsciiDoc, il recente Typst e i formati per la rappresentazione dei dati strutturati come JSON, YAML, o TOML.
Tutto così semplice?
Il linguaggio di markup di LaTeX è qui presentato in modo semplificato per gli scopi della guida. Molti dettagli importanti sono stati taciuti come i codici di categoria, la costruzione dei gruppi, i token e molto altro.
È un po’ come ammettere che un utente LaTeX lo utilizza in modo proficuo anche senza conoscere i dettagli mentre un esperto è capace di qualsiasi costruzione, ma questo è proprio lo scopo di LaTeX stesso rispetto al vero motore di composizione sottostante TeX.