TikZ: Probleme mit Positionierung einer Grafik

Tabellen und Grafiken erstellen und anordnen


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

Beitrag von iTob »

Klar kann man TikZ nicht auf anhieb erfassen. Ich selbst habe mit Chains auch noch nix gemacht, weil ich dafür bisher keine Anwendung hatte, kann dir da also nicht helfen, aber es gibt ja sicher andere hier …
Ich wollte dich dennoch darauf hinweisen und dich eventuell davor bewahren, das Rad ein zweites Mal zu erfinden. Das Besagte Tutorial ist in der TikZ-Doku übrigens auf Seite 60 zu finden.


Gute Nacht!
Tobi

PS: „offen“ oder eben „mit Vorschlag“

SenZe
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 16. Jan 2011, 12:59

Beitrag von SenZe »

Hallo,

Ich habe mich nun nocheinmal mit der oben genannten Verbindungsfunktion auseinandergesetzt und versucht, diese um zwei Argumente zu erweitern, sodass mein einen beliebigen Zwischenpunkt angeben kann, durch den die Linien gehen:
\drawConnection[Gradverschiebung]{Node1}{Grad1}{Verbindung1}{ViaPunkt}{Verbindung2}{Node2}{Grad2}
Dies ist vor allem dann nötig, wenn man den westlichen Punkt einer Node mit dem Östlichen einer anderen Node, die nicht auf der selben Höhe liegt, schön verbinden möchte.

Leider klappt das so nicht wirklich. Ich denke auch, dass meine Anläufe zu unflexibel und schlecht sind, um hier als Minimalbeispiel gepostet zu werden. Daher wende ich mich in der Sache nochmal an euch, insbesondere an Dich, Elke. Wisst ihr/weißt du, wie man den Befehl um die oben beschriebene Möglichkeit erweitern könnte? Hier nochmal der das Grundgerüst des Befehls:
\newcommand\drawConnection[6][5]{%  
  \draw let \n1={#3+#1}, \n2={#6-#1} in (#2.\n1)#4(#5.\n2);
  \draw[dashed] let \n1={#3-#1}, \n2={#6+#1} in (#2.\n1)#4(#5.\n2);} 
Am einfachsten wäre es natürlich, wenn TikZ neben dem Verbindungsoperator "-|" auch "-|-" anbieten würde, das würde genau dem Problem entsprechen. Aber eine Suche in der Doku förderte nichts Ähnliches zu Tage, oder habe ich etwas übersehen?

SenZe
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 16. Jan 2011, 12:59

Beitrag von SenZe »

Guten Abend,

Es sei mir verziehen, wenn ich den Thread noch einmal hochbringe. Ich habe leider immer noch keine Lösung für das o.g. Problem gefunden und würde mich freuen, wenn hier jemand helfen könnte.

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

Beitrag von esdd »

Hallo,

ich habe gar nicht mitbekommen, dass du eigentlich nur so etwas wie -|- brauchst, um West einer Node mit Ost einer anderen mit der speziellen Doppellinie zu verbinden. Nun ist es vielleicht schon zu spät, aber trotzdem ein Vorschlag:
\documentclass{scrartcl} 

\usepackage{tikz} 
\usetikzlibrary{calc}

\newlength\mycoordx
\newlength\mycoordy 

\newcommand\meinCommand[3][0.6]{% 
  \node[minimum width=2*#1cm,circle,draw](#2)at(#3){A};} 
%\meinCommand[radius]{Nodenbezeichnung}{x,y} 

\newcommand\drawConnection[5][5]{% 
  \coordinate(d)($(#2)-(#4)$);
  \pgfextractx{\mycoordx}{d}\pgfextracty{\mycoordy}{d}
  \pgfmathtruncatemacro{\vorz}{-(0>\mycoordx*\mycoordy)+(0<\mycoordx*\mycoordy)}
  \draw let \n1={#3+#1}, \n2={#5-#1},%
            \p3=($(#2.#3)-(#2.\n1)$), \p4=($(#2.\n1)!0.5!(#4.\n2)$) in %
            (#2.\n1)--(#2.\n1-|\x4+\vorz*\y3,0)|-(#4.\n2); 
  \draw[dashed] let \n1={#3-#1}, \n2={#5+#1},%
                    \p3=($(#2.#3)-(#2.\n1)$), \p4=($(#2.\n1)!0.5!(#4.\n2)$) in %
                    (#2.\n1)--(#2.\n1-|\x4+\vorz*\y3,0)|-(#4.\n2);}
%\drawConnection[Gradverschiebung]{Node1}{Grad1}{Node2}{Grad2} 
%Vertauschung der Noden fuehrt zu Vertauschung der Linien 

\begin{document} 
  \begin{tikzpicture} 
    \draw[help lines] (-2,-4)grid(9,4); 
% 
    \meinCommand{P1}{0,0} 
    \meinCommand{P2}{3,-3} 
    \meinCommand{P3}{6,-3} 
    \meinCommand{P4}{6,0} 
    \meinCommand{P5}{8,3} 
%% 
    \drawConnection{P1}{0}{P2}{180}
    \drawConnection{P2}{0}{P3}{180}
    \drawConnection{P3}{90}{P4}{270}
    \drawConnection{P4}{0}{P5}{180} 
%%

  \end{tikzpicture} 
\end{document}
Grüße
Elke

Antworten