在 TikZ 中使用路径修饰时出现尺寸过大错误

在 TikZ 中使用路径修饰时出现尺寸过大错误

连接路径装饰时发生错误。

! Dimension too large.
<to be read again> 
\relax 
l.12 ...lot[] ({-sin(\t r)}, {cos(\t r) + 5e-2*\t});
                                              
I can't work with sizes bigger than about 19 feet.
Continue and I'll use the largest value I can.

这是我的 MWE。

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}
    \begin{tikzpicture}
        \draw [domain=0:2.1*pi,variable=\t,smooth,samples=55, 
        decoration={
            markings,
            mark=at position 0.1 with {\arrow{latex}}}, 
            postaction={decorate}
            ]%
            plot[] ({-sin(\t r)}, {cos(\t r) + 5e-2*\t});
    \end{tikzpicture}
\end{document}

如果用 注释掉部分代码postaction=decorate,编译就会成功。这是错误还是我遗漏了什么?这个问题对我来说并不明显。

答案1

当您使用smooth选项时,这些点通过贝塞尔曲线连接。贝塞尔曲线有控制点。也许其中一个点落得太远并tikz发出抱怨。

解决方法是禁用该smooth选项并添加更多样本。

MWE如下:

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}
    \begin{tikzpicture}
        \draw [domain=0:2.1*pi,variable=\t,samples=105, 
        decoration={
            markings,
            mark=at position 0.1 with {\arrow{latex}}}, 
        postaction={decorate}
        ]%
        plot[] ({-sin(\t r)}, {cos(\t r) + 5e-2*\t});
    \end{tikzpicture}
\end{document}

产量:没有平滑选项的结果

相关内容