Riepilogo
Questa lezione insegna a compilare con sicurezza e a correggere ciò che non va. Spiega che una compilazione procede per passate, perché i riferimenti incrociati e l’indice ne richiedono una seconda, e come latexmk ripete le passate da sé, in Texmaker e nel terminale. Insegna a leggere il file di log: dove si trova, come si legge un errore con la sua riga che comincia con il punto esclamativo, il suo numero di riga e il suo contesto spezzato in due, e che cosa distingue un errore da un avvertimento e da un messaggio di scatola troppo piena. Passa in rassegna gli errori più frequenti con i loro messaggi reali, le modalità di interazione del motore e una strategia di debug: leggere per primo il primo errore, dividere il sorgente a metà, ridurre il problema a un esempio minimo, cancellare i file ausiliari e cercare il testo del messaggio. Si chiude con gli avvertimenti a cui conviene prestare attenzione.
Obiettivi di apprendimento
- Spiegare perché un documento con riferimenti incrociati o indice richiede più di una passata, e compilarlo con latexmk.
- Leggere un errore nel log e individuarne il messaggio, la riga in cui il motore lo ha rilevato e il punto esatto di quella riga.
- Riconoscere gli errori più frequenti dal loro messaggio e collegare ciascuno alle sue cause probabili.
- Individuare la causa reale di un errore quando non si trova nella riga segnalata, leggendo per primo il primo errore e dividendo il sorgente a metà.
- Distinguere gli avvertimenti che richiedono una correzione da quelli che si possono ignorare.
Che cosa fa una compilazione
Il motore legge il sorgente una sola volta, dall’inizio alla fine, e compone ogni pagina man mano che procede. Questa lettura unica ha una conseguenza: quando nella seconda pagina compare un riferimento alla sezione cinque, o quando l’indice della prima pagina deve elencare sezioni che non sono ancora state lette, il motore non può ancora sapere quale numero o quale pagina corrisponda loro. La soluzione di LaTeX è lavorare per passate. In ciascuna annota nel file .aux il numero e la pagina di ogni etichetta (quelle che si pongono con \label), e nel file .toc i titoli delle sezioni; nella passata successiva legge questi file all’inizio e usa quanto annotato. Ne segue che, alla prima compilazione, i riferimenti compaiono come due punti interrogativi e l’indice risulta vuoto, e che basta compilare un’altra volta perché si completino. Se una modifica sposta i numeri, può servire una terza passata; la bibliografia, come si vedrà nella sua unità, aggiunge un altro programma, Biber, tra una passata e l’altra.
Contare le passate a mano è noioso e soggetto a dimenticanze. Per questo esiste latexmk, un programma incluso nelle distribuzioni: esegue il motore, esamina il log e i file ausiliari e ripete le passate, o chiama Biber, finché nulla cambia più. La sua opzione -lualatex gli indica di usare LuaLaTeX, e la sua opzione -c cancella i file ausiliari, conservando il PDF.
Il primo comando compila tesi.tex con LuaLaTeX tutte le volte che serve; il secondo cancella i file ausiliari.
$ latexmk -lualatex tesi.tex$ latexmk -c tesi.texIn Texmaker, una delle sequenze predefinite della compilazione rapida usa latexmk (LatexMk + View PDF); nell’elenco dei comandi della finestra di configurazione, il comando di latexmk si sostituisce con latexmk -lualatex -synctex=1 -interaction=nonstopmode %.tex, perché usi LuaLaTeX e conservi la sincronizzazione con il PDF.
Caricamento del contenuto…