I want to reproduce the following bracket polynomials, but I'm quite clueless on how to do so. From what I've searched, people often use tikz to reproduce these knots. But how to draw knot using tikz? Also, how to draw the Reidemeister moves (the diagram inside the circles in the below pictures) with tikz? Helps would be really appreciated.
-
Maybe look here and here...– user121799Jul 30, 2018 at 6:32
-
But the reidemeister diagrams are really weird and I haven't seen any tutorial about that.– MS1902Jul 30, 2018 at 6:58
-
2I guess I'd recommend to look at Loop space's homepage.– user121799Jul 30, 2018 at 7:10
-
@MS1902 Excuse me for my request? But what is the title of your book to understand this matter?– SebastianoJul 30, 2018 at 10:24
-
@marmot Hi, but the 4th and 5th pictures how are they created?– SebastianoJul 30, 2018 at 10:25
1 Answer
I do not know what "4th and 5th picture" precisely refers to, but I hope they are included in the following collection, which makes use of the knots
library as well as some trick (rubout
) mentioned in its manual. One could make the code shorter by introducing a macro for \vcenter{\hbox{...}}
(I once got downvoted for doing that...) and loading the braket
package and so on, but these are details.
\documentclass[fleqn]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{% this is all from https://loopspace.mathforge.org/HowDidIDoThat/TeX/Knots/
knots,
hobby,
decorations.pathreplacing,
shapes.geometric,
calc
}
\tikzset{mypoly/.style={ultra thick}}
\tikzset{% and this is from Andrew Stacey's homepage except that I removed "red";-)
knot diagram/every strand/.append style={
mypoly
},
show curve controls/.style={
postaction=decorate,
decoration={show path construction,
curveto code={
\draw [blue, dashed]
(\tikzinputsegmentfirst) -- (\tikzinputsegmentsupporta)
node [at end, draw, solid, inner sep=2pt]{};
\draw [blue, dashed]
(\tikzinputsegmentsupportb) -- (\tikzinputsegmentlast)
node [at start, draw, solid, inner sep=2pt]{}
node [at end, fill, blue, ellipse, inner sep=2pt]{}
;
}
}
},
show curve endpoints/.style={
postaction=decorate,
decoration={show path construction,
curveto code={
\node [fill, blue, ellipse, inner sep=2pt] at (\tikzinputsegmentlast) {}
;
}
}
}
}
\begin{document}
\begin{align}
\left\langle\vcenter{\hbox{
\begin{tikzpicture}
\begin{knot}[
consider self intersections=true,
clip width=3,
flip crossing=1,
ignore endpoint intersections=false
]
\strand[overlay] (-1,0) to[out=90,in=135] (0,0) to[out=-45,in=-90] (1,0)
to[out=90,in=45] (0,0) to[out=-135,in=-90] cycle;
\path[use as bounding box] (-1.05,-0.35) rectangle (1.05,0.35);
\end{knot}
\end{tikzpicture}}}\right\rangle&=
q\,\left\langle\vcenter{\hbox{\begin{tikzpicture}
\draw[mypoly] (-1,0) to[out=90,in=160] (-0.8,0.3)
to[out=-20,in=90] (-0.1,0) to[out=-90,in=20] (-0.8,-0.3) to[out=-160,in=-90] cycle;
\draw[mypoly] (1,0) to[out=90,in=20] (0.8,0.3)
to[out=-160,in=90] (0.1,0) to[out=-90,in=160] (0.8,-0.3) to[out=-20,in=-90] cycle;
\end{tikzpicture}}}\right\rangle
+q^{-1}\,
\left\langle\vcenter{\hbox{\begin{tikzpicture}
\draw[mypoly] (-1,0) to[out=90,in=160] (-0.8,0.3)
to[out=-20,in=180] (0,0.15) to[out=0,in=-160] (0.8,0.3) to[out=20,in=90] (1,0)
to[out=-90,in=-20] (0.8,-0.3) to[out=160,in=0] (0,-0.15) to[out=180,in=20]
(-0.8,-0.3) to[out=-160,in=-90] cycle;
\end{tikzpicture}}}\right\rangle\notag\\
&=q\,\delta^2+q^{-1}\,\delta=-q^3\,\delta\;.
\end{align}
\dots
\begin{align}
\left\langle\vcenter{\hbox{\begin{tikzpicture}
\begin{knot}[
consider self intersections=true,
clip width=3,
flip crossing=1,
ignore endpoint intersections=false
]
\strand[overlay,xscale=-1] (-1,0) to[out=90,in=160] (-0.8,0.3)
to[out=-20,in=180] (0,0.15) to[out=0,in=-160] (0.8,0.3) to[out=20,in=90] (1,0)
to[out=-90,in=-20] (0.8,-0.3) to[out=160,in=-90] (-0.2,-0.2)
to[out=90,in=90] (0.2,-0.2) to[out=-90,in=20]
(-0.8,-0.3) to[out=-160,in=-90] cycle;
\path[use as bounding box] (-1.05,-0.35) rectangle (1.05,0.35);
\end{knot}
\end{tikzpicture}}}\right\rangle=-q^3\,\delta\;.
\end{align}
\tikzset{rubout/.style={ultra thick,double=black,draw=gray!30,double distance=1.6pt}}
\begin{align}
q^4\,J\!\left(\vcenter{\hbox{\begin{tikzpicture}
\node[circle,fill=gray!30,minimum width=1cm] (circ){};
\draw[mypoly] (circ.-45) -- (circ.135);
\draw[rubout] (circ.45) -- (circ.-135);
\end{tikzpicture}}}\right)+
q^{-4}\,J\!\left(\vcenter{\hbox{\begin{tikzpicture}
\node[circle,fill=gray!30,minimum width=1cm] (circ){};
\draw[mypoly] (circ.45) -- (circ.-135);
\draw[rubout] (circ.-45) -- (circ.135);
\end{tikzpicture}}}\right)&=\left(q^2+q^{-2}\right)\,J\!\left(
\vcenter{\hbox{\begin{tikzpicture}
\node[circle,fill=gray!30,minimum width=1cm] (circ){};
\draw[mypoly] (circ.45) to[out=-135,in=135] (circ.-45);
\draw[mypoly] (circ.135) to[out=-45,in=45] (circ.-135);
\end{tikzpicture}}}\right)
\end{align}
\end{document}
-
Kind friend @marmot into your code there are many error of compilation with Papeeria. Undefined control sequence. [\end{align}] /main.tex :72 Missing number, treated as zero. [\end{align}] /main.tex :72 Illegal unit of measure (pt inserted). [\end{align}] /main.tex :72 Missing number, treated as zero. [\end{align}] /main.tex :72 Illegal unit of measure (pt inserted). [\end{align}] /main.tex :72 Missing number, treated as zero. [\end{align}] /main.tex :72 Illegal unit of measure (pt inserted). [\end{align}] and others. Jul 30, 2018 at 19:21
-
@Sebastiano Thanks! What is Papeeria? When I compile my MWE with
pdflatex
on my TeXLive 2018 distribution, there is no error.– user121799Jul 30, 2018 at 19:22 -
@Sebastiano I get "Requested project not exists" ;-)– user121799Jul 30, 2018 at 19:25
-
May I suggest to have a look to this answer of mine, too, for an illustration of how to use standard TeXniques to make the symbols scalable with the math style?– GuMJul 30, 2018 at 19:42