pgfplots+fillbetween 代码不再正确编译

pgfplots+fillbetween 代码不再正确编译

我最近发现了一些旧代码,但它无法像以前那样编译。这是一个 MWE:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage[english]{babel}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{calc}
\pgfplotsset{width=5cm,height=5cm,compat=newest}

\begin{document}
\begin{tikzpicture} 
  \begin{scope}[local bounding box=sa]
  \begin{axis}[
    very thick,
    axis y line=center,
    axis x line=center,
    xtick=\empty,
    ytick=\empty,
    ymin=-.7,ymax=6,
    xmin=-4,xmax=4
  ]
  \addplot[red,domain=-4:4,samples=100]{ .35*x^2 };
  \addplot[name path=A,blue,samples=100]{ .75*x^2 };
  \addplot[name path=B,blue,samples=100]{ .1*x^2 };
  \addplot[blue!40] fill between[of=A and B];
  \end{axis}
  \end{scope}

  \draw ($ (sa.north east) + (.1,.1) $) rectangle ($ (sa.south west) + (-.1,-.1) $);        
\end{tikzpicture}
\end{document}

以下是用来生成的代码: 它应该是什么样子 现在它生成的结果如下: 现在是什么样子的

一些东西:

  • 尽管我在轴描述中指定了“非常粗”,但线条不再粗。如果我注释掉“填充之间”行(\end{axis} 之前的最后一行),线条就会恢复到正确的粗细。
  • 图周围的边界框大小不对;现在右侧有一些额外的空间。如果我注释掉“填充之间”行,这个问题也会得到解决。
  • 显然,命令之间的填充不起作用。但是,如果我注释掉“范围”环境,我可以让填充重新出现,但线条粗细仍然混乱,并且多余的空间仍然存在。

当我使用较旧的系统时,我得到了所需的结果(例如在 Overleaf.com 上运行,我相信它使用 texlive 2014)。但是如果我尝试使用 Miktex 2.9 或 texlive 2015(两者均已更新所有软件包),我得到的是垃圾结果。

这里可能发生什么事?

答案1

正如您已经猜到的那样,您偶然发现了回归问题,即 fillbetween 库中的行为/错误发生了变化。

问题被追踪为

作为软件包的作者,我对您的痛苦深表歉意,并会寻找这些问题。

相关内容