如何用 tikz 结和装饰修复这个问题?

如何用 tikz 结和装饰修复这个问题?

使用该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。)

带箭头的线

相关内容