Seite 1 von 1

[gelöst] Flussdiagramm mit tikz - Pfeil will nicht wie ich

Verfasst: Fr 22. Mai 2009, 10:57
von mgoe
Hallo,

ich bin noch relativ neu in latex und schreibe gerade an meiner Projektdokumentation und wollte ein kleines Flussdiagramm erstellen.

Doch ich schaffe es nicht, das der Pfeil nach oben recht an den Elementen vorbei und nicht durch sie geht.

Hat irgendjemand eine Idee was ich falsch mache?

Hier mein kleiner Code - und im Anhang einen Screenshot, wie es jetzt aussieht.
\documentclass{scrreprt}
\usepackage{tikz}
\usepackage{pgflibraryshapes}
\usetikzlibrary{trees,arrows}

\begin{document}
 
\begin{tikzpicture}
[auto,
decision/.style={diamond, draw=blue, thick, fill=blue!20, text width=5em, text badly centered, inner sep=1pt},
block/.style ={rectangle, draw=blue, thick, fill=blue!20, text width=10em, text centered, rounded corners, minimum height=4em},
line/.style ={draw, thick, -latex',shorten >=0pt},
cloud/.style ={draw=red, thick, ellipse, fill=red!20, minimum height=4em}]
\matrix [column sep=5mm,row sep=7mm]
{
& \node [block] (write) {A}; & \\
& \node [decision] (write-done) {B}; & \\
& \node [block] (review) {D}; & \\
& \node [decision] (review-done) {E}; & \\
& \node [block] (send) {F}; & \\
};
\begin{scope}[every path/.style=line]
\path (write) -- (write-done);
\path (write-done) |- node [right] {nein} (write); % TODO fix
\path (write-done) -- node [midway] {ja} (review);
\path (review) -- (review-done);
\path (review-done) |- node [right] {nein} (write); % TODO fix
\path (review-done) -- node [midway] {ja} (send);

\end{scope}
\end{tikzpicture}

\end{document}
Ich bin für jeden Tipp sehr dankbar.

gruß
mgoe

Nodes und Anker

Verfasst: Sa 23. Mai 2009, 20:32
von Stefan Kottwitz
Hallo mgoe,

willkommen im Forum!
Du könntest Anker verwenden:
\path (write.south) -- (write-done.north);
\path (write-done.south) -- node [midway] {ja} (review.north);
Viele Grüße,

Stefan

Verfasst: Sa 23. Mai 2009, 21:46
von mgoe
Hallo Stefan,

vielen Dank für deine Antwort.
habe deinen Vorschlag eingearbeitet - sieht schon fast perfekt aus.

kann ich den horizontalen Teil des Pfeiles etwas verlängern, so das sie nicht übereinander liegen?

Hier der aktualisierte Code:
\documentclass{scrreprt}
\usepackage{tikz}
\usepackage{pgflibraryshapes}
\usetikzlibrary{trees,arrows}

\begin{document}
 
\begin{tikzpicture}
[auto,
decision/.style={diamond, draw=blue, thick, fill=blue!20, text width=5em, text badly centered, inner sep=1pt},
block/.style ={rectangle, draw=blue, thick, fill=blue!20, text width=10em, text centered, rounded corners, minimum height=4em},
line/.style ={draw, thick, -latex',shorten >=0pt},
cloud/.style ={draw=red, thick, ellipse, fill=red!20, minimum height=4em}]
\matrix [column sep=5mm,row sep=7mm]
{
& \node [block] (write) {A}; & \\
& \node [decision] (write-done) {B}; & \\
& \node [block] (review) {D}; & \\
& \node [decision] (review-done) {E}; & \\
& \node [block] (send) {F}; & \\
};
\begin{scope}[every path/.style=line]
\path (write) -- (write-done);
\path (write-done.east) -| node [right] {nein} (write.east);  % TODO fix
\path (write-done) -- node [midway] {ja} (review);
\path (review) -- (review-done);
\path (review-done.east) -| node [right] {nein} (write.east); % TODO fix
\path (review-done) -- node [midway] {ja} (send);


\end{scope}
\end{tikzpicture}

\end{document}
gruß
mgoe

Verfasst: Mo 25. Mai 2009, 10:08
von mgoe
habe jetzt die Lösung:
\documentclass{scrreprt}
\usepackage{tikz}
\usepackage{pgflibraryshapes}
\usetikzlibrary{trees,arrows}

\begin{document}
 
\begin{tikzpicture}
[auto,
decision/.style={diamond, draw=blue, thick, fill=blue!20, text width=5em, text badly centered, inner sep=1pt},
block/.style ={rectangle, draw=blue, thick, fill=blue!20, text width=10em, text centered, rounded corners, minimum height=4em},
line/.style ={draw, thick, -latex',shorten >=0pt},
cloud/.style ={draw=red, thick, ellipse, fill=red!20, minimum height=4em}]
\matrix [column sep=5mm,row sep=7mm]
{
& \node [block] (write) {A}; & \coordinate (dummy-write);\\
& \node [decision] (write-done) {B}; & \coordinate (dummy-write-done);\\
& \node [block] (review) {D}; & \\
& \node [decision] (review-done) {E}; & \coordinate (dummy-review-done);\\
& \node [block] (send) {F}; & \\
};
\begin{scope}[every path/.style=line, rounded corners]
\path (write) -- (write-done);
\path (write-done.east) -> node[above] {nein} (dummy-write-done.east);
\path (write-done) -- node [midway] {ja} (review);
\path (review) -- (review-done);
\path (review-done.east) -- node[above] {nein} (dummy-review-done) -- (dummy-write-done) -- (dummy-write) -- (write.east);
\path (review-done) -- node [midway] {ja} (send);
\end{scope}
\end{tikzpicture}
\end{document}
vielen dank nochmal