我正在使用 LuaLaTeX 包,其中包含一项功能,该功能会调用外部可执行文件(即需要 的东西-shell-escape
)来从不同的源文件生成 TeX 文件,然后将其\input
放入主文件中。例如,我输入\specialinclude{file.a}
,main.tex
它会调用外部可执行文件将其转换file.a
为file.tex
然后扩展为\input{file.tex}
。
我希望 latexmk 能够识别对 的依赖,file.a
这样它就知道main.pdf
如果file.a
发生更改就重建,即使实际包含的文件file.tex
并没有改变。我将latexmk
/lualatex
与-recorder
选项一起使用,成功识别了 的使用,file.tex
但没有识别file.a
。有没有办法手动告诉recorder
选项已输入文件?这将导致文件INPUT file.a
中出现一行main.fls
。我在想\recorder{file.a}
在调用 之前应该怎么做\specialinclude{file.a}
。
答案1
以下是三种解决方案:
由于
latexmk
还会检查.log
文件的依赖项,因此您可以通过在文件中写入适当的行latexmk
来确认是否存在依赖项。以下定义就是这样做的:file.a
.log
\recorder
\newcommand\recorder[1]{\typeout{(#1)}}
.fls
通过打开文件而不读取文件来获取文件名:\newread\tmpread \newcommand\recorder[1]{% \openin\tmpread=#1 \closein\tmpread }
无需让您的文档处理
file.a
,而是定义自定义依赖项以从 生成file.tex
。file.a
这样可以避免使用,并且具有仅在发生变化-shell-escape
时才调用外部程序的优点。file.a
哪种解决方案最适合您的情况取决于具体情况,例如,LuaLaTex 包除了简单地调用外部程序之外还能做什么。