包含源文件名的变量是什么?

包含源文件名的变量是什么?

我正在编写一个将信息保存到外部文件的包。我想根据源文件命名该文件;例如 foo.tex -> foo.bar 但我找不到任何包含“foo”的变量。我很确定一定有一个,因为目录保存到 foo.toc。

有什么指点吗?

答案1

你想要的是宏\jobname。这不完全是文件名;引用TeX 常见问题解答

TeX 仅在原始 中保留其认为是作业的名称\jobname;这是首先交给 TeX 的文件的名称,删除了其目录名称和任何扩展名(例如.tex)。如果没有传递文件(即您正在以交互方式使用 TeX),则\jobname具有值(在这种情况下texput为文件赋予的名称)。.log

因此,如果您正在处理foo.tex\jobname将是foo(当然,这可能就是您想要的)。

答案2

您正在寻找\jobname

编辑:为了给我的答案增加一些价值——第 288-289 页LaTeX2e 来源包含 的定义\@starttoc,该命令从外部文件读取/写入 ToC 数据。此定义揭示了您问题的答案。

答案3

\usepackage{currfile}
Filename: \currfilename

答案4

\jobname在 LuaTeX 中, lua 端的等效内容是tex.jobname。在 LaTeX3 中,我们有

\documentclass{article}
\begin{document}
\jobname\\
\ExplSyntaxOn
\g_file_curr_dir_str/
\g_file_curr_name_str.
\g_file_curr_ext_str
\ExplSyntaxOff
\end{document}

一些用例可能会受益于ltfilehookLaTeX 内置的最新包,其中有一个\CurrentFile\CurrentFilePath...可在钩子指令中找到。

相关内容