同じワークスペース ディレクトリ にsrc
、、aux-dir
という3 つのディレクトリがあり、 には独立しているがフォーマットが似ているファイル、、... があるとします。の一部を にコンパイルして、補助ファイルがのサブディレクトリに書き込まれ、出力ファイル (例) がのサブディレクトリに書き込まれるようにを設定したいと思います。ファイルの数が多いため、各 を初めてコンパイルする前にこれらのサブディレクトリを手動で作成する必要を回避したいと思います。out-dir
work
bleb1.tex
bleb2.tex
src
latexmk
bleb<i>.tex
bleb<i>.pdf
bleb<i>
aux-dir
bleb<i>.pdf
bleb<i>
out-dir
bleb<i>.tex
bleb<i>.tex
latexmk
この目的のために、カスタム構成ファイルを定義しましたwork
。構成ファイル内では、補助ファイルの保存先と出力ファイルの保存先をそれぞれ変数とで指定できることはわかっています。また、$aux_dir
変数で指定されたパスがまだ存在しない場合は、そのパスを作成するのにも便利です。ただし、$out_dir
latexmk
bleb<i>
私が知らないのは、ソース .tex ファイルのベース名に応じてサブディレクトリ名を取得する方法です。
プレースホルダ変数%A
、%R
などは、コマンド変数 (例 ) を上書きする以外、設定ファイルではアクセスできないようです$latex = "latex %O %S"
。最初の試みは、 を に変更し$latex
てinternal mylatex %A
ソース ファイル名にアクセスし、それを独自のサブルーチン内で$aux_dir
とに挿入することでした。2 番目の試みは、フックで呼び出されるカスタム サブルーチンでと変数を によって指定されたファイル名を含むパスに設定しようとしたことです。これら 2 つの試みでは、 は、デフォルトですべての aux ファイルと出力ファイルを に吐き出す前に、との変更を認識しません。のドキュメントでは、設定ファイルで、latexmk によって渡されるコマンド ライン引数 (特にソース ファイル名) に他の方法でアクセスする方法が指定されていないようです。3 番目の試みでは、 と を変更する代わりに、最初の試みからサブルーチン内でに対して行うPerl 呼び出しで対応するとフラグを変更しようとしましたが、再び はこれらのフラグを無視し、 にファイルをダンプするだけです。$out_dir
mylatex
$aux_dir
$out_dir
$$Pbase
before_xlatex
latexmk
$aux_dir
$out_dir
work
latexmk
$aux_dir
$out_dir
-aux-directory
-output-directory
system
latex
mylatex
latexmk
work
この時点で、 の当初計画したディレクトリ構造は、work
たとえば で発生する可能性のある問題を考慮すると、そもそも理想的ではないことに気づきましbibtex
た。しかし、当初の計画を機能させるために試行錯誤する時間が十分にあったので、それが可能かどうか、または の基本的な設計原則を誤解しているかどうかを知りたいと思っていますlatexmk
。
答え1
現時点では、あなたが要求しているものはlatexmkではサポートされていません。実装することは可能ですが、そのためにはlatexmkがtexファイルの処理を開始する前に使用するコードの変更が必要になります。現時点では
あなたが行った試みは、必要なことを行うには遅すぎます。特定の .tex ファイルの初期化が完了した後、ディレクトリは固定されたままで、latexmk に認識される必要があります$aux_out
。$out_dir