Wer kennt das Format von fdb_latexmk?

Wer kennt das Format von fdb_latexmk?

Das Build-Tool latexmkwird häufig verwendet. Beim Kompilieren xxx.texmit wird latexmk xxxeine Zwischendatei xxx.fdb_latexmkerstellt. Obwohl ich einige Eigenschaften dieser Textdatei herausfinden kann, möchte ich es sicher wissen. Ich habe im Quellcode von recherchiert, latexmk der unter verfügbar isthttps://github.com/debian-tex/latexmk/blob/master/latexmk.pl, aber meine Perl-Kenntnisse sind so gering, dass ich ... also, ich verstehe es nicht wirklich.

Was ich bereits verstehe:

  • Die erste Zeile # Fdb version 4könnte sich auf die Latexmk-Version beziehen, die in meinem Fall 4.xxx ist.
  • Der Rest sind Abschnitte, wie unten beschrieben. Es gibt Fälle mit einem einzigen Abschnitt.

Jeder Abschnitt hat eine bestimmte Form:

  • Die erste Zeile ist die einzige Zeile ohne Einzug. Könnte so aussehen:
["lualatex"] 1702989679 "bewerbung.tex" "bewerbung.pdf" "bewerbung" 1702989681 0

Scheint sich auf eine Regel zu beziehen, deshalb nenne ich es eine Regellinie.

  • Alle nachfolgenden Zeilen bis zur nächsten Zeile (generated)verweisen auf eine Quelle, daher nenne ich sie eine Quellzeile.
  • dann kommt eine Zeile (generated),
  • jede Zeile, die (generated)auf die Zeile „bis“ folgt (rewritten before read) , scheint sich auf ein Ziel zu beziehen, daher nenne ich sie eine Zielzeile.
  • Die letzte Zeile eines Abschnitts lautet(rewritten before read)

Fragen:

  • Handelt es sich bei der obigen Liste um eine allgemeine Auflistung oder trifft dies für meine Dateien nur zufällig zu?
  • Die Regelzeile scheint mit ["Regelname"] zu beginnen, wobei der Regelname benutzerdefiniert oder eingebaut sein kann. Der Rest der Zeile, insbesondere die vielen Zahlen, sind mir nicht klar.
  • Die Quellzeilen scheinen mit "file path"einem Verweis auf eine Quelldatei zu beginnen. Dann folgt eine Zahl, die ich nicht interpretieren kann, dann die Größe der Datei und ein Hash, höchstwahrscheinlich um Änderungen zu identifizieren, dann etwas in Anführungszeichen: ist leer, wenn die Quelldatei nicht erstellt wurde, andernfalls der Name der Regel, die die Datei erstellt hat.
  • Die Zielzeilen scheinen klar: Name der generierten Datei in Anführungszeichen.

Wer kann mir helfen, die Einzelheiten herauszufinden?

Antwort1

Latexmk-Betreuer hier. Da .fdb_latexmk-Dateien für die interne Verwendung von Latexmk vorgesehen sind, gibt es (derzeit) keine offizielle Dokumentation. Diese Antwort kommt der Dokumentation am nächsten.

Im Latexmk-Quellcode definiert die recht kurze Subroutine rdb_write effektiv das Format, indem sie zeigt, was geschrieben wird. Die Namen der Variablen, deren Werte geschrieben werden, geben einen Hinweis auf die Bedeutung.

Die Version in der ersten Zeile ist einfach eine Versionsnummer für das Layout, das für die .fdb_latexmk-Dateien verwendet wird. Immer wenn ich feststelle, dass ich die Art der Informationen in diesen Dateien ändern muss, aktualisiere ich die Versionsnummer. Wenn latexmk eine .fdb_latexmk-Datei liest, überprüft es die fdb-Versionsnummer und bricht das Lesen ab, wenn die Versionsnummer von der aktuellen abweicht. (Die Datei wurde offensichtlich von einer anderen Version von latexmk erstellt.) Die aktuelle fdb-Version ist 4.

Die Einrückung dient lediglich der Benutzerfreundlichkeit für Menschen, die die Datei lesen, und wird ignoriert, wenn die Datei von latexmk gelesen wird. Leere Zeilen und Kommentarzeilen werden ignoriert (mit Ausnahme der ersten Kommentarzeile mit der FDB-Versionsnummer). Kommentarzeilen sind solche, die mit einem möglichen Leerzeichen beginnen, gefolgt von „#“ oder „%“.

Die Gesamtstruktur ist genau das, was Sie sehen.

Für jede Regel gibt es einen Abschnitt, der durch eine Zeile eingeleitet wird, die mit ["..."] mit dem Namen der Regel beginnt. Die Felder, die in derselben Zeile folgen, sind:

  1. Systemzeit zu Beginn der letzten Regelausführung.
  2. Primäre Quelldatei, z. B. die .tex-Datei des Dokuments für pdflatex.
  3. Primäre Zieldatei (sofern vorhanden), z. B. die Ausgabe-PDF-Datei für pdflatex.
  4. Der Basisname für Dateien, zB Protokolldateien und dergleichen.
  5. Die Systemzeit, zu der die Regel zuletzt überprüft wurde, um festzustellen, ob eine erneute Ausführung erforderlich ist.
  6. Ein Statuscode für den letzten Lauf: 0 für Erfolg. Derzeit sind folgende Werte möglich: 1, wenn die Regel die beabsichtigte Ausgabedatei nicht erstellen konnte, 2, wenn ein anderer Fehler aufgetreten ist.

Auf diese Regelzeile folgt eine Zeile für jede der (bekannten) Quelldateien der Regel: Jede Zeile enthält den Namen der Datei (in Anführungszeichen), dann den Änderungszeitpunkt, die Größe und die MD5-Signatur der Datei, gemessen unmittelbar vor der Ausführung der Regel. Abschließend folgt der Name der Regel, sofern vorhanden, die die Datei generiert hat, in Anführungszeichen.

Danach folgt ein weiterer Teil der Regeldaten, der von einer Zeile mit „(generiert)“ angeführt wird. Dies ist eine Liste von Dateinamen (in Anführungszeichen, einer pro Zeile) für Dateien, die während der Ausführung der Regel generiert wurden.

Der letzte Teil der Regeldaten wird von einer Zeile eingeleitet, die „(rewritten before read)“ enthält. Darauf folgt eine Liste von Dateinamen (wiederum in Anführungszeichen, einer pro Zeile). Normalerweise ist diese Liste leer. Alle Dateien hier existierten zu Beginn des Laufs und wurden während des Laufs gelesen, aber sie wurden vor dem ersten Lesen neu geschrieben.

Ich sollte hinzufügen, dass nicht-ASCII-Dateinamen als UTF-8 codiert werden.

verwandte Informationen