Kreis-Ablaufdiagramm - Größe der einzelnen Nodes

Tabellen und Grafiken erstellen und anordnen


Elbflorentiner
Forum-Anfänger
Forum-Anfänger
Beiträge: 17
Registriert: Do 5. Jun 2014, 21:34

Kreis-Ablaufdiagramm - Größe der einzelnen Nodes

Beitrag von Elbflorentiner »

Hallo,

ich versuche ein Ablafdiagramm in Kreisform zu erstellen, bei welchem die vier Positionen via Pfeilbögen miteinander verbunden sind. Allerdings werden die jeweilgen Node-Größen nicht gleich groß erstellt, da die darin befindlichen Worte unterschiedlich lang sind. Hier mein Minimalbeispiel, welches auf einem Beispiel aufbaut, das ich online fand:
\documentclass[12pt,a4paper]{standalone}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows,automata,positioning}
\begin{document}
\begin{tikzpicture}[
	node distance=15mm,
	>=stealth, auto,
	every state/.style={draw=black, line width=0.4mm, inner sep=3pt, font=\bfseries},
	]
	\node[state] (1) {$\textbf{eins}$};
	\node[state] (2) [above right=of 1] {$\textbf{zwei}$};
	\node[state] (3) [below right=of 2] {$\textbf{langedrei}$};
	\node[state] (4) [below right=of 1] {$\textbf{vier}$};
	\begin{scope}[bend left]%
	\path[->]   (1) edge node {\textit{initiiert}} (2)
	(2) edge node {\textit{ermöglicht}} (3)
	(3) edge node {\textit{verursacht}} (4)
	(4) edge node {\textit{erzwingt}} (1);
	\end{scope}
	\end{tikzpicture}	
\end{document}
Mein Ziel ist es, dass sämtliche Nodes, also auch die von "eins", "zwei" und "vier" die durch "superlangedrei" bestimmte Größe annehmen. Kurz gesagt: alls Kreise sollen gleich groß sein.

Wie schaffe ich das? :?:
Dateianhänge
Kreisablaufdiagramm.pdf
(22.19 KiB) 171-mal heruntergeladen

Noch so einer

Beitrag von Noch so einer »

text width ist Dein Freund:
\documentclass[12pt,a4paper]{standalone}
\usepackage[utf8]{inputenc}% Das ist die Codierung des Online-Editors und die Voreinstellung der meisten LaTeX-Editoren.
\usepackage{tikz}
\usetikzlibrary{arrows,automata,calc,positioning}
\begin{document}
\begin{tikzpicture}[
   node distance=15mm,
   >=stealth, auto,
   every state/.style={draw=black, line width=0.4mm, inner sep=3pt, font=\bfseries},
   ]
   \begin{scope}[
     font=\bfseries,
     text width={width("langedrei")+6pt},% 6pt = 2 inner sep
     align=center
   ]
   \node[state] (1) {eins};
   \node[state] (2) [above right=of 1] {zwei};
   \node[state] (3) [below right=of 2] {langedrei};
   \node[state] (4) [below right=of 1] {vier};
   \end{scope}
   \begin{scope}[bend left,font=\itshape]%
   \path[->]   (1) edge node {initiiert} (2)
   (2) edge node {ermöglicht} (3)
   (3) edge node {verursacht} (4)
   (4) edge node {erzwingt} (1);
   \end{scope}
   \end{tikzpicture}   
\end{document}

Elbflorentiner
Forum-Anfänger
Forum-Anfänger
Beiträge: 17
Registriert: Do 5. Jun 2014, 21:34

Beitrag von Elbflorentiner »

Danke für die Mühe. Leider hat diese den Text innerhalb der Nodes nach links gerückt. Ich habe aber eine für mich funktionierende Lösung gefunden. Erstaunlicherweise funtioniert sie jetzt, bei meinen ersten Versuchen im Laufe des Tages leider nicht.

Das minimum size=3cm brachte für mich die Lösung. Erzeugt für mich völlig ausreichend Nodes mit dem Mindestradius von 3 cm.
\documentclass[12pt,a4paper]{standalone}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows,automata,positioning}
\begin{document}
\begin{tikzpicture}[
   node distance=15mm,
   >=stealth, auto,
   every state/.style={draw=black, minimum size=3cm, % Das war die Lösung!!
  line width=0.4mm, inner sep=3pt, font=\bfseries},
   ]
   \node[state] (1) {$\textbf{eins}$};
   \node[state] (2) [above right=of 1] {$\textbf{zwei}$};
   \node[state] (3) [below right=of 2] {$\textbf{langedrei}$};
   \node[state] (4) [below right=of 1] {$\textbf{vier}$};
   \begin{scope}[bend left]%
   \path[->]   (1) edge node {\textit{initiiert}} (2)
   (2) edge node {\textit{ermöglicht}} (3)
   (3) edge node {\textit{verursacht}} (4)
   (4) edge node {\textit{erzwingt}} (1);
   \end{scope}
   \end{tikzpicture}  
\end{document}

Besserwisser

Beitrag von Besserwisser »

Elbflorentiner hat geschrieben:Danke für die Mühe. Leider hat diese den Text innerhalb der Nodes nach links gerückt.
Nicht im Beispiel von "Noch so einer", wie der Online-Editor-Link zeigt.

Extra in dem Mathemodus zu schalten, dann aber mit \textbf einen Textfont zu verwenden ist auch eher seltsam. Den Font direkt via scope mit einzustellen, erspart einem außerdem die Font-Einstellung mehrfach zu wiederholen.

Antworten