latexmk を使用して aux および出力ディレクトリ パスにソース tex ファイル名を含めるにはどうすればよいでしょうか?

latexmk を使用して aux および出力ディレクトリ パスにソース tex ファイル名を含めるにはどうすればよいでしょうか?

同じワークスペース ディレクトリ にsrc、、aux-dirという3 つのディレクトリがあり、 には独立しているがフォーマットが似ているファイル、、... があるとします。の一部を にコンパイルして、補助ファイルがのサブディレクトリに書き込まれ、出力ファイル (例) がのサブディレクトリに書き込まれるようにを設定したいと思います。ファイルの数が多いため、各 を初めてコンパイルする前にこれらのサブディレクトリを手動で作成する必要を回避したいと思います。out-dirworkbleb1.texbleb2.texsrclatexmkbleb<i>.texbleb<i>.pdfbleb<i>aux-dirbleb<i>.pdfbleb<i>out-dirbleb<i>.texbleb<i>.tex

latexmkこの目的のために、カスタム構成ファイルを定義しましたwork。構成ファイル内では、補助ファイルの保存先と出力ファイルの保存先をそれぞれ変数とで指定できることはわかっています。また、$aux_dir変数で指定されたパスがまだ存在しない場合は、そのパスを作成するのにも便利です。ただし、$out_dirlatexmkbleb<i>私が知らないのは、ソース .tex ファイルのベース名に応じてサブディレクトリ名を取得する方法です。

プレースホルダ変数%A%Rなどは、コマンド変数 (例 ) を上書きする以外、設定ファイルではアクセスできないようです$latex = "latex %O %S"。最初の試みは、 を に変更し$latexinternal mylatex %Aソース ファイル名にアクセスし、それを独自のサブルーチン内で$aux_dirとに挿入することでした。2 番目の試みは、フックで呼び出されるカスタム サブルーチンでと変数を によって指定されたファイル名を含むパスに設定しようとしたことです。これら 2 つの試みでは、 は、デフォルトですべての aux ファイルと出力ファイルを に吐き出す前に、との変更を認識しません。のドキュメントでは、設定ファイルで、latexmk によって渡されるコマンド ライン引数 (特にソース ファイル名) に他の方法でアクセスする方法が指定されていないようです。3 番目の試みでは、 と を変更する代わりに、最初の試みからサブルーチン内でに対して行うPerl 呼び出しで対応するとフラグを変更しようとしましたが、再び はこれらのフラグを無視し、 にファイルをダンプするだけです。$out_dirmylatex$aux_dir$out_dir$$Pbasebefore_xlatexlatexmk$aux_dir$out_dirworklatexmk$aux_dir$out_dir-aux-directory-output-directorysystemlatexmylatexlatexmkwork

この時点で、 の当初計画したディレクトリ構造は、workたとえば で発生する可能性のある問題を考慮すると、そもそも理想的ではないことに気づきましbibtexた。しかし、当初の計画を機能させるために試行錯誤する時間が十分にあったので、それが可能かどうか、または の基本的な設計原則を誤解しているかどうかを知りたいと思っていますlatexmk

答え1

現時点では、あなたが要求しているものはlatexmkではサポートされていません。実装することは可能ですが、そのためにはlatexmkがtexファイルの処理を開始する前に使用するコードの変更が必要になります。現時点では

あなたが行った試みは、必要なことを行うには遅すぎます。特定の .tex ファイルの初期化が完了した後、ディレクトリは固定されたままで、latexmk に認識される必要があります$aux_out$out_dir

関連情報