
Я пытаюсь нарисовать однозвенную диаграмму (вроде этой:https://loopspace.mathforge.org/HowDidIDoThat/TeX/Knots/#section.5) с использованием библиотеки узлов:
\begin{tikzpicture}
\begin{knot}[
flip crossing=2
]
\strand (1,0) circle[radius=2cm];
\strand[blue] (-1,0) circle[radius=2cm];
\end{knot}
\end{tikzpicture}
Однако я бы хотел, чтобы один из моих кругов был двухцветным. Идея в том, что звено представляет собой закрытие трехрядной косы, а один из кругов в звене происходит из двух прядей, поэтому я подумал, что было бы неплохо раскрасить его, чтобы показать это.
Сначала я думал о чем-то вроде этого:Как нарисовать двухцветную линию с помощью tikz. Однако, когда я изменил \strand[blue] на \strand[draw=blue,dash pattern= on 3pt off 5pt,thick,postaction={draw,red,dash pattern= on 3pt off 5pt,dash phase=4pt,thick}](-1,0) circle[radius=2cm];
, пробелы между пересечениями больше не отображаются:
Я также попробовал альтернативный подход, используя градиент из этого вопросаГрадиент цвета, следующий по траектории в TikZ, но, опять же, зазоры между переходами исчезли.
Япредполагаябиблиотека узлов каким-то образом не применяет правило зазора к постдействию / декорированию? Есть ли подходящий способ нарисовать двухцветную нить с помощью библиотеки узлов?
решение1
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{knots}
\begin{document}
\begin{tikzpicture}
\begin{knot}[
flip crossing=2,
clip width=10,
]
\strand[red, thick] (1,0) circle[radius=1.3cm];
\strand[
blue, thick,
only when rendering/.style={dash pattern=on 3pt off 5pt},
preaction={draw, red, thick, dash pattern=on 3pt off 5pt, dash phase=4pt},
](-0.5,0) circle[radius=1.3cm];
\end{knot}
\end{tikzpicture}
\end{document}