\begin{filecontents}{foo.tex}
\def\foo{\jobname}
\end{filecontents}
\documentclass{article}
\begin{document}
\input{foo}
\foo
\end{document}
这将输出以下作业的名称:主文件不是“foo”。如何定义一个输出输入文件作业名称的宏?
\edef
也不起作用。
答案1
使用包currfile
,它跟踪宏中输入文件的文件名
\currfiledir
\currfilebase
\currfileext
\currfilename
\currfilepath
此外,\edef
必须用于在输入文件中扩展这些值,而不是当您返回主文件时:
\begin{filecontents}{foo.tex}
\edef\foo{\currfilebase}
\end{filecontents}
\documentclass{article}
\usepackage{currfile}
\begin{document}
\input{foo}
\foo
\end{document}