
Ich bin gerade darüber gestolpertBlogbeitrag überrubber
und dachte: „Ist es nicht genau das, was latexmk
es tut?“. Jetzt frage ich mich: Ist es nicht so? Oder gibt es da Unterschiede?
Antwort1
Es scheint, dass der Belag folgende Eigenschaften hat, die latexmk (noch?) nicht bietet:
- Gummianalysiert die LaTeX-Logdatei, filtert es und gibt nur "relevante" Nachrichten (Warnungen, Fehler) in einer lesbaren Form aus. Rubber führt LaTeX immer in einerNicht-interaktiver Modus, während Latexmk zusätzliche Schalter oder Konfigurationen zu erfordern scheint.
- Mit Gummi können SieKonfigurationsoptionen als Kommentare im LaTeX-Quellcode; latexmk erfordert zusätzliche Konfigurationsdateien.
- Am wichtigsten ist, dass Sie mit Rubber die richtigen Werte angeben können fürTEXINPUTS, BIBINPUTS, BSTINPUTS usw.für jedes Dokument mit den oben genannten Konfigurationsoptionen; latexmk scheint davon auszugehen, dass diese Umgebungsvariablen bereits entsprechend definiert sind.
Natürlich können viele dieser Probleme mit einigen Wrapper-Skripten und Hilfsdateien umgangen werden. Und natürlich gibt es viele Funktionen von latexmk, die Rubber nicht bietet.
Antwort2
Ein wichtiger Vorteil von latexmk gegenüber rubber ist, dass latexmk abhängige Dateien viel zuverlässiger erkennt. Soweit ich es herausfinden konnte, ermittelt rubber die abhängigen Dateien, indem es die Tex-Datei analysiert und \input
nach Makros sucht. Wenn diese Makros jedoch in einem anderen Makro vergraben sind, erkennt rubber die abhängigen Dateien nicht richtig. Wenn Sie beispielsweise\include
\includegraphics
\newcommand\try[1]{\input{#1}}
\try{sub}
Rubber erkennt nicht, dass es sub.tex
sich um eine abhängige Datei handelt. Wenn sich die Datei sub.tex
ändert, erkennt Rubber daher nicht, dass die Kompilierung erneut ausgeführt werden muss.
Stattdessen analysiert Latexmk die Protokolldatei und verwendet die -recorder
Option ( pdf
) latex
, um die abhängigen Dateien zu bestimmen.
Antwort3
Latexmk verfügt außerdem über eine Auto-Vorschau-Funktion, die das PDF (intelligent) neu kompiliert, sobald der Text gespeichert wird.
Es gibt auch erweiterte Funktionen, wie beispielsweise eine enge Integration mit Makefiles.