我正在寻找有关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}