[tikz] circle zwischen zwei nodes zeichnen

Tabellen und Grafiken erstellen und anordnen


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

[tikz] circle zwischen zwei nodes zeichnen

Beitrag von MoonKid »

Ich möchte zwei Nodes mit einem Pfeil verbinden. Dieser Pfeil bekommt in der Mitte eine Beschriftung. Wie das geht, weiß ich.

Ich möchte diese Beschriftung aber in einem Kreis einschließen. Also im Grunde möchte ich zwischen die zwei Nodes (also als Pfeilbeschriftung) nicht nur Text, sondern auch (möglichst jede beliebige) Grafik setzen können.

Da steig ich aber noch nicht dahinter, wie das geht.
\documentclass{scrartcl}

\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}

% Sprache
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{tikz}
\tikzset{
    table/.style={remember picture,baseline,every node/.style={anchor=base,inner sep=0pt}}
}

\begin{document}
    % Tabelle mit zwei TikZ-Knoten
    \begin{tabular} {c | c}
        \tikz[table] \node (nA) {a};&
        \tikz[table] \node (nB) {b};
    \end{tabular}

    % Knoten mit Pfeil verbinden
    \begin{tikzpicture}[remember picture,overlay]
        \draw[->] (nA.center) -- node [sloped,midway,above] {X} (nB.center);
    \end{tikzpicture}

\end{document}
XeLaTeX, TeX Live, vim-latexsuite

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Ah, wärend man die Frage abläst, kommen einem neue Ideen. ;)

Man zeichnet an der Stelle (im Code) gar nicht, sondern setzt und benennt einfach nur dieses Node.
\draw[->] (nA.center) -- node [sloped,midway,above] (nPfeilbeschriftung) {X} (nB.center); 
Und an späterer Stelle (direkt danach) zeichne ich da einfach was hin.
/draw (nPfeilbeschriftung.center) circle (5pt);
XeLaTeX, TeX Live, vim-latexsuite

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Warum verwendest du nicht gleich eine gezeichnete Kreisnode?
\draw[->](nA.center)--node[sloped,above=0.3mm,draw,circle,inner sep=0.2mm]{X}(nB.center); 
Gruß
Elke

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Mit der calc Bibliothek kannst du auch die mittlere Koordinate berechnen:
\draw ($(NodeA)!0.5!(NodeB)$) circle (5pt);
Da geht noch ne ganze menge mehr … schau ggf. in die Doku ;-)

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

esdd hat geschrieben:Warum verwendest du nicht gleich eine gezeichnete Kreisnode?
\draw[->](nA.center)--node[sloped,above=0.3mm,draw,circle,inner sep=0.2mm]{X}(nB.center); 
Ah, dass das so geht, wusste ich nicht. So eine Konstruktion habe ich in der tikz-Doc bisher noch nicht gesehen.

Aber wie modifiziere ich diesen "circle" nun? Ich möchte ihn in einer ausgefüllten Frabe und am besten noch mit Schatten?

In welchem Bereich der tikz-Dok finde ich eine nüchterene Auflistung darüber, welche Parameter in den eckigen Klammern von "node" möglich sind?
XeLaTeX, TeX Live, vim-latexsuite

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Dann lies dir einfach mal den Abschnitt Nodes and Edges durch. Dort sind auch die wichtigsten Optionen erläutert. Eine Aufzählung aller Möglichkeiten für den Inhalt der eckigen Klammern gibt es aber nicht, da dies auch von den geladenen tikzlibraries abhängt und man über tikzset selbst welche hinzufügen kann.

Das Füllen geht mit der Option fill=...

Um einen Schatten zu erzeugen, musst du in der Präambel noch \usetikzlibrary{shadows} einfügen und kannst dann Optionen wie copy shadow oder circular drop shadow für die Noden verwenden. Informationen zu den Einstellmöglichkeiten findest du in der Doku unter Libraries - Shadow Library

Gruß
Elke

Antworten