我们可以将引用放入外部化的 pgfplots 图像中吗?

我们可以将引用放入外部化的 pgfplots 图像中吗?

我有一些使用 TikZ 和 创建的图pgfplots。在标题中,我使用\ref{...}图标签来打印标记;这确实是一个很棒的功能。

现在,在向 arXiv 提交时,必须克服一些困难才能使文档与他们过时的 TeX Live(撰写本文时为 2011 年)一起编译。特别是,我使用 TikZ 外部化,因为 TikZ 已经发展了很多,并且将图形 PDF 与 LaTeX 源一起上传可以很好地避免问题。

现在的问题是,上述对pgfplots地块及其标签的引用无法解析;我得到的(??)不是标记。不用说,问题不是本地发生的。

这是我可以规避的事情吗(除了为 arXiv 对标记进行硬编码外),还是我必须忍受它(即对标记进行硬编码而不是使用参考机制)?

我没有给出 MWE,因为我认为向 arXiv 提交虚假文章是不合理的。

答案1

当前(3.0.0)TikZ 手册有这样的说法:

[\label在主文档中引用的外部化图形中] 由外部库自动实现。具体来说,\label外部化图形的内部会导致外部库为每个外部图像生成单独的辅助文件。这些文件称为imagename.dpth。[...] 当主文档加载图像时,它会将文件复制.dpth到主.aux文件中。

因此,当您发送预先准备好外部图表的文档时,您必须同时打包 PDF dpth文件。

答案2

拉斐尔的自我回答展示了如何正确地做到这一点。


不幸的是,有时我们不得不处理(出于可疑的安全原因)对允许上传的文件类型进行限制的系统(例如,“编辑经理”不允许文件名以 .dpth 结尾)或使用没有 TikZ 外部化的史前 LaTeX 版本。

如果你碰巧遇到这种不幸的情况,我的以下黑客可能会帮你省去麻烦。

假设您有一张外化为 的图片,external.pdf并附带external.dpth。重命名external.dpthexternal.tex并将您的 TikZ 图片替换为

\includegrapics{external}
\tikzexternalhack{external}

在您的预告中使用以下定义:

\makeatletter
\newcommand\tikzexternalhack[1]{%
    \write\@auxout{\noexpand\input{#1}}%
}
\makeatother

相关内容