When I tried to come up with an answer to this question, I observed a strange behaviour of TikZ’s knots library. Or maybe it is not strange at all and I just overlooked something ...
Take this code:
\documentclass[tikz, border=0mm]{standalone}
\usetikzlibrary{knots, decorations.markings}
\begin{document}
\begin{tikzpicture}[
arrowmark/.style={draw=red, only when rendering/.style={postaction=decorate}}
]
\begin{knot}[
clip width=3,
]
%\strand (0,0) ellipse (20pt and 10pt); <-- uncomment for second image
\strand (0:20pt) arc (0:180:20pt and 10pt) arc (180:0:20pt and -10pt) -- cycle; <-- comment out for second image
\strand (0:1cm+20pt) arc (0:180:20pt and 20pt) arc (180:0:20pt and -20pt) -- cycle;
\strand[arrowmark, decoration={markings, mark=at position 0.5 with {\arrow{>}}}] (1,-1.5) .. controls (1.8,0.2) and (0.2,0.2) .. (1,-1.5);
\strand[arrowmark, decoration={markings, mark=at position 0.45 with {\arrow{>}}}] (1,-1.5) to[out=180, in=0] (-.5,0) .. controls (-1.25,0) and (-.75,-1.5) .. (1,-1.5);
%\flipcrossings{1,2,5} <-- uncomment for second image
\flipcrossings{1,4,6} <-- comment out for second image
\end{knot}
\filldraw [red] (1,-1.5) circle (1pt);
\end{tikzpicture}
\end{document}
It renders nicely as follows:
Now uncomment the two commented lines and comment out the two following lines instead (as indicated in the above code), then you (or at least I) will get (without the yellow highlighting, of course):
As can be cleary seen, the intersection of the rightmost red curl with the ellipse is not what I expect it to be. When I used two ellises originally, I had the same problem. I first thought that using an ellipse might be causing this. If I add the option draft mode=crossings, the relevant intersection seems to be not identified at all. I was unable to find something about this problem in the relevant documentation.
Actually one nice answer to the above linked questions also uses quite the same approach. There it seems to work with two ellises and two open paths. What is the difference here?




knotspackage (which is part ofspath3). – Jasper Habicht Dec 16 '21 at 10:13