
Ich schreibe gerade meine Bachelorarbeit mit LaTex und Tikz und stecke derzeit fest. Auch wenn mir meine älteren Beiträge bei vielen Dingen rund um Tikz sehr geholfen haben, gibt es für den unerfahrenen Benutzer immer wieder neue Schwierigkeiten...
Ich möchte ein Bild wie dieses hier erhalten, bei dem ich die Pfeile benennen und vor allem ihre Größe (oder Knotenabstände einzeln?) ändern kann.
Ich bin so weit gekommen, aber wie Sie sehen, weiß ich nicht, wie ich den Pfeil unten machen soll, der den Eingabeknoten mit dem dritten Block verbindet, und ich weiß nicht, wie ich die Distanz zwischen den drei Blöcken verkürzen kann. Hier ist mein Bild:
... und mein Code
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows, positioning, quotes}
\usetikzlibrary{arrows.meta, positioning, decorations.markings}
\usepackage{gensymb}
\usepackage{verbatim}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{tikzpicture}
[block/.style={draw,minimum width=#1,minimum height=2em},
block/.default=10em,high/.style={minimum height=3em},auto]
%node distance=5em,auto]
% Nodes
\node (n0) {Input};
\node[block=3em,high,right=of n0] (n1) {DiM};
\node[block=3em,high,right=of n1] (n2) {Sensor};
\node[block=3em,high,right=of n2] (n3) {CANoe};
\node[right=of n3] (n4) {Measurement File};
% Connections
\draw[-stealth] (n0) edge[""] (n1);
\draw[-stealth] (n1) edge[""] (n2);
\draw[-stealth] (n2) edge[""] (n3);
\draw[-stealth] (n3) edge[""] (n4);
\end{tikzpicture}
\caption{CANoe Measurement Network}
\label{fig:measurement_network}
\end{figure}
\end{document}
Ich habe alle wichtigen Presets geladen (Babel, Tikz usw.)
Ich wäre froh, wenn mir jemand helfen könnte! Vielen Dank, Leute, ich weiß die Hilfe wirklich zu schätzen!
Antwort1
Verwenden Sie node distance
für den Abstand in of
. Um zusätzliche Pfeile zu zeichnen, warum zeichnen Sie nicht einfach „normale“ Pfeile?
BEARBEITEN:Um diesem Pfeil Text hinzuzufügen, müssen Sie kleine Änderungen vornehmen.
BEARBEITEN 2:Um den Startpunkt des Pfeils zu ändern, müssen Sie nur den Mittelpunkt des ersten Pfeils benennen. Das edge
ist übrigens nicht notwendig, sondern einfach --
ok.
\documentclass[tikz,margin=10]{standalone}
\usetikzlibrary{positioning,arrows.meta,quotes}
\begin{document}
\begin{tikzpicture}
[block/.style={draw,minimum width=#1,minimum height=2em},
block/.default=10em,high/.style={minimum height=3em},auto,
node distance=5mm, % initially 1cm
>=Stealth]
%node distance=5em,auto]
% Nodes
\node (n0) {Input};
\node[block=3em,high,right=1cm of n0] (n1) {DiM};
\node[block=3em,high,right=of n1] (n2) {Sensor};
\node[block=3em,high,right=of n2] (n3) {CANoe};
\node[right=1cm of n3,align=center] (n4) {Measurement\\File};
% Connections
\draw[->] (n0) -- (n1) coordinate[midway] (start);
\draw[->] (n1) -- (n2);
\draw[->] (n2) -- (n3);
\draw[->] (n3) -- (n4);
\coordinate (x) at ([yshift=-1cm]n3.south);
\coordinate (y) at (start |- x);
\draw (start) -- (y) (x) edge[->] (n3.south) (x) edge["EXAMPLE"] (y);
\end{tikzpicture}
\end{document}
Antwort2
Sie können auch verwenden, \foreach
um die Codegröße zu reduzieren. Um den Knotenabstand lokal zu ändern, verwenden Sie einfach, right=<some length> of
wie auch von @Fractal angegeben. Außerdem kann der Pfeil nach unten, rechts und oben wie folgt vereinfacht werden \draw[->] (n0) --++(0,-4em) -| (n3);
:
\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}
\begin{document}
\begin{tikzpicture}
[block/.style={draw,minimum width=#1,minimum height=1em},
block/.default=10em,high/.style={minimum height=3em},
node distance=2em, > = Stealth]
% Nodes
\node (n0) {Input};
\node[block=3em,high,right=3em of n0] (n1) {DiM};
\node[block=3em,high,right=of n1] (n2) {Sensor};
\node[block=3em,high,right=of n2] (n3) {CANoe};
\node[right=3em of n3] (n4) {Measurement File};
% Connections
\foreach \i [count=\j from 1] in {0,...,3}
\draw[->] (n\i) -- (n\j);
\draw[->] (n0) --++(0,-4em) -| (n3);
\end{tikzpicture}
\end{document}
Antwort3
Falls Sie keine Beschriftungen an den Kanten zwischen den Knoten in der Kette benötigen, können Sie den Code Ihres Blockschemas einfach mithilfe der chains
Bibliothek zeichnen und für die Pfeile zwischen ihnen ein Makro verwenden join
. Die Beschriftung des Pfeils wird nur auf dem Pfeil angezeigt, der „Input“ mit „CANoe“ verknüpft, und der Knoten wird entsprechend auf dem Pfeil positioniert:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
chains,
positioning}
\begin{document}
\begin{tikzpicture}[auto,
node distance = 7mm and 9mm,
start chain = going right,
box/.style = {draw, minimum size=3ex, inner sep=2mm,
on chain, join=by arr},
arr/.style = {-Stealth}
]
% Nodes
\node (n0) [box, draw=none] {Input};
\node (n1) [box] {DiM};
\node (n2) [box] {Sensor};
\node (n3) [box] {CANoe};
\node (n4) [box, draw=none] (n4) {Measurement File};
% Connections
\coordinate[below=of n3] (aux);
\draw[arr] (n0) |- node[pos=0.75] {forefeed} (aux) -- (n3);
\end{tikzpicture}
\end{document}
Falls Sie alle Kanten beschriftet haben möchten, join
können Sie diese durch Pfeile mit Beschriftungen ersetzen. Dafür ist es praktisch, quotes
die Bibliothek zu verwenden:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
chains,
positioning,
quotes}
\begin{document}
\begin{tikzpicture}[auto,
node distance = 7mm and 11mm,
start chain = going right,
box/.style = {draw, minimum size=3ex, inner sep=2mm,
on chain},
every edge/.style = {draw, -Stealth}
]
% Nodes
\node (n0) [box, draw=none] {Input};
\node (n1) [box] {DiM};
\node (n2) [box] {Sensor};
\node (n3) [box] {CANoe};
\node (n4) [box, draw=none] (n4) {Measurement File};
% Connections
\coordinate[below=of n3] (aux);
\draw (n0) edge["{$u[n]$}"] (n1)
(n1) edge["{$e[n]$}"] (n2)
(n2) edge["{$v[n]$}"] (n3)
(n3) edge["{$y[n]$}"] (n4);
\draw (n0) |- node[pos=0.75] {forefeed} (aux)
(aux) edge (n3);
\end{tikzpicture}
\end{document}