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.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I draw the cyclic quiver like in the url below?


enter image description here

I tried and wrote the following but it is far from what I want. Would you please help me? Thank you.

\usepackage{tikz-cd, mathdots}
  & & & \pnt{1} \ar[rd, bend left, "\alpha_1"] & & \\
  & & \pnt{k} \ar[ur, bend left, "\alpha_k"] & & \pnt{2} \ar[rd, bend left, "\alpha_2"]  &   \\
  & \pnt{k-1} \ar[ur, bend left, "\alpha_{k-1}"] & & & & \pnt{3} \ar[ld, bend left, "\alpha_3"] \\
  & & \ddots \ar[ul, bend left, "\alpha_{k-2}"] & & \iddots \ar[ld, bend left, "\alpha_{i-1}"] & \\
  & & & \pnt{i} \ar[ul, bend left, "\alpha_i"] & &
share|improve this question
up vote 16 down vote accepted

You've got a start, which is good - but I would recommend just the TikZ package, mostly because I think it's easier to understand the code and adjust it as necessary. I went that route, so feel free to disregard this if you would like to stick to tikz-cd. Here's my code:





% All nodes, node labels, and loops
\foreach \ang\lab\anch in {90/1/north, 45/2/{north east}, 0/3/east, 270/i/south, 180/{n-1}/west, 135/n/{north west}}{
  \draw[fill=black] ($(0,0)+(\ang:3)$) circle (.08);
  \node[anchor=\anch] at ($(0,0)+(\ang:2.8)$) {$\lab$};
  \draw[->,shorten <=7pt, shorten >=7pt] ($(0,0)+(\ang:3)$).. controls +(\ang+40:1.5) and +(\ang-40:1.5) .. ($(0,0)+(\ang:3)$);

% Top part of circle, arrows between different nodes and their labels
\foreach \ang\lab in {90/1,45/2,180/{n-1},135/n}{
  \draw[->,shorten <=7pt, shorten >=7pt] ($(0,0)+(\ang:3)$) arc (\ang:\ang-45:3);
  \node at ($(0,0)+(\ang-22.5:3.5)$) {$\alpha_{\lab}$};

% Bottom part of circle, arrows between different nodes and their labels
\draw[->,shorten <=7pt] ($(0,0)+(0:3)$) arc (360:325:3);
\draw[->,shorten >=7pt] ($(0,0)+(305:3)$) arc (305:270:3);
\draw[->,shorten <=7pt] ($(0,0)+(270:3)$) arc (270:235:3);
\draw[->,shorten >=7pt] ($(0,0)+(215:3)$) arc (215:180:3);
\node at ($(0,0)+(0-20:3.5)$) {$\alpha_3$};
\node at ($(0,0)+(315-25:3.5)$) {$\alpha_{i-1}$};
\node at ($(0,0)+(270-20:3.5)$) {$\alpha_i$};
\node at ($(0,0)+(225-25:3.5)$) {$\alpha_{n-2}$};

% Ellipsis
\foreach \ang in {310,315,320,220,225,230}{
  \draw[fill=black] ($(0,0)+(\ang:3)$) circle (.02);



I've tried to label which part of the code does what in your diagram. You can see I made use of the \foreach loop command where possible, but with the bottom part of the circle, especially where the arrows are different lengths, it wasn't as straightforward, so I resorted to plain old trial and error. And here's the result:

enter image description here

If the radius is too large, you can change \begin{tikzpicture} to something like \begin{tikzpicture}[scale=.7] or similar. This will not change the label size. Also, I notice that your arrow tips are slightly different than the default arrow tips that I've used. To change them, call the TikZ library arrows.meta in the header (in the same spot as the calc library), and add the option >={Straight Barb[length=5pt, width=3pt]} to the whole tikzpicture (in the same way as mentioned with scale).

share|improve this answer

Your Answer


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.