LaTeX Referenz und Makefile

8

Ich verwende Makefile , um PDF aus .tex files zu generieren.

Wenn Referenzen in meinen LaTeX-Dateien verwendet wurden. manchmal bekomme ich etwas wie

LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.

Ich weiß, dass der LaTeX-Kompilierbefehl dieses Referenzproblem beheben kann, aber in meinem Makefile hängt %.pdf nur von %.tex ab, also nur make wieder ausführen behebt das Problem nicht (nichts geändert in .tex file). Ich muss ein make clean machen, um PDF erneut zu generieren.

Hier ist mein Makefile

%Vor%

Wie löst man dieses Problem? Danke.

UPDATE:

Hier sind einige Gedanken, die ich von Google gefunden habe

  1. Ändern Sie default target zu .PHONY . Was ist nicht eine sehr gute Lösung (weil es so möglicherweise Latex-Datei gibt, und ich muss nur eine einzelne Datei neu kompilieren)
  2. Ändere %.pdf 's Abhängigkeit um %.aux einzuschließen. Aber ich weiß nicht, ob es in GNU möglich ist? (hängt von %.aux file ab, wenn es existiert, andernfalls ignoriere die Abhängigkeit von %.aux )
  3. Führen Sie grep für die Datei .log aus, und suchen Sie nach der entsprechenden Warnung. Wenn es existiert, führen Sie den Kompilierbefehl erneut aus.
yegle 09.09.2012, 22:13
quelle

2 Antworten

11

Ich verwende in allen meinen LaTeX Makefiles die einfache Regel

%Vor%

Dies wiederholt pdflatex so oft wie nötig. Ich habe festgestellt, dass all die verschiedenen LaTeX-Nachrichten, die eine erneute Ausführung erfordern, die allgemeine Zeichenfolge "Rerun to get" in der Protokolldatei enthalten. Sie können also in einer while-Schleife mit grep prüfen, ob sie vorhanden ist.

Die Einstellung ".DELETE_ON_ERROR:" ist wichtig: es stellt sicher, dass make automatisch alle verbleibenden unvollständigen pdf / aux / idx-Dateien löscht, wenn TeX mit einem Fehler abbricht, so dass sie make nicht beim nächsten Aufruf verwirren können.

Wenn ich anstelle von PDF DVI als Ausgabeformat verwende, verwende ich äquivalent

%Vor%

Die letzte Zeile bewirkt, dass jeder laufende xdvi seine Eingabedatei für eine sofortige visuelle Überprüfung neu lädt.

    
Markus Kuhn 30.01.2013 09:50
quelle
1

Entweder "default" ein falsches Ziel machen ("default" zu der Zeile hinzufügen, die mit .PHONY beginnt), oder eine komplexere Abhängigkeitsstruktur aufbauen, die automatisch neu startet (kann nicht sagen, wie das geht, tut mir leid).

    
Jost 09.09.2012 22:18
quelle

Tags und Links