Ausgehend von dieser Vorlage: http://www.texample.net/tikz/examples/flexible-flow-chart/ versuche ich ein Flowchart zu erstellen. Ich scheitere jedoch schon an kleinen Sachen.

Open in Online-Editor
\node [term, join]      {Box 1};
\node [join] (p1) {Box 2};
\node [proc, join]      {Open queue};
\node [proc, join]      {Dispatch message};
\node [test, join] (t1) {Got msg?};

Ich möchte, dass die zweite Box keine Umrandung (also kein Rechteck) erhält. Es soll nur der Text gezeigt werden, mit den jeweiligen Pfeilen von/zu. Ich dachte, dass mit dem join Befehl automatisch die Nodes miteinander verbunden werden. Daher habe ich den proc Befehl wie oben gezeigt einfach entfernt. Im Resultat schreibt er allerdings Box 2 einfach über Box 1 darüber. Wieso?

Zweite Frage, ganz allgemein: Ich möchte jetzt Abhängigkeiten zu Box 1 einfügen, und zwar rechts davon platziert. Diese sollen allerdings ebenfalls in keiner Box stehen und es müssen auch mehrere Zeilen sein, die alle auf Box 1 zeigen. Wie könnte man das (grob) machen?

gefragt 18 Okt '16, 14:42

SF6's gravatar image

SF6
15953440
Akzeptiert-Rate: 0%

bearbeitet 21 Okt '16, 11:45

saputello's gravatar image

saputello
11.1k174365

2

Bitte stelle immer nur eine Frage. Für die zweite machst Du am besten ein neues Thema auf und fügst ein Minimalbeispiel ein, das möglichst kurz, aber lauffähig ist. Eventuell ist auch eine Skizze des gewünschten Ergebnisses sinnvoll.

(18 Okt '16, 22:19) esdd

Ich beantworte hier nur die erste Frage:

Für den betrachteten Node sind im verlinkten Beispiel die beiden Optionen proc und join angegeben.

Die join Option sorgt dafür, dass ein Node mit dem vorhergehenden Node des chain verbunden wird. Voraussetzung ist also, dass beide Nodes zur gleichen Kette (chain) gehören, für beide also die Option on chain gesetzt ist. Mit anderen Worten, wenn die Option join zwar gesetzt ist, aber für den Node kein on chain gilt, wird er auch nicht verbunden.

Im Beispiel ist proc nun wie folgt definiert:

Open in Online-Editor
proc/.style={base, rectangle, text width=8em}

Es wird also die Option base gesetzt und ein solcher Node bekommt eine Rechteckform. Zu beachten ist dabei, dass rectangle wirklich nur die Nodeform vorgibt, aber nicht deren Zeichnen oder Füllen veranlasst.

Die Option base wird in dem Code wiederum wie folgt, definiert:

Open in Online-Editor
base/.style={draw, on chain, on grid, align=center, minimum height=4ex}

Sie sorgt also dafür, dass der Node einerseits gezeichnet wird, aber andererseits auch zum chain gehört und entsprechend platziert wird.

Die Option base gibt in dem Beispiel also grundlegende Formatierungseinstellungen der Nodes vor, die auch für andere Optionen als Basis verwendet werden. Sie wird in den abgeleiteten Optionen zunächst gesetzt und anschließend durch weitere Optionen angepasst. Dabei überschreiben später gesetzte Optionen die vorherigen Einstellungen.

Ausschnitt aus dem in der Frage verlinkten Beispiel:

Open in Online-Editor
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
proc/.style={base, rectangle, text width=8em},
test/.style={base, diamond, aspect=2, text width=5em},
term/.style={proc, rounded corners},

Wenn Du die Option proc entfernst, wird auch base nicht mehr verwendet. Deshalb wird der Node nicht nur nicht mehr gezeichnet, sondern er gehört auch nicht mehr zur Kette und wird deshalb nicht mit Abstand zum vorhergehenden Node platziert und auch nicht mehr verbunden.

Wenn Du einen oder mehrere Nodes brauchst, die sich genauso verhalten wie die Nodes mit der Option proc, dann kannst Du das erreichen, in dem Du nach proc noch ein draw=none anfügst:

Open in Online-Editor
\node [proc,draw=none,join] (p1) {Box 2};

Beispiel, abgeleitet von Example: Easy-maintenance flowchart

alt text

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,chains}
\begin{document}
\begin{tikzpicture}[%
    >=triangle 60,              % Vorgabe einer Pfeilform
    start chain=going below,    % Platzierungsrichtung ist von oben nach unten
    node distance=6mm and 60mm, % globale Abstände zwischen den Nodes
    every join/.style={norm},   % Defaultlinienart für die Verbindung der Nodes
    ]
\tikzset{
    base/.style={
        draw,% zeichne!
        on chain,% Node gehört zum chain
        on grid,
        align=center,
        minimum height=4ex
    },
    proc/.style={
        base,% verwende den base Stil (u.a. draw, also zeichnen)
        rectangle,% Rechteckform
        text width=8em            },
    term/.style={
        proc,% verwende den proc Stil
        rounded corners% aber mit abgerundeten Ecken
    },
    norm/.style={->, draw, blue},
    it/.style={font={\small\itshape}}
}

    \node [
        proc,% verwende den proc Stil
        densely dotted,% aber gepunktet
        it% und mit anderen Schrifteinstellungen
    ] {New trigger message thread};
    \node [
        term,% vewende den term Stil (=proc mit abgerundeten Ecken)
        join% verbinde mit dem vorhergehenden Node
    ] {Trigger scheduler};
    \node [
        proc,% verwende den proc Stil
        draw=none,% aber zeichne nicht!
        join% verbinde mit dem vorhergehenden Node
        ] (p1) {Box 2};
    \node [
        proc,% verwende den proc Stil
        join% verbinde mit dem vorhergehenden Node
    ]  {Open queue};
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 18 Okt '16, 22:16

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 19 Okt '16, 07:28

saputello's gravatar image

saputello
11.1k174365

Danke für die Antwort. Jetzt ist es mir klar geworden. Steht das irgendwo beschrieben? In der langen Anleitung von Tantau konnte ich das nicht finden.

(19 Okt '16, 13:15) SF6
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×13
×1

gestellte Frage: 18 Okt '16, 14:42

Frage wurde gesehen: 6,890 Mal

zuletzt geändert: 21 Okt '16, 11:45