在较新版本的 PGF 中绘图时,如何避免“尺寸太大”错误?

在较新版本的 PGF 中绘图时,如何避免“尺寸太大”错误?

使用新版本 (2.10) 的 PGF 后,我的旧 TikZ 代码的某些部分无法正常运行。例如,幂函数的图:

\documentclass{minimal} 
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}[scale=6,domain=0:1]
  \draw[domain=0.0000125:1] plot (\x,{(\x)^(0.5)-\x});
 \end{tikzpicture}
\end{document}

我现在得到了“尺寸太大”的错误。

这个问题与幂函数有关:\draw[domain=0.0000125:1] plot (\x,{(\x)^(2)-\x});在新版本下根本不会引起任何问题。更具体地说,问题似乎在于求平方根。

我很久以前就注意到了这个问题,但由于我能够恢复到旧版 PGF(2.00),上面的代码不会出现任何问题,所以我没有费心去问这个问题。然而现在,当其他人运行我的代码时,他们经常会遇到问题,因为他们使用的是较新版本的 PGF。

我的问题是:

我怎样才能重写代码,使得预期函数在当前版本的 PGF 下能够顺利绘制?

答案1

显然,这是(曾经是) pgf 2.10 中的一个错误:我可以使用 pgf 2.10 重现它,并且它可以在当前的 pgf CVS 中运行。

作为一种解决方法,我建议使用sqrt(x)似乎使用特殊实现的方法 - 它在 pgf 2.10 中也可以工作。

要真正解决问题,您可能需要升级到较新的 pgf 版本(我相信 texample.net 上仍然存在不稳定的 pgf 版本(?))。

如果不可行,您可能需要更多地解释您的用例,以便其他人可以对替代方案发表评论。

编辑

根据您的评论,您确实在寻找一种更通用的解决方案,而无需升级 pgf。还有进一步的解决方案。我一开始没有提到它,因为我从未使用过它。这个想法是使用fpuPGF 的库(也许该fp库也可以完成这项工作)。

使用fpu,解决方案如下:

\documentclass{minimal} 
\usepackage{tikz}
\usepgflibrary{fpu}%----- this
\begin{document}
 \begin{tikzpicture}[scale=6,domain=0:1]
  \draw[domain=0.0000125:1,
     /pgf/fpu,/pgf/fpu/output format=fixed%------ this
  ] plot (\x,{(\x)^(0.8)-\x});
 \end{tikzpicture}
\end{document}

我想这总是有效的。如果替换内部 PGF 数学引擎(但只针对特定的绘图命令)。该解决方案会对您的文档进行微小的更改,并且根本不会改变您的图形的性质。

如果您通常对绘图感兴趣(可能具有更灵活的绘图处理程序、3d 或大数据范围,并结合完整的轴),您可能还想看看\usepackage{pgfplots}。然而,这会大大改变您的数字。

相关内容