输入文件的作业名称?

输入文件的作业名称?
\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}

相关内容