tikz 节点包中三点交叉处的翻转行为

tikz 节点包中三点交叉处的翻转行为

我正在使用 Andrew Stacey 的奇妙结包,但无法按我想要的顺序显示三点交叉点。请考虑以下情况:

\documentclass{amsart}
\usepackage{tikz} 
\usetikzlibrary{positioning,knots}

\begin{document}

\[
\begin{tikzpicture}

\node (KS1) at (0,0){};
\node (KS2) [below=1 of KS1]{};
\node (KS3) [below=1 of KS2]{};
\node (KC1) [right=1 of KS2] {};
\node (KC2) [right=1 of KC1] {};
\node (KT1) [above right=1 and 1 of KC2]{};
\node (KT2) [below=1 of KT1]{};
\node (KT3) [below=1 of KT2]{};

\begin{knot}[draft mode=crossings]
\strand[->] (KS1)
to [out=0, in=135] (KC1)
to [out=-45,in=-135] (KC2)
to [out=45, in=180] (KT1);
\strand[->] (KS2)
to [out=0, in=180] (KC1)
to [out=0, in=180] (KC2)
to [out=0, in=180] (KT2);
\strand[->] (KS3)
to [out=0, in=-135] (KC1)
to [out=45, in=135] (KC2)
to [out=-45, in=180] (KT3);
\flipcrossings{1,3,5,6,4,2}
\end{knot}

\end{tikzpicture}
\]

\end{document}

产生

三重穿越

我希望链 1 位于顶部以便进行正确的交叉。我在 \flipcrossings 中尝试了 {2,4,6} 的每个子集,但没有组合导致链 1 位于顶部。(事实上,我还尝试了每个子集的每个顺序,以防交叉数字在途中被打乱,我还尝试了更改链的指定顺序,但我不会说我尝试了每个链引入顺序的每个翻转子集的每个顺序。)

有没有办法让第 1 股显示在右侧交叉口的顶部?

(关于三重交叉的附注:理论上,最好有一种方法可以单独控制交叉处每条线的剪辑宽度,以便能够清楚地指示所有三条线的交叉顺序---也就是说,将前线完全拉长,中间线的交叉间隙较小,后线的交叉间隙较大。虽然我知道实现这一点可能会带来比它本身更多的麻烦,因为对多点交叉的需求可能很低!)

答案1

您的图表中出现了一些奇怪的现象,我承认我不太明白,所以这只是我试图弄清楚的临时解决办法。该knots包的设计并没有真正考虑到三重交叉点,因此其行为可能会产生奇怪的副作用。

有一个\redraw命令可以让你指定在特定位置重新绘制的线束。使用这个命令,我可以在第二个交叉点处将第一条线束放在顶部。

\documentclass{amsart}
%\url{https://tex.stackexchange.com/q/438822/86}
\usepackage{tikz} 
\usetikzlibrary{positioning,knots}

\begin{document}

\[
\begin{tikzpicture}

\node (KS1) at (0,0){};
\node (KS2) [below=1 of KS1]{};
\node (KS3) [below=1 of KS2]{};
\node (KC1) [right=1 of KS2] {};
\node (KC2) [right=1 of KC1] {};
\node (KT1) [above right=1 and 1 of KC2]{};
\node (KT2) [below=1 of KT1]{};
\node (KT3) [below=1 of KT2]{};

\begin{knot}[draft mode=crossings]
\strand[->] (KS1)
to [out=0, in=135] (KC1)
to [out=-45,in=-135] (KC2)
to [out=45, in=180] (KT1);
\strand[->] (KS2)
to [out=0, in=180] (KC1)
to [out=0, in=180] (KC2)
to [out=0, in=180] (KT2);
\strand[->] (KS3)
to [out=0, in=-135] (KC1)
to [out=45, in=135] (KC2)
to [out=-45, in=180] (KT3);
\redraw{1}{(KC2)}
\end{knot}

\end{tikzpicture}
\]

\end{document}

顺便说一句,最好使用 样式\begin{center} ... \end{center}来使某些文本居中,而不是\[ .. \]

上述代码生成以下图片:

三重交叉口

相关内容