Die `chains` library, die auch die `positioning` library lädt, hält dafür eine interessante Lösung parat, die in vereinfachter Version als Beispiel auch im PGF/TikZ-Manual angegeben ist.
Der `start chain`-Key unterscheidet nämlich theoretisch vier mögliche Optionskombination.
Anstatt `going` kann man auch `placed` verwenden, das auch den ersten Node auf dem Chain beeinflust. Zusätzlicher wird in dem folgenden Text geprüft, ob ein Gleichheitszeichen `=` vorhanden ist. Ist dies der Fall, wird dieser Text wie er ist als Option für den Node verwendet, der `on chain` gesetzt wird. Hier haben wir Zugriff auch `\tikzchaincount` sowie den Node-Namen `\tikzchainprevious`.
Das einfache Beispiel aus dem Manual sie hier angegeben mit:
\begin{tikzpicture}[start chain=circle placed {at=(\tikzchaincount*30:1.5)}]
\foreach \i in {1,...,10}
\node [on chain] {\i};
\draw (circle-1) -- (circle-10);
\end{tikzpicture}
Dieses Beispiel ergibt schon ein Ergebnis, das dem Geforderten ähnelt:
![](http://i.imgur.com/eXw46ve.png)
![alt text][1]
Führt man dies weiter, könnte man sich eine Option wie `nodes around center` vorstellen, die folgendermaßen definiert ist:
\tikzset{
nodes around center/.style args={#1:#2:#3:#4}{%
% #1 = Startwinkel
% #2 = Anzahl Knoten
% #3 = Zentrums-Node
% #4 = Abstand
at={([shift={(#3)}] {{(\tikzchaincount-1)*360/(#2)+#1}}:{#4})}
}
}
Ein Chain, der mit `start chain=circle placed {nodes around center=45:10:Z:5em},` auch `circle` genannt ist (dies hat nichts mit dem Shape zu tun), platziert nun die `on chain=circle` gesetzten Nodes startend bei 45° im Abstand von `5em` um `Z` (also `Z.center`). Der radiale Abstand ist dabei 36°.
Nodes können auch ebenfalls mit einer `\foreach`-Schleife gesetzt werden, falls sie gemeinsame Eigenschaften haben. Ein vollständiges Beispiel:
\begin{tikzpicture}[node distance=5em,every node/.style={circle,draw}]
\node [circle] (Z) {Zentrum};
\begin{scope}[
start chain=circle placed {nodes around center=45:10:Z:5em},
every join/.append style={<->},
every node/.append style={
on chain=circle,
join,
minimum size=2em
}
]
\foreach \cnt in {0,...,5}
\node[fill=black!\cnt 0!white] {\cnt};
\node {6}; \node[rotate=180] {7};
\node {$\infty$}; \node {9};
\chainin (circle-begin);
\end{scope}
\end{tikzpicture}
ergibt
![](http://i.imgur.com/TTnKmEt.png)
![alt text][2]
Ein kleiner Unterschied besteht aber immer noch zwischen dieser Platzierung und einer mithilfe `positioning`. Der Abstand `5em` ist gemessen zwischen den `center`-Anchors der Nodes. Sofern nicht die `on grid`-Option gesetzt ist, platziert `positioning` die Nodes so, dass der Abstand zwischen ihren Borders (die mit `draw` gezeichneten Linien (und genaugenommen gehört `outer sep`s da auch noch dazu)) `5em` beträgt.
Geht man davon aus, dass das Zentrum als benannte Node (das kann auch eine benannte `coordinate` sein) angegeben ist, kann man dieses Verhalten mit einer kleinen Variation an dem `nodes around center`-Style auch simulieren. (Ich habe dafür die `rotate`-Option bei der `7`-Node entfernen müssen.) Bei gleicher Argumenten sieht die Definition von `nodes around center*` dann folgendermaßen aus:
\tikzset{
nodes around center*/.style args={#1:#2:#3:#4}{% gleiche Optionen wie oben
at={([shift={(#3.{(\tikzchaincount-1)*360/(#2)+#1})}] {{(\tikzchaincount-1)*360/(#2)+#1}}:{#4})},
anchor={(\tikzchaincount-1)*360/(#2)+#1+180}
}
}
und ergibt dann mit dem Startwinkel `180`
![](http://i.imgur.com/b6TLGh6.png)
![alt text][3]
## Kompletter Code
\documentclass[tikz,convert=false]{standalone}
\usetikzlibrary{chains}
\tikzset{
nodes around center/.style args={#1:#2:#3:#4}{%
% #1 = Startwinkel, #2 = Anzahl Knoten
% #3 = Zentrums-Node, #4 = Abstand
at={([shift={(#3)}] {{(\tikzchaincount-1)*360/(#2)+#1}}:{#4})}
},
nodes around center*/.style args={#1:#2:#3:#4}{% gleiche Optionen wie oben
at={([shift={(#3.{(\tikzchaincount-1)*360/(#2)+#1})}] {{(\tikzchaincount-1)*360/(#2)+#1}}:{#4})},
anchor={(\tikzchaincount-1)*360/(#2)+#1+180}
}
}
\begin{document}
\begin{tikzpicture}[node distance=5em,every node/.style={circle,draw}]
\node [circle] (Z) {Zentrum};
\begin{scope}[
start chain=circle placed {nodes around center=45:10:Z:5em},
every join/.append style={<->},
every node/.append style={
on chain=circle,
join,
minimum size=2em
}
]
\foreach \cnt in {0,...,5}
\node[fill=black!\cnt 0!white] {\cnt};
\node {6}; \node[rotate=180] {7};
\node {$\infty$}; \node {9};
\chainin (circle-begin);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}[node distance=5em,every node/.style={circle,draw}]
\node [circle] (Z) {Zentrum};
\begin{scope}[
start chain=circle placed {nodes around center*=180:10:Z:5em},
every join/.append style={<->},
every node/.append style={
on chain=circle,
join,
minimum size=2em
}
]
\foreach \cnt in {0,...,5}
\node[fill=black!\cnt 0!white] {\cnt};
\node {6}; \node {7};
\node {$\infty$}; \node {9};
\chainin (circle-begin);
\end{scope}
\end{tikzpicture}
\end{document}\end{document}
[1]: http://texwelt.de/wissen/upfiles/qrr-kreis1.png
[2]: http://texwelt.de/wissen/upfiles/qrr-kreis2.png
[3]: http://texwelt.de/wissen/upfiles/qrr-kreis3.png