使用新版本 (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。还有进一步的解决方案。我一开始没有提到它,因为我从未使用过它。这个想法是使用fpu
PGF 的库(也许该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}
。然而,这会大大改变您的数字。