プログラムで出力ディレクトリを取得する

プログラムで出力ディレクトリを取得する

解決するためにこの問題-output-directory次のようなコマンドを実行するときに、プログラムで を取得する必要があります。

$ pdflatex -shell-escape -output-directory=build test.tex

\write18その理由は、ビルド フォルダーの場所に応じて、実行するコマンドを変更する必要があるためです。

${TEXMF_OUTPUT_DIRECTORY}(コマンドラインから直接読み取ろうとしましたが、この環境変数も空です:編集ソースを確認したところ、TexLive 2024から利用可能になるようです)

答え1

--output-directory確かに、価値に見合わないほど面倒ですが、そこにある以上はサポートする必要があると思います。

出力ディレクトリが現在のディレクトリの下にあり、UNIXがfind 利用可能であると仮定すると、例えば次のようにすることができます。


\input{|find . -name \jobname.log}

\bye

これにより、ログ ファイルへのパスが出力されます。output-directory同様に、\inputさらなる処理のためにパスを取得するための定義に含めることもできます。

答え2

最終的に、ユーザーに次のようなコンパイルを依頼しました。

$ pdflatex -shell-escape -output-directory=build "\def\outputDirectory{build}\input{test.tex}"

( pre_latexlatexmkでも参照)

しかし、TeXLive 2024 からは、新しい環境変数を定義する必要があります。

${TEXMF_OUTPUT_DIRECTORY}

これにより、コマンドを正しく実行できるようになります-shell-escape

関連情報