我正在使用 PGFPlots 包及其external
库来完成我的论文。总的来说,它工作得很好,非常有帮助。但我在尝试更新绘图形状的交叉引用时遇到了问题。我制作了一个使用 PGFPlots 生成的绘图的最小工作示例,并在正文中进行了交叉引用。
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{external}
\pgfkeys{
/tikz/external/mode=list and make
}
\pgfplotsset{width=7cm,compat=newest}
\tikzexternalize[shell escape=-enable-write18]
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[color=black] coordinates {
(0,0) (0.5,0.5) (1,1) };
\label{plot:plot1}
\end{axis}
\end{tikzpicture}
Plot 1 looks like this:~\ref{plot:plot1}.
\end{document}
创建此标准的过程是以下两次迭代:
- 用 运行它
pdflatex
。 make
使用 Cygwin 等 Unix 客户端以及\jobname.makefile
步骤 1 生成的运行。
但是,如果您将绘图的显示从 更改为black
,blue
如下所示:
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{external}
\pgfkeys{
/tikz/external/mode=list and make
}
\pgfplotsset{width=7cm,compat=newest}
\tikzexternalize[shell escape=-enable-write18]
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[color=blue] coordinates {
(0,0) (0.5,0.5) (1,1) };
\label{plot:plot1}
\end{axis}
\end{tikzpicture}
Plot 1 looks like this:~\ref{plot:plot1}.
\end{document}
并运行相同的过程,交叉引用不会更新。我可以通过首先删除以开头的交叉引用文件来强制更新它,\jobname-figure_crossref0,
但我希望有一种方法可以在每次更新图表时自动更新它们。
我更希望它能与包含更多图形的文档一起工作,这些图形放置在多个文件夹中,通过类似于\tikzsetnextfilename{myFolder/myPlotName}
每个文件夹之前的命令\tikzpicture
。
答案1
我不能 100% 确定这是否是一个错误,但为了找出原因,我将其添加到了跟踪器中这里。
与此同时,您可以通过不将\ref
s 外部化来解决此问题,无论如何我都会建议这样做,因为它们“不花费编译时间”。您可以通过\tikzset{/tikz/external/export next=false}
在命令前面添加来避免外部化\ref
。
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{
external,
}
\pgfplotsset{
width=7cm,
compat=newest,
}
\tikzexternalize[
% mode=list and make,
]
% command to switch on/off the externalization of the next picture
\newcommand*{\TE}{%
\tikzset{
/tikz/external/export next=false,
}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[color=black] coordinates {
(0,0) (0.5,0.5) (1,1)
};
\label{plot:plot1}
\end{axis}
\end{tikzpicture}
Plot~1 looks like this:~\TE\ref{plot:plot1}.
\end{document}