Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I was wondering if anyone could suggest software/packages to create nice knot diagrams (hopefully with a link to images they have made in the past).

I have used xy-pic recently but am mainly interested in hearing about other options.

share|improve this question
    
See also syzygy module of Asymptote for some specific sorts of knots. katlas.math.toronto.edu/drorbn/index.php?title=06-1350/… –  Leo Liu May 2 '11 at 14:03
    
If you're interested in only a few knots, you might want to take a look at the blue knot gallery of Jim Belk. –  moose Nov 8 '13 at 18:47

2 Answers 2

I have a prototype package for this using TikZ/PGF. At the moment, it is a bit basic as it was originally designed to draw very specific link diagrams and only afterwards did I start to extract the more general bits. Nonetheless, it can produce quite nice knot diagrams (I think) and I'd be happy to hear ideas on how it could be improved. You can get it from my homepage (when it is a little more polished then I'll put it on CTAN).

Here are some samples to whet your appetite. First, the preamble for all these examples:

\documentclass{article}
\usepackage{brunnian}

\usetikzlibrary{%
  arrows%
}

\tikzset{every path/.style={red,line width=2pt},every node/.style={transform shape,knot crossing,inner sep=1.5pt},>=triangle 60,text node/.style={rectangle,transform shape=false,black}}

Next, a trefoil

\begin{tikzpicture}
\foreach \brk in {0,1,2} {
\begin{scope}[rotate=\brk * 120]
\node (k\brk) at (0,-1) {};
\end{scope}
}
\draw (0,0) \foreach \brk in {0,1,2} {let \n0=\brk, \n1={int(Mod(\brk+1,3))}, \n2={int(Mod(\brk+2,3))} in (k\n0) .. controls (k\n0.16 south east) and (k\n1.16 south west) .. (k\n1.center) .. controls (k\n1.4 north east) and (k\n2.4 north west) .. (k\n2)} (k2);
\end{tikzpicture}

trefoil

This extends very easily to, for example, a cinquefoil:

\begin{tikzpicture}
\foreach \brk in {0,...,4} {
\begin{scope}[rotate=\brk * 72]
\node (k\brk) at (0,-1.5) {};
\end{scope}
}
\draw (0,0) \foreach \brk in {0,...,4} {let \n0=\brk, \n1={int(Mod(\brk+1,5))}, \n2={int(Mod(\brk+2,5))} in (k\n0) .. controls (k\n0.16 south east) and (k\n1.16 south west) .. (k\n1.center) .. controls (k\n1.4 north east) and (k\n2.4 north west) .. (k\n2)} (k2);
\end{tikzpicture}

cinquefoil

\begin{tikzpicture}
\foreach \brk in {0,...,4} {
\begin{scope}[rotate=-\brk * 72]
\node (k\brk) at (0,-1.5) {};
\pgfmathtruncatemacro{\brl}{\brk+97}
\node[text node] at (0,2) {\(\char\brl\)};
\end{scope}
}
\node[text node] at (0,0) {\(f\)};
\node[text node] at (126:2.5) {\(g\)};
\draw (0,0) \foreach \brk in {0,...,4} {let \n0=\brk, \n1={int(Mod(\brk-1,5))}, \n2={int(Mod(\brk-2,5))} in (k\n0) .. controls (k\n0.16 south east) and (k\n1.16 south west) .. (k\n1.center) .. controls (k\n1.4 north east) and (k\n2.4 north west) .. (k\n2)} (k2);

\end{tikzpicture}

(K)not sure what this one is called, it's an obvious extension of the figure 8 knot:

sort of figure 8ish

\begin{tikzpicture}
\node[rotate=45] (tl) at (-1,1) {};
\node[rotate=-45] (tr) at (1,1) {};
\edef\twists{10}
\foreach \brk in {0,...,\twists} {
\node (m\brk) at (0,-1 - \brk) {};
}
\foreach \brk in {1,...,\twists} {
\pgfmathparse{int(\brk - 1)}
\edef\brl{\pgfmathresult}
\draw (m\brk) .. controls (m\brk.4 north west) and (m\brl.4 south west) .. (m\brl.center);
\draw (m\brk.center) .. controls (m\brk.4 north east) and (m\brl.4 south east) .. (m\brl);
}
\draw (m0) .. controls (m0.8 north west) and (tl.3 south west) .. (tl.center);
\draw (m0.center) .. controls (m0.8 north east) and (tr.3 south east) .. (tr);
\draw (tl.center) .. controls (tl.16 north east) and (tr.16 north west) .. (tr);
\draw (m\twists) .. controls (m\twists.32 south east) and (tr.32 north east) .. (tr.center);
\draw (m\twists.center) .. controls (m\twists.32 south west) and (tl.32 north west) .. (tl);
\draw (tl) -- (tr.center);
\end{tikzpicture}

Also have examples of the Reidemeister moves and likewise. Most of the images listed at this nLab page were done using this package and then exported to SVG via tex4ht. All of the images at this page were done using this package. In particular, the following monstrosity!

iterated Brunnian link with inscription

share|improve this answer
    
thanks for the links and nice examples! I think I'll have some fun fiddling around with this –  confusedmath May 2 '11 at 15:10

Run with xelatex or use package auto-pst-pdf or run latex->dvips->ps2pdf

\documentclass{article}
\usepackage{pst-knot}
\begin{document}

\begin{pspicture}(-2,-2)(5,2)
 \psKnot[linewidth=3pt,linecolor=red](0,0){3-1}
 \psKnot[linewidth=3pt,linecolor=blue](4,0){4-1}
\end{pspicture}

\end{document}

enter image description here

The documentation explains the meaning of 3-1 and 4-1

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.