使用该knots
包,它是 Andrew Stacey 的spath3,可以画出相互交叉的美丽路径。但是,将其与装饰结合时会出现问题:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{knots}
\usepgfmodule{decorations}
\begin{document}
\begin{tikzpicture}
\draw[decoration={markings, mark=at position 0.5 with {\arrow{>}}},postaction={decorate}] (0,1) -- (1,1);
\draw[knot=black,decoration={markings, mark=at position 0.5 with {\arrow{>}}},postaction={decorate}] (0,0) -- (1,0);
\end{tikzpicture}
\end{document}
如您所见,将knot
样式添加到路径会使装饰变为白色、不可见或其他任何效果。它不取决于我指定样式的顺序。
我该如何避免这种情况?这是一个功能还是一个错误?
答案1
该knot
样式使路径成为“双重”路径,只是与通常的双重路径不同,外部部分设置为背景,内部设置为所需的颜色。这就是允许结路径“穿透”另一条路径的原因。由于这不是使用样式的通常方式double
,箭头会从路径中拾取错误的颜色(和厚度)。您可以使用命令的可选参数覆盖箭头的默认值\arrow
。
\documentclass{article}
%\url{http://tex.stackexchange.com/q/193636/86}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{knots}
\usepgfmodule{decorations}
\begin{document}
\begin{tikzpicture}
\draw[decoration={markings, mark=at position 0.5 with {\arrow{>}}},postaction={decorate}] (0,1) -- (1,1);
\draw[knot=black,decoration={markings, mark=at position 0.5 with {\arrow[black,thin]{>}}},postaction={decorate}] (0,0) -- (1,0);
\draw[white,double=black,decoration={markings, mark=at position 0.5 with {\arrow[black,thin]{>}}},postaction={decorate}] (0,-1) -- (1,-1);
\end{tikzpicture}
\end{document}
(第三行表明问题是由double
而不是由包的任何其他功能引起的knot
。)