LaTeX 中可以对图形进行版本控制吗?

LaTeX 中可以对图形进行版本控制吗?

我有一份包含多张图表的长文档。所有图表均使用 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 格式的文件的答案,这与这种情况非常接近。

相关内容