我在一份报告中使用了standalone
Martin Scharrer 编写的软件包。我读到这Martin 的回答是,如果文档使用[mode=buildnew]{standalone}
包加载,那么对于使用 包含的每张图片\includestandalone[<options>]{<filename>}
,使用 进行的编译pdflatex -shell-escape main
将编译所有\includesstandalone
'ed 文件编译为图形并构建这些图形如果源文件较新比现有的图形文件。
我的问题是,如果文件tikzpic.tex
包含来自另一个数据文件的绘图数据,这是否也有效?因为如果在数据文件中进行了更改,那么包是否standalone
仍将包含旧数据绘图的 pdf?
答案1
虽然[mode=buildnew
] 选项standalone
非常巧妙,但它不具有传递性。也就是说,它调用重新编译仅当源文件本身比 PDF 更新时,但不会将此测试递归扩展到源文件的进一步依赖项。
一种可行的但未经测试的解决方法可能是使用[mode=build]
,即始终调用编译器,但使用make
(使用适当的Makefile
)或作为独立的编译器可执行文件。(在文档中latexmk
查找latex
+latexoptions
或)。command
standalone
因此,依赖关系处理将委托给make
或latexmk
,它们考虑递归依赖关系。然而,代价是编译时间会略长,因为外部编译器总是被调用——即使它不需要做任何工作。