Seite 1 von 1

Symmetrie in TikZ

Verfasst: Do 16. Jul 2015, 14:08
von Katomako
Hallo zusammen:),

kann mir jemand sagen wie ich die Eingänge s und Ausgänge s symmetrisch um die Mittelachse bekommen und das die Pfeile am Ausgang alle aus einem Punkt herauskommen?

Vielen Dank für jeden Tipp:)
\tikzset{input/.style={text depth=.25ex}}
\tikzset{output/.style={text depth=.25ex}}
\tikzset{plus/.style={circle, draw, thick, minimum size=0.5cm, inner sep=0, fill=white}}
\tikzset{filter/.style={rectangle, draw, thick, minimum width=2cm, minimum height=0.75cm, inner xsep=0.25cm,fill=white}}

\tikzset{/tikz/thin/.style={line width=.6pt}}
\tikzset{/tikz/thick/.style={line width=1pt}}
\tikzset{every picture/.style={thin}}

\def\unitDist{1cm}

\begin{tikzpicture}[x=\unitDist,y=\unitDist,font=\small,>=stealth']

  \node[input, align=right]                           (input1) {$s_{1}$};
  \node[input, below=0.5 of input1,align=right]       (input2) {$s_{2}$};
  \node[input, below=0.5 of input2,align=right]       (input3) {...};
  \node[input, below=0.5 of input3,align=right]       (input4) {$s_{n}$};

  \node[plus, right=0.5 of input2]           	(sum) {$+$};
  
  \node[filter, right=0.5 of sum]    (node) {Verarbeitung};

  \node[input, right=0.5 of node,align=left]        (output2) {$s_{1}$};
  \node[input, above=0.5 of output2,align=left]        (output1) {$s_{1}$};
  \node[input, below=0.5 of output2,align=left]        (output3) {...};
  \node[input, below=0.5 of output3,align=left]        (output4) {$s_{1}$};

  \draw[->]  (input1) -- (sum);
  \draw[->]  (input2) -- (sum);
  \draw[->]  (input3) -- (sum);
  \draw[->]  (input4) -- (sum);
  \draw[->] (sum) -- (node);
  \draw[->] (node) -- (output1);
  \draw[->] (node) -- (output2);
  \draw[->] (node) -- (output3);
  \draw[->] (node) -- (output4);

  
\end{tikzpicture}

Verfasst: Do 16. Jul 2015, 15:37
von sudo
Ich hab dein Beispiel zu einem vollständigen Minimalbeispiel ergänzt.

Lies am besten einmal Kapitel 3 im pgfmanual.

Ich habe einfach noch jeweils einen Eingang und einen Ausgang ergänzt. Die Knoten manuell um einen bestimmten Betrag zu verschieben ist aber auch nicht schwer. Auch bei den Ausgängen wird immer der gleiche Punkt verwendet. Dieser liegt eben genau im Zentrum von deines \node. Ich habe daher jeweils .east ergänzt. Dann wird immer der östliche Punkt verwendet. Auch hier könnte man den Punkt noch verschieben und wieder hinter den Knoten legen …

… schreibt man in LateX übrigens mit \ldots im Text- und \dots im Mathe-Modus.
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows, positioning}
\begin{document}
\tikzset{input/.style={text depth=.25ex}}
\tikzset{output/.style={text depth=.25ex}}
\tikzset{plus/.style={circle, draw, thick, minimum size=0.5cm, inner sep=0, fill=white}}
\tikzset{filter/.style={rectangle, draw, thick, minimum width=2cm, minimum height=0.75cm, inner xsep=0.25cm,fill=white}}

\tikzset{/tikz/thin/.style={line width=.6pt}}
\tikzset{/tikz/thick/.style={line width=1pt}}
\tikzset{every picture/.style={thin}}

\def\unitDist{1cm}

\begin{tikzpicture}[x=\unitDist,y=\unitDist,font=\small,>=stealth']

  \node[input, align=right]                           (input1) {$s_{1}$};
  \node[input, below=0.5 of input1,align=right]       (input2) {$s_{2}$};
  \node[input, below=0.5 of input2,align=right]       (input3) {$s_{3}$};
  \node[input, below=0.5 of input3,align=right]       (input4) {$\dots$\strut};
  \node[input, below=0.5 of input4,align=right]       (input5) {$s_{n}$};

  \node[plus, right=0.5 of input3]              (sum) {$+$};
  
  \node[filter, right=0.5 of sum]    (node) {Verarbeitung};

  \node[input, right=0.5 of node,align=left]        (output3) {$s_{3}$};
  \node[input, above=0.5 of output3,align=left]        (output2) {$s_{2}$};
  \node[input, above=0.5 of output2,align=left]        (output1) {$s_{1}$};
  \node[input, below=0.5 of output3,align=left]        (output4) {$\dots$\strut};
  \node[input, below=0.5 of output4,align=left]        (output5) {$s_{n}$};

  \draw[->]  (input1) -- (sum);
  \draw[->]  (input2) -- (sum);
  \draw[->]  (input3) -- (sum);
  \draw[->]  (input4) -- (sum);
  \draw[->]  (input5) -- (sum);
  \draw[->] (sum) -- (node);
  \draw[->] (node.east) -- (output1);
  \draw[->] (node.east) -- (output2);
  \draw[->] (node.east) -- (output3);
  \draw[->] (node.east) -- (output4);
  \draw[->] (node.east) -- (output5);

  
\end{tikzpicture}
\end{document}

Verfasst: Do 16. Jul 2015, 17:34
von Katomako
Danke :)! Dass mit den Himmelsrichtungen macht alles natürlich sehr bequem.

Verfasst: Do 16. Jul 2015, 17:41
von Besserwisser
sudo hat geschrieben:… schreibt man in LateX übrigens mit \ldots im Text- und \dots im Mathe-Modus.
\dots ist im LaTeX-Kern definiert als:
\DeclareRobustCommand{\dots}{%
   \ifmmode\mathellipsis\else\textellipsis\fi}
und \ldots als:
\let\ldots\dots
Die oft gelesene Behauptung \dots verlange den Mathemodus und im Textmodus sei \ldots zu verwenden, stimmt also nicht. \dots funktioniert genauso im Textmodus und \ldots liefert im Mathemodus dasselbe wie \dots.

Keine Ahnung, woher die Fehlinformation kommt.

Verfasst: Fr 17. Jul 2015, 09:23
von sudo
Besserwisser hat geschrieben:Keine Ahnung, woher die Fehlinformation kommt.
Das kommt davon, wenn man nicht in den LaTeX-Kern guckt und nur nachplappert, was andere erzählen. Danke auf jeden Fall für dir Korrektur!