PGFPlots 外部 crossref 更新

PGFPlots 外部 crossref 更新

我正在使用 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}

创建此标准的过程是以下两次迭代:

  1. 用 运行它pdflatex
  2. make使用 Cygwin 等 Unix 客户端以及\jobname.makefile步骤 1 生成的运行。

但是,如果您将绘图的显示从 更改为blackblue如下所示:

\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% 确定这是否是一个错误,但为了找出原因,我将其添加到了跟踪器中这里

与此同时,您可以通过不将\refs 外部化来解决此问题,无论如何我都会建议这样做,因为它们“不花费编译时间”。您可以通过\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}

相关内容