ugaciaka” post=86364Ho creato un piccolo script su linux che a fronte di più .tex in svariate sottodirectory ne compila il sorgente producendo i vari .pdf. Mi sono accorto però che, p. es, i riferimenti (immagini, tabelle, capitoli ecc..) mostrano ??? al posto del numero.
Mi sono ricordato che in alcuni casi si necessitano du due passaggi di pdflatex, non mi ricordo però il motivo e come uno dovrebbe accorgersene al momento della compilazione! 😕
PS domanda della domande: se pdflatex sa essere necessari due passaggi perché non se lo fa da solo? 😛
Perché non lo fa da solo? perché 9 volte su 10 sarebbe inutile e superfluo; ci sono alcuni shell editor (ricordo Kile, ma l’ultima volta che l’ho usato è stato 7-8 anni fa; oggi forse è cambiato) che compilava sempre almeno due volte; con documenti di grandi dimensioni la cosa era particolarmente fastidiosa. Credo che altri shell editor moderni abbiano la funzione build che fa tante compilazioni quanto bastano non solo per avere i riferimenti corretti, ma anche per ricomporre la bibliografia e gli indici analitici.
In ogni caso uno script che sappia esaminare il file log, può andare a cercare la stringa “Label may have changed” oppure “undefined references” (o stringhe simili, le leggo ma non me le ricordo a memoria) e se sono presenti quelle stringhe è necessario ripetere la compilazione.
Ricorda che i riferimenti incrociati sono recuperati dai file .aux prodotti nella compilazione precedente; sarebbe on disastro se dopo ogni compilazione i file ausiliari venissero cancellati, perché allora i testo per vedere se bisogna ricompilare darebbero luogo a un ciclo infinito.
Questo è il motovo per il quale io non uso mai nessuno script o makefile per compilare i miei documenti; voglio essere io quello che decide cosa fare e un clic in può sul bottone dello shell editor lo faccio io se e solo se io decido che è necessario. 9 volte su 10 non lo è; forse anche 99 volte su 100.
Anche latexmk talvolta funziona correttamenmtne se è stato adattato al documento specifico da compilare; non è detto che funzioni sempre in modo corretto; in ogni caso 9 volte su 10, o 99 su 100, fa del lavoro inutile.