Hallo alle zusammen,

ich habe unten angehängten Code. Ich habe die Matrix OU und S. Beide möchte ich verbinden. Standardmäßig ist das ja jeweils OU.west und S.east. Allerdings würde ich beide gerne wesentlich tiefer verbinden, so dass noch genug Platz für eine weitere, beschriftete Transition besteht. Ich habe es bereits mit (S.337) und (OU.200) versucht, allerdings ist die Linie etwas schief und ich schaffe es nicht, eine gerade Linie zu zeichnen. Gibt es z.B. eine Linie im rechten Winkel zu einem der Matrizen zu zeichnen, so dass ich nur auf einer der beiden Seiten einen Wert angeben muss? Vielen Dank schonmal :-)

Open in writeLaTeX
    \documentclass[margin=5mm]{standalone}
    \usepackage[utf8]{inputenc}
    \usepackage{tikz}
    \usetikzlibrary{matrix,positioning}
    \tikzset{
  tab/.style={inner sep=0pt,
    nodes={inner sep=.333em,
      % notwendig für leere Zellen und Unterlängen:
      minimum height={\baselineskip+0.666em}
    }
  },
  vtab/.style={matrix of nodes,tab,
    row sep=-\pgflinewidth,column sep=-\pgflinewidth,
    nodes in empty cells,% leere Zellen werden ebenfalls gezeichnet
    row 1/.style={nodes={align=center}},
    nodes={draw,align=left,text width=#1}
  },
  vtab/.default=3cm,% voreingestellte Breite
  htab/.style={matrix of nodes,draw,tab,anchor=north west},
  every edge/.append style={font=\footnotesize\strut,inner ysep=.1em},
  pfeil/.style={out=270,in=90,->}
}

    \begin{document}
    \resizebox{\textwidth}{!}{%
    \begin{itshape}
    \begin{tikzpicture}[thick,
      % vertikaler und horizontaler Abstand zwischen den Tabellen:
      node distance=1cm and 3.5cm, % row 1/.style={},
    ]
    %Tabelle
    \matrix(S)[vtab]{Stelle\\{Nummer<<pk>>}\\\\};
    \matrix(OU)[right= of S,vtab=3.5cm]{Organisationseinheit\\{Nummer<<pk>>\newline Name\newline Art}\\\\};
    \path(S)edge
          node[pos=0,above right]{zugeordnet}node[pos=0,below right]{N}
          node[pos=1,above left]{beinhaltet}node[pos=1,below left]{1}
          (OU);
    \end{tikzpicture}
    \end{itshape}
    }
    \end{document}

gefragt 27 Mär '14, 16:54

tt33tt's gravatar image

tt33tt
24131322
Akzeptiert: 64%

bearbeitet 25 Apr '14, 14:49

esdd's gravatar image

esdd
14.2k53251


Das kann wie hier gemacht werden: Wie forciere ich waagerechte oder senkrechte Linien in TikZ? Die Linie geht dann von S.337 zum Schnitt von horizontaler Linie von S.337 und vertikaler Linie an OU.west Syntax für den Schnitt ist (S.337-|OU.west).

So angewendet auf diesen Fall:

Open in writeLaTeX
\path (S.337) edge
  node[pos=0,above right]{zugeordnet}node[pos=0,below right]{N}
  node[pos=1,above left]{beinhaltet}node[pos=1,below left]{1}
  (S.337-|OU.west);

Waagerechte Verbindung

Permanenter link

beantwortet 27 Mär '14, 17:20

stefan's gravatar image

stefan ♦♦
5.8k12134

Genial und danke!

(27 Mär '14, 17:36) tt33tt

Wie man eine horizontale Linie erhält, hat @Stefan ja schon erklärt. Deshalb sind hier nur zur Ergänzung noch zwei Alternativen für die Verschiebung selbst:

Zum einen kann man mittels yshift die Linie auch direkt um einen bestimmten Betrag verschieben. Die Verschiebung wird dabei in eckigen Klammern unmittelbar vor dem Nodennamen angegeben, also zum Beispiel ([yshift=-.5cm]S.east):

Open in writeLaTeX
\path ([yshift=-.5cm]S.east) edge
  node[pos=0,above right]{zugeordnet}node[pos=0,below right]{N}
  node[pos=1,above left]{beinhaltet}node[pos=1,below left]{1}
  ([yshift=-.5cm]S-|OU.west);

Zum anderen kann man auch eine der Tabellenzellen zur Ausrichtung verwenden, da diese ebenfalls Noden mit den üblichen Ankern sind. Zum Beispiel hat die 1.Spalte in der 3.Zeile der Matrix (S) automatisch den Namen (S-3-1):

Open in writeLaTeX
 \path (S-3-1) edge
    node[pos=0,above right]{zugeordnet}node[pos=0,below right]{N}
    node[pos=1,above left]{beinhaltet}node[pos=1,below left]{1}
    (S-3-1-|OU.west);
Permanenter link

beantwortet 27 Mär '14, 17:48

esdd's gravatar image

esdd
14.2k53251

bearbeitet 27 Mär '14, 17:50

Genial, das mit den Tabellenzellen wusste ich noch nicht.
Ah, das mit yshift habe ich nun auch verstanden und ist auch richtig praktisch! Werde ich wohl beim Nächsten Mal auch nutzen :-)

(27 Mär '14, 18:18) tt33tt
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×51
×27
×2

Frage gestellt: 27 Mär '14, 16:54

Frage wurde angeschaut: 3,748 Mal

Zuletzt aktualisiert: 25 Apr '14, 14:49