fdb_latexmk のフォーマットについて知っている人はいますか?

fdb_latexmk のフォーマットについて知っている人はいますか?

ビルドツールはlatexmk広く使用されています。xxx.texでコンパイルするとlatexmk xxx、中間ファイルxxx.fdb_latexmkが作成されます。そのテキストファイルのいくつかのプロパティはわかりますが、確実に知りたいです。 のソースコードを調べましたlatexmkhttps://github.com/debian-tex/latexmk/blob/master/latexmk.plしかし、私の Perl の知識は非常に乏しいので、... まあ、よくわかりません。

私がすでに理解していること:

  • 最初の行は、# Fdb version 4latexmk のバージョン (私の場合は 4.xxx) を参照している可能性があります。
  • 残りは下記のセクションです。 セクションが 1 つの場合もあります。

各セクションには特定の形式があります。

  • 最初の行はインデントのない唯一の行です。次のようなものになります。
["lualatex"] 1702989679 "bewerbung.tex" "bewerbung.pdf" "bewerbung" 1702989681 0

ルールを参照しているようなので、ルール ラインと呼びます。

  • 行の until に続く各行は(generated)ソースを参照するため、これをソース行と呼びます。
  • そして次の行が来る(generated)
  • (generated)until 行に続く各行は(rewritten before read) ターゲットを参照しているようなので、これをターゲット行と呼びます。
  • セクションの最後の行は(rewritten before read)

質問:

  • 上記のリストは一般的な形式ですか、それとも偶然私のファイルにのみ当てはまるのでしょうか?
  • ルール行は ["rule name"] で始まるようですが、ルール名はユーザー定義または組み込みです。行の残りの部分、特に多くの数字は私にはよくわかりません。
  • ソース行は、"file path"ソース ファイルへの参照から始まるようです。次に、解釈できない数字、ファイルのサイズ、ハッシュ (おそらく変更を識別するため)、引用符で囲まれた何かが続きます。ソース ファイルが作成されていない場合は空ですが、それ以外の場合は、ファイルを作成したルールの名前です。
  • ターゲット行は明確です: 生成されたファイルの名前が引用符で囲まれています。

詳細を調べるのに誰が助けてくれますか?

答え1

Latexmk のメンテナーです。.fdb_latexmk ファイルは、latexmk の内部使用を目的としているため、(現時点では) 公式ドキュメントはありません。この回答は、ドキュメントに最も近いものです。

latexmk ソース コードでは、かなり短いサブルーチン rdb_write が、書き込まれる内容を表示することで、フォーマットを効果的に定義します。値が書き込まれる変数の名前から、意味がわかります。

最初の行のバージョンは、.fdb_latexmk ファイルに使用されるレイアウトのバージョン番号です。これらのファイル内の情報の種類を変更する必要があることがわかった場合は、バージョン番号を更新します。latexmk は、.fdb_latexmk ファイルを読み取るときに、fdb のバージョン番号をチェックし、バージョン番号が現在のものと異なる場合は読み取りを中止します (ファイルは明らかに、latexmk の別のバージョンによって作成されたものです)。現在の fdb バージョンは 4 です。

インデントは、ファイルを読む人間にとっての利便性のためだけのものであり、latexmk によってファイルが読み取られるときには無視されます。空白行とコメント行は無視されます (fdb のバージョン番号を示す最初のコメント行を除く)。コメント行は、可能な空白で始まり、その後に '#' または '%' が続く行です。

全体的な構造はご覧のとおりです。

各ルールには、ルール名で始まる ["..."] 行で始まるセクションがあります。同じ行に続くフィールドは次のとおりです。

  1. ルールが最後に実行されたときの開始時のシステム時間。
  2. 主要なソース ファイル (例: pdflatex のドキュメントの .tex ファイル)。
  3. 主な出力先ファイル(存在する場合)。例: pdflatex の出力 .pdf ファイル。
  4. ログ ファイルなどのファイルの基本名。
  5. ルールの再実行が必要かどうかを最後に確認したシステム時間。
  6. 最後の実行のステータス コード: 成功の場合は 0。現在、他の可能な値は、ルールが意図した出力ファイルを作成できなかった場合は 1、その他の種類のエラーがあった場合は 2 です。

そのルール行に続いて、ルールの (既知の) ソース ファイルごとに 1 行が続きます。各行には、ファイル名 (二重引用符で囲む)、次にルールが実行される直前に測定されたファイルの変更時刻、サイズ、および md5 署名が含まれます。最後に、ファイルを生成したルールの名前 (存在する場合) が二重引用符で囲まれます。

その後に、'(generated)' を含む行で始まるルール データの別の部分があります。これは、ルールの実行中に生成されたファイルのファイル名のリストです (二重引用符で囲み、1 行に 1 つずつ)。

ルール データの最後の部分は、「(読み取り前に書き換え)」という行で始まります。その後にファイル名のリストが続きます (これも二重引用符で囲み、1 行に 1 つずつ)。通常、このリストは空です。ここにあるファイルは実行開始時に存在し、実行中に読み取られましたが、最初に読み取られる前に書き換えられました。

非 ASCII ファイル名が検出された場合は、UTF-8 としてコード化されることを付け加えておきます。

関連情報