不明なところがあるのですが、誤った情報の訂正を含めての報告です。
\filename@area
は必ず/
で終わるデバッグ文を挿入して確認したはずなのに、見落としていました。
\@mylisting[#1]{\filename@area}{\filename@base.\filename@ext}
→無限ループ
再現します。原因はわかりません。
\mylisting{a/filename}
→NG
これも再現しました。
\filename@ext
が\relax
にもなっていないようです。またループ状態に陥ります。
デバッグ
以下のようなデバッグコードで改めて検証してみました。
\newcommand{\mylisting}[2][]{ \typeout{DEBUG --------------------} \typeout{DEBUG 第2引数[#2] filename@parse前}% \filename@base の前後で #2 が変化する %%% \filename@parse{#2} \typeout{DEBUG 第2引数[#2] filename@parse後} \edef\d{\filename@area}\typeout{DEBUG 第2引数[#2] filename@area後} \edef\f{\filename@base}\typeout{DEBUG 第2引数[#2] filename@base後} \edef\e{\filename@ext} \typeout{DEBUG 第2引数[#2] filename@ext後}% @ext を先に実行しても @base で変化 %%% \typeout{DEBUG area=[\filename@area][\d]} \typeout{DEBUG base=[\filename@base][\f]} \typeout{DEBUG ext=[\filename@ext][\e]} \typeout{DEBUG @ @ @ mylisting[#1]{\filename@area}{\filename@base.\filename@ext}} \typeout{DEBUG f b e mylisting[#1]{\d}{\f.\e}} \typeout{DEBUG --------------------} %%% \\@mylisting[#1]{\d}{\f.\e}% OK % \\@mylisting[#1]{\filename@area}{\filename@base.\filename@ext}% NG }
検証に用いたソースも念の為添付します。
a/b/c.tex や ./e.tex 添付していませんので pdflatex での処理可能なものを利用してください。