![tikz knots 包的行为不一致?](https://linux22.com/image/438448/tikz%20knots%20%E5%8C%85%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%B8%8D%E4%B8%80%E8%87%B4%EF%BC%9F.png)
我正在尝试使用 knots 包绘制正半扭曲。我预计每条新线都位于前几条线之上,但事实并非如此。在这个例子中,第二条(三条中的)位于顶部:
\documentclass[tikz]{standalone}
\usetikzlibrary{knots}
\begin{document}
\begin{tikzpicture}
\begin{knot}[clip width=2, consider self intersections]
\strand (0,1) .. controls +(0:.8) and +(180:.5) .. (1,0);
\strand (0, .75) .. controls +(0:.5) and +(180:.5) .. (1,.25);
\strand (0,0) .. controls +(0:.4) and +(180:.5) .. (1,1);
\end{knot}
\node at (0.9, 0.75) {\vdots};
\node at (0.1, 0.4) {\vdots};
\end{tikzpicture}
\end{document}
此外,当我交换第一股和第三股的线时,有一个交叉无法被识别:
这是错误还是功能?正如我所说,我正试图做出积极的半扭曲。
答案1
总结 我需要写更好的文档。
与我设计此包时使用的图表相比,您的图表实际上相当小。这不是问题本身,但这意味着默认长度是为较大的图表设置的,对于像您这样的图表,需要减少默认长度。
首先,没有考虑右下角的交叉口任何一个两个版本(使用您已有的线束或按照您描述的顺序更改线束)。这是因为默认值为end tolerance
,14pt
约为半厘米。由于您的整个图表适合 1 厘米的正方形,因此其中一个交叉点在线束末端半厘米以内也就不足为奇了。因此,第一步是将 减小到end tolerance
更适合您的图表的值。
您在图表的第一个版本中看到此交叉的原因在于,当绘制左侧交叉(中间的线穿过)时,剪辑区域非常大,以至于它也包含右侧交叉。该大小由 控制,clip radius
默认值为10pt
。
在相关的地方画圈表示如下:
(draft mode=crossings
对于调试非常有用,因为它可以显示正在找到哪些交叉点)
所以为了解决这个问题,我们需要按照上面描述的方法减小尺寸。
\documentclass{article}
%\url{https://tex.stackexchange.com/q/611824/86}
\usepackage{tikz}
\usetikzlibrary{knots}
\begin{document}
\begin{tikzpicture}
\begin{knot}[
clip width=2,
% draft mode=crossings,
end tolerance=3pt,
clip radius=3pt,
]
\strand[red] (0,1) .. controls +(0:.8) and +(180:.5) .. (1,0);
\strand[green] (0, .75) .. controls +(0:.5) and +(180:.5) .. (1,.25);
\strand[blue] (0,0) .. controls +(0:.4) and +(180:.5) .. (1,1);
\end{knot}
\node at (0.9, 0.75) {\vdots};
\node at (0.1, 0.4) {\vdots};
\end{tikzpicture}
\end{document}
这将产生以下内容:
顺便说一句,你对哪条链应该是上链的直觉是错误的。你说“我以为每一根新线都会位于前几根线之上“。由于无论是否应该翻转,每个交叉点都会重新渲染,因此我可以选择默认选择较低或较高的数字作为超链。我记不清为什么——但可能纯粹是出于实用的编程原因——我选择了较低的数字,这样交叉点看起来就像较早的链在较晚的链之上。