Tikz-knots:在 foreach 循环中定义单独的线

Tikz-knots:在 foreach 循环中定义单独的线

我正在寻找有关foreach使用该knots包的 -loop 的解决方案。我发现,定义 foreach 循环并在其中使用 strands 不会产生任何输出,除非我使用 draw 选项。但是没有识别出任何结,因为红线似乎没有 id。看看左边的两张图片。

\foreach \x in {2,3,4} {
\strand [draw,red,->] (1,\x) -- (4,\x); % instead of [red,->]
}

重新排列循环几乎可以得到所需的输出。但该选项\strand [red,->]不会对所有线程执行所有选项。所有线程都是红色的,但只有其中一条线程的尖端有箭头。使用草稿模式,您可以看到只创建了一条线程,从循环的定义来看,这是有道理的。看看右边的两张图片。

所以我的问题是如何在 foreach 循环中创建单独的链?

\documentclass[tikz,border=5mm]{standalone}
%\documentclass[convert={density=1200,size=4320x3200,outext=.png}]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{knots}
%
\begin{document}
\begin{tikzpicture}[scale=1.0,>=latex']
%
\draw[fill=white] (0,0) rectangle (5,6);
%
\begin{knot}[ %draft mode=crossings,
clip width=5,
clip radius=6pt]
%
\strand [red,->]
    \foreach \x in {2,3,4} {
    (1,\x) coordinate (w\x) -- coordinate (e\x)(4,\x)
    };
%
\strand [thick,->] (2,1) -- (2,5);
\strand [thick,->] (3,1) -- (3,5);
%\flipcrossings {2}
\end{knot}
%
\end{tikzpicture}
\end{document}

上循环(非草稿/草稿模式)-- 来自完整代码的循环(非草稿/草稿模式)

答案1

您可以使用不启动组的循环。

\documentclass[tikz,border=5mm]{standalone}
%\documentclass[convert={density=1200,size=4320x3200,outext=.png}]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{knots}
%
\begin{document}
\begin{tikzpicture}[scale=1.0,>=latex']
%
\draw[fill=white] (0,0) rectangle (5,6);
%
\begin{knot}[ %draft mode=crossings,
clip width=5,
clip radius=6pt]
%
\edef\x{1}
\loop
\edef\x{\the\numexpr\x+1}
\strand [red,->]
    (1,\x) coordinate (w\x) -- coordinate (e\x)(4,\x);
\ifnum\x<4\repeat
%
\strand [thick,->] (2,1) -- (2,5);
\strand [thick,->] (3,1) -- (3,5);
%\flipcrossings {2}
\end{knot}
%
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容