TikZ-Blockdiagramm mit mehreren Pfeilen, die nicht vom Blockzentrum ausgehen

TikZ-Blockdiagramm mit mehreren Pfeilen, die nicht vom Blockzentrum ausgehen

Ich versuche, ein relativ einfaches Diagramm zu erstellen, weiß aber nicht, wie ich es schaffe, dass die mehreren Pfeile auf der linken Seite nicht aus der Mitte des Knotens herausragen.

Das Blockdiagramm, das ich erstellen möchte

Antwort1

Zwei Optionen: Verwendung von Ankern und einigen Verschiebungen und Verwendung der <name>.<angle >Syntax:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\node[draw,minimum size=2cm] (x) {X};
\draw[->] ([yshift=-10pt]x.west) -- node[fill=white] {a} +(-1cm,0pt);
\draw[->] ([yshift=10pt]x.west) -- node[fill=white] {b} +(-1cm,0pt);
\draw[->] (x.120) -- node[fill=white] {c} +(0pt,1cm);
\draw[->] (x.60) -- node[fill=white] {d} +(0pt,1cm);
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

AlsClaudio Fiandrinohat erwähnt insein Kommentar, eine weitere Möglichkeit besteht darin, die Bibliothek zu verwenden calc, sodass die Verschiebungen nicht absolut sind, sondern in Bezug auf Anker berechnet werden können:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
\node[draw,minimum size=2cm] (x) {X};
\draw[->] ([yshift=-10pt]x.west) -- node[fill=white] {a} +(-1cm,0pt);
\draw[->] ([yshift=10pt]x.west) -- node[fill=white] {b} +(-1cm,0pt);
\draw[->] (x.120) -- node[fill=white] {c} +(0pt,1cm);
\draw[->] (x.60) -- node[fill=white] {d} +(0pt,1cm);
\draw[->]
  ( $ (x.north east)!0.5!(x.east) $ ) -- 
    node[fill=white] {e} 
  +(1cm,0pt);
\draw[->] 
  ( $ (x.east)!0.5!(x.south east) $ ) -- 
    node[fill=white] {f} 
    +(1cm,0pt);
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Im obigen Beispiel ( $ (x.north east)!0.5!(x.east) $ )bedeutet dies den Punkt, dessen Koordinate auf halbem Weg zwischen x.north eastund liegt x.east.

Antwort2

Eine PSTricks-Lösung:

\documentclass{article}

\usepackage{pstricks-add}
\usepackage{xfp}

\newcommand*\Width{\fpeval{2*\arrowLength+\boxLength}}
\newcommand*\Height{\boxLength}

\def\arrowLength{3}
\def\boxLength{3}


\begin{document}

\begin{pspicture}(\Width,\Height)
 \psset{arrows = ->}
  \psframe(\arrowLength,0)(\fpeval{\arrowLength+\boxLength},\boxLength)
  \rput(\fpeval{\arrowLength+0.5*\boxLength},\fpeval{0.5*\boxLength}){X}
  \pcline(\arrowLength,\fpeval{\boxLength/3})(0,\fpeval{\boxLength/3})
  \ncput*{a}
  \pcline(\arrowLength,\fpeval{2/3*\boxLength})(0,\fpeval{2/3*\boxLength})
  \ncput*{b}
  \pcline(\fpeval{2*\arrowLength+\boxLength},\fpeval{0.5*\boxLength})%
         (\fpeval{\arrowLength+\boxLength},\fpeval{0.5*\boxLength})
  \ncput*{c}
\end{pspicture}

\end{document}

Ausgabe

\arrowLengthBeachten Sie, dass die Zeichnung „automatisiert“ ist und Sie nur die Werte von und auswählen müssen \boxLength.

verwandte Informationen