如何让 TikZ 外部图形通过图形的哈希值来命名而不是按顺序命名?

如何让 TikZ 外部图形通过图形的哈希值来命名而不是按顺序命名?

我正在使用\usepackage{tikz}\usepackage{pgfplots}\usepgfplotslibrary{external}\tikzexternalize。我的图形对 TeX 的转换非常慢(大约需要几分钟),所以我很高兴有\tikzexternalize。但是,每当我重新排序图形时,它们都会被重新编译,即使图形的内容没有改变。

理想情况下,我想让图形名称成为图形内容的某种哈希值;可以做到吗?

我也可以接受一个版本,在这个版本中我必须传递一个额外的可选参数\begin{tikzpicture}或它的某个变体(我说“额外的”是因为我经常传递[only marks]\begin{tikzpicture}),定义该图形的图形名称。

答案1

external库现在无人维护,建议改用较新的替代方案之一(例如此评论)。

memoize默认情况下使用 MD5 和来命名“externs”,因此即使项目被重新排序或通过早期插入在文档中推到后面,也可以避免重新编译。不仅可以记忆图像,而且与库相比,包还具有各种其他优势external。请参阅https://tex.stackexchange.com/a/698555/

robust-externalize似乎也在文件名中使用哈希,尽管我个人没有亲自尝试过这个包。作者在手册的介绍中列出了这两个包的相对优势和劣势。但请注意,的评估memoize并不总是公平的,或者至少并不总是适用于现在发布到 CTAN 的版本。

相关内容