我最近发现了一些旧代码,但它无法像以前那样编译。这是一个 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 库中的行为/错误发生了变化。
问题被追踪为
(已删除)评论提到https://sourceforge.net/p/pgfplots/bugs/122/(与组图相结合的填充问题)
作为软件包的作者,我对您的痛苦深表歉意,并会寻找这些问题。