
currfile
オプション付きのパッケージはabspath
、現在のファイルの絶対パスを取得できます。ただし、フラグpdflatex
付きで実行する必要があり-recorder
ます。 を使用して同じ目的を達成することは可能でしょうかlualatex
?
lualatex
は と同じコマンドラインフラグのセットを持っていることに注意してくださいpdlflatex
。したがって、は で動作するのと同じように当然currfile
動作します。課題は、 を使用してテキスト内の現在のフォルダ情報を抽出することです。lualatex
pdflatex
lua
それなし旗に頼る-recorder
。
答え1
またしても同調圧力。:)
私の記憶が正しければ、純粋なLuaには、トリックに頼らずに現在の作業ディレクトリを見つける組み込みの方法はありません。ありがたいことに、LuaTeXには素晴らしいLuaファイルシステム、 これは「標準の Lua ディストリビューションによって提供されるファイル システムに関連する関数のセットを補完するために開発されたライブラリ。」
の参照セクションLFS マニュアルには、私たちが望むことを実現する方法が示されています。
lfs.currentdir ()
現在の作業ディレクトリを含む文字列、
nil
またはエラー文字列を返します。
.tex
さあ、始めましょう! では、このアイデアに基づいてファイルを作成しましょう:
\documentclass{article}
\edef\workingdir{\unexpanded\expandafter{\directlua{tex.write(lfs.currentdir())}}}
\begin{document}
Hello, I'm in \workingdir
\texttt{\meaning\workingdir}
\end{document}
\edef
私のオリジナルのアプローチの代わりにバージョンを提供してくれた egreg に感謝します。この方法では、パス内の特殊文字に関する問題を回避でき、メイン ドキュメントのプリアンブルに配置すると、ファイルで使用した\newcommand
ときに値が変更されなくなります。\workingdir
\input
私のマシンからのサンプル出力は次のとおりです。
さあ、行きましょう!:)
アップデート:作業ディレクトリの値を「固定」したくない場合は、 の\newcommand
代わりに を使用した最初の試みに頼ることができると思います\edef
。
\newcommand{\actualworkingdir}{%
\unexpanded\expandafter{\directlua{tex.write(lfs.currentdir())}}}
この方法では、lfs.currentdir()
常に要求に応じて発行されます。 両方のアプローチの違いはかなり大きいことに留意してください。