1

Consider the following MWE:

\documentclass[tikz]{standalone}

\begin{document} \usetikzlibrary{shapes} \tikzset{every picture/.append style={auto, line width=1pt, >=stealth, font=\small}} \begin{tikzpicture}[x=1mm,y=1mm]% \node[ellipse,draw,align=left] at (65:40mm) (AA){citric\acid}; \node[ellipse,draw,align=left] at (20:40)(BB){ISOcitric\acid}; \node[ellipse,draw,align=left] at (335:40)(CC) {( \alpha )-ketoglu-\taric acid}; \node[ellipse,draw,align=left] at (290:40)(DD){succinyl-\CoA}; \node[ellipse,draw,align=left] at (245:40)(EE){succinate}; \node[ellipse,draw,align=left] at (200:40)(FF){fumarate}; \node[ellipse,draw,align=left] at (155:40)(GG){malate}; \node[ellipse,draw,align=left] at (110:40)(HH){oxalo-\acetate};

\draw[->](AA) to[bend left=15](BB);
\draw[->](BB) to[bend left=15](CC);
\draw[->](CC) to[bend left=15](DD);
\draw[->](DD) to[bend left=15](EE);
\draw[->](EE) to[bend left=15](FF);
\draw[->](FF) to[bend left=15](GG);
\draw[->](GG) to[bend left=15](HH);
\draw[->](HH) to[bend left=15](AA);

\end{tikzpicture} \end{document}

enter image description here

Many of you will recognize this as the start of a description of the citric acid cycle. I find it acceptable, but it would be even better if the lines with the arrows between the nodes actually followed the circle that was implicitly used to place the nodes.

How can this be done?

2 Answers2

2

A simplification, making all the nodes circles.

\documentclass[tikz,border=1.618]{standalone}

\begin{document} \begin{tikzpicture} % dimensions: \def\br{4.5} % big radius \def\lr{0.9} % node radius % intersection point and angle: \pgfmathsetmacro\x{\br-0.5\lr\lr/\br} \pgfmathsetmacro\y{sqrt(\br\br-\x\x))} \pgfmathsetmacro\sa{atan(\y/\x)} % only for comparison: \draw[gray,very thin] (0,0) circle (\br); % diagram: \foreach[count=\i]\j in {ISOcitric\acid,citric\acid,oxalo-\acetate,malate, succinate,fumarate,succinyl-\CoA,(\alpha)-ketoglu-\taric acid} { \begin{scope}[rotate=45*\i-22.5] \draw[thick] (\br,0) circle (\lr); \node[text width=2cm,align=center] at (\br,0) {\j}; \draw[latex-,thick] (\sa:\br) arc (\sa:45-\sa:\br); \end{scope} } \end{tikzpicture} \end{document}

enter image description here

Juan Castaño
  • 28,426
0

After studying the tikz manual for some time, i found the property 'looseness', which can be applied to 'bend left'. The result is as follows, with the thick red circle as a help circle.

\documentclass[tikz]{standalone}

\begin{document} \usetikzlibrary{shapes} \tikzset{every picture/.append style={auto, line width=1pt, >=stealth, font=\small}} \begin{tikzpicture}[x=1mm,y=1mm]% \drawred!40,line width=2ptcircle[radius=40mm]; \node[ellipse,draw,align=left] at (65:40mm) (AA){citric\acid}; \node[ellipse,draw,align=left] at (20:40)(BB){ISOcitric\acid}; \node[ellipse,draw,align=left] at (335:40)(CC) {( \alpha )-ketoglu-\taric acid}; \node[ellipse,draw,align=left] at (290:40)(DD){succinyl-\CoA}; \node[ellipse,draw,align=left] at (245:40)(EE){succinate}; \node[ellipse,draw,align=left] at (200:40)(FF){fumarate}; \node[ellipse,draw,align=left] at (155:40)(GG){malate}; \node[ellipse,draw,align=left] at (110:40)(HH){oxalo-\acetate};

\draw[->](AA) to[bend left=15,looseness=0.7](BB);
\draw[->](BB) to[bend left=15,looseness=0.7](CC);
\draw[->](CC) to[bend left=15,looseness=0.7](DD);
\draw[->](DD) to[bend left=15,looseness=0.7](EE);
\draw[->](EE) to[bend left=15,looseness=0.9](FF);
\draw[->](FF) to[bend left=15](GG);
\draw[->](GG) to[bend left=15,looseness=0.9](HH);
\draw[->](HH) to[bend left=15,looseness=0.7](AA);

\end{tikzpicture} \end{document}

The result is as follows:

enter image description here