PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tikz: Pfeile mit Text in "elegant"?



The EYE
28-06-2015, 15:51
Hallo liebes Forum!

Ich bearbeite (nach längerer Zeit) mal wieder ein Projekt, für welches ich einige Grafiken mit Tikz erstellen möchte. Meine erste ist recht einfach. Meine Lösung ist allerdings sehr rudimentär. Ich würde mir gerne ein paar Kniffe aneignen, um das eleganter zu machen. Die Dokumentation ist mir natürlich bekannt (bzw. deren Existenz - bisher habe ich hier nur mehr oder weniger konkretes nachgeschlagen, sie aber nie durchgearbeitet). Wenn jemand mir anhand meines Beispiels eine elegantere Herangehensweise vorstellen würde, würde mich das sehr freuen!


\documentclass{standalone}
\usepackage[utf8]{inputenc}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[node distance=0.8cm,scale=0.79, every node/.style={scale=0.79}]
%1
\draw (0,2) -- (3,2);
\draw (3,2) -- (3.5,0);
\draw (0,-2) -- (3,-2);
\draw (3,-2) -- (3.5,0);
\draw (0,2) -- (0.5,0);
\draw (0,-2) -- (0.5,0);
%Text 1
\node[text width=3cm] at (2.3,0) {Text für den\\ ersten Pfeil};

%2
\draw (3.5,2) -- (6.5,2);
\draw (6.5,2) -- (7,0);
\draw (3.5,-2) -- (6.5,-2);
\draw (6.5,-2) -- (7,0);
\draw (3.5,2) -- (4,0);
\draw (3.5,-2) -- (4,0);
%Text 2
\node[text width=3cm] at (5.8,0) {Text für den zweiten Pfeil};

%3
\draw (7,2) -- (10,2);
\draw (10,2) -- (10.5,0);
\draw (7,-2) -- (10,-2);
\draw (10,-2) -- (10.5,0);
\draw (7,2) -- (7.5,0);
\draw (7,-2) -- (7.5,0);
%Text 3
\node[text width=3cm] at (9.3,0) {Text für den\\ dritten Pfeil};

%4
\draw (10.5,2) -- (13.5,2);
\draw (13.5,2) -- (14,0);
\draw (10.5,-2) -- (13.5,-2);
\draw (13.5,-2) -- (14,0);
\draw (10.5,2) -- (11,0);
\draw (10.5,-2) -- (11,0);
%Text 4
\node[text width=3cm] at (12.8,0) {Text für den vierten Pfeil};
\end{tikzpicture}
\end{document}

Gruß Max

esdd
29-06-2015, 01:05
Eine Möglichkeit wäre das Laden der Bibliotheken shapes.symbols und positioning. Dann kann man die schon definierte Knotenform signal nutzen und die Knoten relativ zueinander positonieren:


\documentclass[margin=5pt]{standalone}
\usepackage[utf8]{inputenc}

\usepackage{tikz}
\usetikzlibrary{
shapes.symbols,
positioning
}

\begin{document}
\begin{tikzpicture}[
pfeil/.style={draw,
signal,signal pointer angle=150,signal from=west,
text width=2cm,minimum height=4cm,inner xsep=1em},
scale=.79,transform shape,
node distance=.5cm]
\node[pfeil](pfeil1){Text für den ersten Pfeil};
\node[pfeil,right=of pfeil1](pfeil2){Text für den zweiten Pfeil};
\node[pfeil,right=of pfeil2](pfeil3){Text für den dritten Pfeil};
\node[pfeil,right=of pfeil3](pfeil4){Text für den vierten Pfeil};
\end{tikzpicture}
\end{document}

Gruß
Elke

http://www.mrunix.de/forums/attachment.php?attachmentid=6138&d=1435532533

6138

The EYE
29-06-2015, 08:39
Hallo Elke,

deine tikz-Fähigkeiten erfreuen mich immer wieder :). Danke, das ist genau die Hilfe, die ich mir erhofft hatte! Das hilft mir sehr gut weiter.

Gruß Max

Donalduck
29-06-2015, 08:53
Ansonsten interessiert dich vielleicht auch das Paket smartdiagram (https://www.ctan.org/pkg/smartdiagram?lang=de), wo es u.a. ein ähnliches "Sequence diagram" gibt.

The EYE
29-06-2015, 10:44
Auch ein guter Hinweis, danke!

Was ich noch nicht gefunden habe ist eine Möglichkeit Prozesse mit swimlanes zu modellieren. Meinen aktuellen Entwurf habe ich mit M$ Visio erstellt. (Besonders) Für die abschließende Dokumentation wäre eine Lösung in LaTeX natürlich schön, dann wäre alles einheitlich. Außerdem sind dann auch Verlinkungen zu Abkürzungen etc. möglich.

Bisher würde ich das mit übereinandergelegten Rechtecken machen und diese manuell mit Pfeilen verbinden. Ich habe mal ein Beispiel zur Vorstellung angehängt (Quelle: http://vicon.biz/tl_files/dynamic_dropdown/modellierung/Swimlane.jpg)

Gruß Max

esdd
01-07-2015, 11:48
So als Idee: Du könntest eine Matrix verwenden, um die Boxen zu positionieren. Wenn Du außerdem noch die backgrounds Bibliothek lädst, kannst Du hinterher die blauen Streifen unter den Zeilen einfügen lassen.

The EYE
01-07-2015, 13:35
Interessanter Gedanke. Danke für den Input, werde ich im Kopf behalten und mir das mal ansehen!

Gruß Max