Producing a Commutative Diagram in the Shape of a Dodecagon

New answer

Here is a dodecagon diagram built in pure Tikz with the chains library which is compilable with all engines (LaTeX, pdfLaTeX, XeLaTeX, LuaLaTeX).

Updated code (on request of OP)

Here, I placed indexed labels for the arrows inside the dodecagon and the same label for the others.

For the internal arrows, I chose these options:

font=\tiny,fill=white,outer sep=0pt,inner sep=1pt

and for you to understand the difference for the others with these options:

font=\scriptsize,auto=right,outer sep=0pt,inner sep=1pt 

If any of them require explanation, say so.

screenshot

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary {chains}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[start chain= dodecagon placed {at=(120+\tikzchaincount*-30:2.5)}]
\foreach \i in {0,...,11}
    {\node [on chain] {$c_{\i}$};
    }
\foreach \i [evaluate={
            \next=int(1+mod({\i},12));
            \nextnext=int(1+mod({\i+1},12));}] 
        in {1,...,12}{
\draw[->] (dodecagon-\i)--node[font=\tiny,fill=white,outer sep=0pt,inner sep=1pt]{x}(dodecagon-\next);
\draw[->] (dodecagon-\i)to[bend right=20]node[font=\scriptsize,auto=right,outer sep=0pt,inner sep=1pt]{$l_{\i}$}(dodecagon-\nextnext);
}

\end{tikzpicture}
\end{document}

Old code

screenshot

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary {chains}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[start chain= dodecagon placed {at=(120+\tikzchaincount*-30:2.5)},>={Stealth[round,sep]}]
\foreach \i in {0,...,11}
    {\node [on chain] {$c_{\i}$};
    }
\foreach \i [evaluate={
            \next=int(1+mod({\i},12));
            \nextnext=int(1+mod({\i+1},12));}] 
        in {1,...,12}{
\draw[->] (dodecagon-\i)--(dodecagon-\next);
\draw[->] (dodecagon-\i)to[bend right=15](dodecagon-\nextnext);
}

\end{tikzpicture}
\end{document}

Old answer :

Here is a graph created with Tikz (but not with tikz-cd) using the circular library which must be compiled with Lualatex.

screenshot

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary {graphs,graphdrawing} 
\usegdlibrary {circular}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}[>={Stealth[round,sep]}]
\graph [simple necklace layout,
 node distance=1.5cm,
grow'=south,
math nodes,
edges={>={Stealth[round,sep,bend]}}]
{ c_0 -> c_1 -> c_2  -> c_3 -> c_4 -> c_5 -> c_6 -> c_7 -> c_8 -> c_9 -> c_{10} -> c_{11} -> c_0};

\graph [use existing nodes,
math nodes,
edges={bend right=15,>={Stealth[round,sep,bend]}}]{
c_1 -> c_3 -> c_5  -> c_7 -> c_9 -> c_{11} -> c_1,c_2 -> c_4 -> c_6 -> c_8 -> c_{10}->c_0
 };
\end{tikzpicture}
\end{document}

Just plain TikZ, all connections, no hard-coded values but just loops, everything in a single path. Works with all standard compilers (pdflatex, xelatex, lualatatex) and can thus be used in a paper that is to be submitted to the arXiv, say.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}
 \path[every edge/.append style={-{Stealth[bend]}}] foreach \X in {0,...,11}
 { (105-\X*30:4) node (c\X) {$c_{\X}$}}
  foreach \X [remember=\X as \LastX (initially 11),
    evaluate=\X as \LLastX using {int(Mod(\X+10,12))}] in {0,...,11}
  { (c\LastX) edge (c\X)
  \ifodd\X
   (c\LLastX) edge[bend left=60] (c\X)
  \else
   (c\LLastX) edge[bend right=5] (c\X) 
  \fi};
\end{tikzpicture}
\end{document}

enter image description here

Tags:

Tikz Cd