我有一份包含多张图表的长文档。所有图表均使用 pgfplots 完成,我使用存储为单独文本文档的表格。例如,要绘制 big_table_with_data.txt 表中的数据,我创建了一个文件 figure1.tex:
\begin{tikzpicture}
\begin{axis}[colormap/jet, colorbar]
\foreach \i in {1, 13, 23, ..., 143}
\addplot+[scatter, mesh, point meta=\i]
table[x index=0, y index=\i]
{big_table_with_data.txt};
\end{axis}
\end{tikzpicture}
然后在我的主文档中我把
\begin{figure}
\input{figure1.tex}
\end{figure}
生成每个图表都需要花费大量时间,每当我编译整个文档时,都需要很长时间。有没有办法只编译一次图表?
我不要草稿版,也不要演示版,也不想对图表进行评论。我想要我的图表原封不动,但不想每次都生成。
我想要的是某种 LaTeX 版本控制。当 LaTeX 浏览所有图表时,它会检查自上次编译以来是否有任何更改,如果没有,它只会使用旧图表。
或者,也许我可以在序言的某个地方进行设置,LaTeX 不应该编译图形,而应该使用以前编译的图像?
那可能吗?
答案1
正如 percusse 所建议的,pgfplots 的外部化库确实可以解决问题
更多信息(包括 MWE)请参见第 7.1.1 章第 465 页 pgfplots 手册。
这个想法很简单:只需要在序言中添加以下两行:
\usepgfplotslibrary{external}
\tikzexternalize
然后所有 tikzpictures 都将生成为单独的文件。下次编译文档时,LaTeX 将使用现成的 pdf。
需要注意的重要一点:据我所知,没有简单的方法可以向文档中添加新图表。您可以把
\tikzset{external/force remake}
在文档中的某个地方重新制作此标记后的所有图表。如果您必须在文档开头添加新图表,我的建议是单独创建一个图表,然后手动更改文件的编号。这个问题提供了如何将编号更改为 number.extension 格式的文件的答案,这与这种情况非常接近。