Кто знает формат fdb_latexmk?

Кто знает формат fdb_latexmk?

Инструмент сборки latexmkшироко используется. При компиляции xxx.texс помощью создается latexmk xxxпромежуточный файл xxx.fdb_latexmk. Хотя я могу выяснить некоторые свойства этого текстового файла, я хочу знать наверняка. Я исследовал исходный код, который latexmk доступен по адресуhttps://github.com/debian-tex/latexmk/blob/master/latexmk.pl, но мои познания в Perl настолько слабы, что я... ну, я не совсем понимаю.

Что я уже понял:

  • Первая строка # Fdb version 4может относиться к версии latexmk, в моем случае это 4.xxx.
  • остальное — это разделы, как описано ниже. Есть случаи с одним разделом.

Каждый раздел имеет определенную форму:

  • Первая строка — единственная строка без отступа. Может быть что-то вроде
["lualatex"] 1702989679 "bewerbung.tex" "bewerbung.pdf" "bewerbung" 1702989681 0

Кажется, это относится к правилу, поэтому я называю это линией правила.

  • каждая последующая строка, идущая до строки, (generated)ссылается на источник, поэтому я называю ее исходной строкой.
  • затем идет строка (generated),
  • каждая строка, следующая (generated)за этой, (rewritten before read) кажется, относится к цели, поэтому я называю ее целевой строкой.
  • последняя строка раздела(rewritten before read)

Вопросы:

  • Является ли приведенный выше список общим или это относится только к моим файлам?
  • Строка правила, похоже, начинается с ["имя правила"], где имя правила может быть определено пользователем или встроено. Остальная часть строки, в частности многочисленные цифры, мне не понятны.
  • Исходные строки, похоже, начинаются со "file path"ссылки на исходный файл. Затем идет число, которое я не могу интерпретировать, затем размер файла и хэш, скорее всего, для идентификации изменений, затем что-то в кавычках: пусто, если исходный файл не создан, в противном случае имя правила создало файл.
  • Целевые строки кажутся ясными: имя сгенерированного файла в кавычках.

Кто может мне помочь узнать подробности?

решение1

Здесь находится сопровождающий Latexmk. Поскольку файлы .fdb_latexmk предназначены для внутреннего использования latexmk, официальной документации (в настоящее время) нет. Этот ответ — наиболее близкий подход к документации.

В исходном коде latexmk довольно короткая подпрограмма rdb_write эффективно определяет формат, показывая, что написано. Имена переменных, значения которых записаны, дают представление о смысле.

Версия в первой строке — это просто номер версии для макета, используемого для файлов .fdb_latexmk. Всякий раз, когда я обнаруживаю, что мне нужно изменить типы информации в этих файлах, я обновляю номер версии. Когда latexmk читает файл .fdb_latexmk, он проверяет номер версии fdb и прекращает чтение, если номер версии отличается от текущего. (Очевидно, что файл был создан другой версией latexmk.) Текущая версия fdb — 4.

Отступы нужны исключительно для удобства чтения файла людьми и игнорируются при чтении файла latexmk. Пустые строки и строки комментариев игнорируются (за исключением начальной строки комментария, содержащей номер версии fdb). Строки комментариев начинаются с возможного пробела, за которым следует '#' или '%'.

Общая структура именно такая, как вы видите.

Для каждого правила есть раздел, который начинается со строки, начинающейся с ["..."] с названием правила. Поля, которые следуют на той же строке:

  1. Системное время на момент начала последнего выполнения правила.
  2. Первичный исходный файл, например, файл .tex документа для pdflatex.
  3. Основной файл назначения (если есть), например, выходной файл .pdf для pdflatex.
  4. Базовое имя для файлов, например, файлов журналов и т.п.
  5. Системное время, когда правило в последний раз проверялось на предмет необходимости повторного запуска.
  6. Код статуса для последнего запуска: 0 для успеха. В настоящее время возможны следующие другие значения: 1, если правило не смогло создать предполагаемый выходной файл, 2, если произошла какая-то другая ошибка.

После этой строки правила идет строка для каждого из (известных) исходных файлов правила: каждая строка имеет имя файла (в двойных кавычках), затем время модификации, размер и подпись md5 файла, измеренные непосредственно перед запуском правила. Наконец, есть имя правила, если таковое имеется, которое сгенерировало файл, в двойных кавычках.

После этого идет еще одна часть данных правила, озаглавленная строкой, содержащей '(generated)'. Это список имен файлов (в двойных кавычках, по одному на строку) для файлов, сгенерированных во время выполнения правила.

Последняя часть данных правила начинается со строки, содержащей '(переписано перед чтением)'. За ней следует список имен файлов (снова в двойных кавычках, по одному на строку). Обычно этот список пуст. Все файлы здесь существовали в начале выполнения и были прочитаны во время выполнения, но были перезаписаны до первого прочтения.

Добавлю, что когда встречаются имена файлов, не входящие в ASCII, они кодируются как UTF-8.

Связанный контент