我该如何更新 pgfplots 代码?或者我根本不应该尝试?

我该如何更新 pgfplots 代码?或者我根本不应该尝试?

应如何更新此代码以使其不需要密钥compat=1.9

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
  \begin{tikzpicture}[baseline]
    \begin{axis}[
      axis lines=left,
      xtick=\empty,
      ytick=\empty,
      tiny,
      ylabel=Edible Resources,
      xlabel=Nutritional Need,
      title=Distribution of Edibles,
      title style={font=\tiny},
      ]
      \addplot[ domain=0:10, color=blue ] {2*x};
    \end{axis}
  \end{tikzpicture}%
\end{document}

目标输出(使用 <code>compat=1.9</code>)

如果我移除compat键,轴标签就会离轴太远。

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
  \begin{tikzpicture}[baseline]
    \begin{axis}[
      axis lines=left,
      xtick=\empty,
      ytick=\empty,
      tiny,
      ylabel=Edible Resources,
      xlabel=Nutritional Need,
      title=Distribution of Edibles,
      title style={font=\tiny},
      ]
      \addplot[ domain=0:10, color=blue ] {2*x};
    \end{axis}
  \end{tikzpicture}%
\end{document}

没有 <code>compat</code>

我尝试在pgfplots手册中搜索“看似”的关键词,以及诸如此类的内容\empty,但我找不到任何东西,最终放弃了。


我问这个问题的部分动机是,我通常不清楚 的键状态compat是什么pgfplots。在大多数情况下,我认为compat键是临时的快速修复,以使现有代码正常工作。但是,我不确定这是否正确,pgfplots或者我是否不应该问这个问题。

也就是说,与其他软件包不同,在pgfplots的情况下保持向后兼容性似乎包括提供compat密钥。那么,难道我们根本就不期望相同的代码会产生相同的结果吗?compat在使用时始终指定一个密钥pgfplots,而不是更改它,这真的是最佳实践吗?如果是这样,当我想在新文档中使用来自不同文档的图,而以前的文档使用不同的值时,应该如何处理这种情况compat?我可以在文档中间继续切换吗?这样做明智吗?

答案1

创建新图时,应使用尽可能高的兼容性设置,以便能够使用所有新功能和最新代码。目前这是

\usepackage{pgfplots}
\pgfplotsset{compat=1.14}

当将图从兼容性较低的旧文档移动到新文档时,请将较低的兼容性级别作为“注意可能会出现问题!”的指示。

因此,使用更高级别测试绘图,并与旧输出进行比较。如果新输出没问题(在很多情况下都是这样),则无需执行任何操作。如果输出有误,您可以调整绘图代码,或者在本地更改兼容级别:

\begin{figure}
\pgfplotsset{compat=1.4}
...
\caption{...}
\end{figure}

文档(2.2.2 可能需要注意的旧功能 ff)提到了一些其他键,您可以使用它们将旧图适配到较新的 pgfplots 版本。

答案2

\pgfplotsset{compat=...}简单地说,不要删除\pgfplotsset{compat=newest}

然而,禁忌症。如果未来的兼容性对您来说是个问题,只需将\pgfplotsset{compat=1.14}

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
    \begin{tikzpicture}[baseline]
    \begin{axis}[
    axis lines=left,
    xtick=\empty,
    ytick=\empty,
    tiny,
    ylabel=Edible Resources,
    xlabel=Nutritional Need,
    title=Distribution of Edibles,
    title style={font=\tiny},
    ]
    \addplot[ domain=0:10, color=blue ] {2*x};
    \end{axis}
    \end{tikzpicture}%
\end{document}

在此处输入图片描述

答案3

在我看来,该compat机制是 pgfplots 包的更好功能之一。它允许作者添加、更改或更正行为,而不会破坏旧文档,这些文档将继续正常工作。

例如,我的文档中有很多 1.11 之前的图表。即使在 1.11 中(很好!)切换到axis cs默认坐标系,它们现在也能完美运行。在新文档中,我真的很喜欢新的默认设置,但更改所有旧文档会很麻烦……两全其美。

作为反例,我被论证顺序的改变困扰了atn2好几次......

所以我认为你的问题恰恰相反。如果你在 1.3 之前准备了文档,你可能注意到了这个问题,手动移动标签。如果没有compat,或者compact版本低于 1.3,文档仍将正确编译。如果没有 compat 功能,作者会修复该错误,现在您必须重新编辑文档以修复过度转换。

当您准备新图表时,您应该使用当前 pgfplots 版本的兼容级别。这样,它以后将保持不变。如果有人尝试使用太旧的 pgfplots 版本进行编译,则会发出警告。

相关内容