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} |
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 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); beantwortet 27 Mär '14, 22:20 stefan ♦♦ Genial und danke!
(27 Mär '14, 22: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 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 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); beantwortet 27 Mär '14, 22:48 esdd Genial, das mit den Tabellenzellen wusste ich noch nicht.
(27 Mär '14, 23:18)
tt33tt
|