Ich habe ein Problem damit, die beiden Pfeile auf der rechten Seite richtig zu positionieren. Ich möchte, dass sie „in der Mitte“ sind.
Code:
\documentclass[12pt,a4paper]{scrartcl}
\begin{document}
\usetikzlibrary{decorations.markings}
\usepackage{tikz}
\begin{figure}[htbp]
\centering
\begin{minipage}[b]{.4\linewidth}
\begin{tikzpicture}
\node (System) [draw,minimum size=24mm] {Motor};
\coordinate[above left = of System.west] (a1);
\coordinate[below = 7mm of a1] (a2);
\coordinate[below = 7mm of a2] (a3);
\coordinate[below = 6.5mm of a3] (a4);
\coordinate[above right= of System.east] (b1);
\foreach \i [count=\xi from 1] in {2,...,5}
\coordinate[below=of b\xi] (b\i);
\foreach \i [count=\xi from 1] in {$u_\mathrm{a}$,$i_\mathrm{a}$,$u_\mathrm{f}$,$i_\mathrm{f}$}
\draw[-latex'] (a\xi) node[left] {\i} -- (a\xi-| System.west);
\foreach \i [count=\xi from 1] in {$n$,$M$}
\draw[-latex'] (System.east |- b\xi) -- (b\xi) node[right] {\i};
\end{tikzpicture}
\caption{GSM als Motor}
\label{fig:gsmmotor}
\end{minipage}
\qquad
\begin{minipage}[b]{.4\linewidth}
\begin{tikzpicture}
\node (System) [draw,minimum size=24mm] {Generator};
\coordinate[above left = of System.west] (a1);
\coordinate[below = 7mm of a1] (a2);
\coordinate[below = 7mm of a2] (a3);
\coordinate[below = 6.5mm of a3] (a4);
\coordinate[above right= of System.east] (b1);
\foreach \i [count=\xi from 1] in {2,...,5}
\coordinate[below=of b\xi] (b\i);
\foreach \i [count=\xi from 1] in {$n$,$M$,$u_\mathrm{f}$,$i_\mathrm{f}$}
\draw[-latex'] (a\xi) node[left] {\i} -- (a\xi-| System.west);
\foreach \i [count=\xi from 1] in {$u_a$,$i_a$}
\draw[-latex'] (System.east |- b\xi) -- (b\xi) node[right] {\i};
\end{tikzpicture}
\caption{GSM als Generator}
\label{fig:gsmgenerator}
\end{minipage}
\end{figure}
\end{document}
wie kann ich die Pfeile zentrieren?
Danke!
Antwort1
Bezogen aufmeine Antwort:
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{minipage}[b]{.4\linewidth}
\centering
\begin{tikzpicture}[
node distance = 3mm and 12mm
]
\node (System) [draw,minimum size=24mm] {Motor};
%
\coordinate[above left = of System.west, label=left:$u_a$] (a2);
\coordinate[above = 6mm of a2, label=left:$i_a$] (a1);
\coordinate[below left = of System.west, label=left:$u_f$] (a3);
\coordinate[below = 6mm of a3, label=left:$u_f$] (a4);
%
\coordinate[above right = of System.east, label=right:$n$] (b1);
\coordinate[below right = of System.east, label=right:$M$] (b2);
%
\foreach \i in {1,...,4}{\draw[-Latex] (a\i) -- (a\i -| System.west);}
\foreach \i in {1,2}{\draw[-Latex] (b\i -| System.east) -- (b\i);}
\end{tikzpicture}
\caption{GSM als Motor}
\label{fig:mimo}
\end{minipage}
\hfil
\begin{minipage}[b]{.4\linewidth}
\centering
\begin{tikzpicture}[
node distance = 3mm and 12mm
]
\node (System) [draw,minimum size=24mm] {Generator};
%
\coordinate[above left = of System.west, label=left:$n$] (a2);
\coordinate[above = 6mm of a2, label=left:$M$] (a1);
\coordinate[below left = of System.west, label=left:$u_3$] (a3);
\coordinate[below = 6mm of a3, label=left:$u_2$] (a4);
%
\coordinate[above right = of System.east, label=right:$u_a$] (b1);
\coordinate[below right = of System.east, label=right:$i_a$] (b2);
%
\foreach \i in {1,...,4}{\draw[-Latex] (a\i) -- (a\i -| System.west);}
\foreach \i in {1,2}{\draw[-Latex] (b\i -| System.east) -- (b\i);}
\end{tikzpicture}
\caption{GSM als Generator}
\label{fig:mimo}
\end{minipage}
\end{figure}
\end{document}
Antwort2
Sie benötigen dafür weder Bibliotheken noch komplizierte Befehle. Mit pos=<fraction>
können Sie an einer beliebigen Position der jeweiligen Kanten eine Koordinate hinzufügen und dann die Pfeile und Knoten hinzufügen. Das alles ist so einfach wie zu sagen
\path (System.south west) -- (System.north west)
foreach \X/\Z in {0.05/i_f,0.35/u_f,0.65/M,0.95/n}
{coordinate[pos=\X](aux) (aux) edge[latex-] ++ (-1,0)
node[left=1cm]{$\Z$}};
MWE:
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{minipage}[b]{.4\linewidth}
\begin{tikzpicture}
\node (System) [draw,minimum size=24mm] {Motor};
\path (System.south west) -- (System.north west)
foreach \X/\Z in {0.05/i_f,0.35/u_f,0.65/M,0.95/n}
{coordinate[pos=\X](aux) (aux) edge[latex-] ++ (-1,0)
node[left=1cm]{$\Z$}};
\path (System.south east) -- (System.north east)
foreach \X/\Z in {0.3/u_a,0.7/i_a}
{coordinate[pos=\X] (aux) (aux) edge[-latex] ++ (1,0) node[right=1cm]{$\Z$}};
\end{tikzpicture}
\caption{GSM als Motor.}
\label{fig:gsmmotor}
\end{minipage}
\qquad
\begin{minipage}[b]{.4\linewidth}
\begin{tikzpicture}
\node (System) [draw,minimum size=24mm] {Motor};
\path (System.south west) -- (System.north west)
foreach \X/\Z in {0.05/i_f,0.35/u_f,0.65/M,0.95/n}
{coordinate[pos=\X](aux) (aux) edge[latex-] ++ (-1,0)
node[left=1cm]{$\Z$}};
\path (System.south east) -- (System.north east)
foreach \X/\Z in {0.3/u_a,0.7/i_a}
{coordinate[pos=\X] (aux) (aux) edge[-latex] ++ (1,0) node[right=1cm]{$\Z$}};
\end{tikzpicture}
\caption{GSM als Generator.}
\label{fig:gsmgenerator}
\end{minipage}
\end{figure}
\end{document}
Antwort3
Um zwei Pfeile in derMitte, ich dachte, du wolltest(ich hoffe, ich irre mich nicht)diese beiden Pfeile zeigen auf diedritteUndzwei Drittelder Seite. Dazu verwende ich die
calc
Bibliothek, die es mir ermöglicht, diese Drittanbieter genau zu lokalisieren:\coordinate (u) at ($(System.north east)!.3333!(System.south east)$); \coordinate (i) at ($(System.north east)!.6666!(System.south east)$);
Um die
arrow
horizontal zu platzieren, platziere ich zuerst den Text an derright
von jedemdrittedes Systemknotens und zeichnen Sie dann den Pfeil mit deredge
Syntax:\node[right =of u]{$n$}edge[<-](u); \node[right =of i]{$M$}edge[<-](i);
Ich habe mir die Freiheit genommen, die beiden Figuren mit TikZ nebeneinander zu platzieren. Dazu habe ich jede von ihnen in eine
scope
Umgebung gesetzt und die zweite mit verschobenxshift=7cm
. Jedem Bereich habe ich einen Namen gegeben:local bounding box=motor
undlocal bounding box=generator
, wodurch ich den Text sehr einfach darunter platzieren kann.\begin{scope}[local bounding box=motor] % code for figure 1 % ... \end{scope} \node [anchor=north,text width=6cm]at (motor.south) {\captionof{figure}{GSM als Motor}}; % caption text
\begin{scope}[xshift=7cm,local bounding box=generator] % code for figure 2 % .... \end{scope} \node [anchor=north,text width=6cm]at (generator.south) {\captionof{figure}{GSM als Generator}}; % caption text
Um die Abbildungen nicht manuell zu nummerieren, wie unterstrichen durchTorbjørn TIn meiner ersten Lösung verwende ich das
capt-of
Paket, das die Nummerierung nicht schwebender Objekte ermöglicht.- Daher habe ich alle Zeilen Ihres Codes kommentiert, die ich nicht mehr verwende (ohne sie zu löschen).
Übersetzt mit www.DeepL.com/Translator
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{tikz,capt-of}
\usetikzlibrary{decorations.markings,positioning,arrows,calc}
\begin{document}
%\begin{figure}[htbp]
\centering
%\begin{minipage}[b]{.4\linewidth}
\begin{tikzpicture}
\begin{scope}[local bounding box=motor]
\node (System) [draw,minimum size=24mm] {Motor};
\coordinate[above left = of System.west] (a1);
\coordinate[below = 7mm of a1] (a2);
\coordinate[below = 7mm of a2] (a3);
\coordinate[below = 6.5mm of a3] (a4);
\coordinate[above right= of System.east] (b1);
\foreach \i [count=\xi from 1] in {2,...,5}
\coordinate[below=of b\xi] (b\i);
\foreach \i [count=\xi from 1] in {$u_\mathrm{a}$,$i_\mathrm{a}$,$u_\mathrm{f}$,$i_\mathrm{f}$}
\draw[-latex'] (a\xi) node[left] {\i} -- (a\xi-| System.west);
% \foreach \i [count=\xi from 1] in {$n$,$M$}
% \draw[-latex'] (System.east |- b\xi) -- (b\xi) node[right] {\i};
\coordinate (u) at ($(System.north east)!.3333!(System.south east)$);
\coordinate (i) at ($(System.north east)!.6666!(System.south east)$);
\node[right =of u]{$n$}edge[<-](u);
\node[right =of i]{$M$}edge[<-](i);
\end{scope}
%\node[anchor=north,yshift=-5mm] at (motor.south){Figure\,1: GSM als Motor};
\node [anchor=north,text width=6cm]at (motor.south) {\captionof{figure}{GSM als Motor}};
% \end{tikzpicture}
% \caption{GSM als Motor}
% \label{fig:gsmmotor}
%\end{minipage}
%\qquad
%\begin{minipage}[b]{.4\linewidth}
% \begin{tikzpicture}
\begin{scope}[xshift=7cm,local bounding box=generator]
\node (System) [draw,minimum size=24mm] {Generator};
\coordinate[above left = of System.west] (a1);
\coordinate[below = 7mm of a1] (a2);
\coordinate[below = 7mm of a2] (a3);
\coordinate[below = 6.5mm of a3] (a4);
\coordinate[above right= of System.east] (b1);
\foreach \i [count=\xi from 1] in {2,...,5}
\coordinate[below=of b\xi] (b\i);
\foreach \i [count=\xi from 1] in {$n$,$M$,$u_\mathrm{f}$,$i_\mathrm{f}$}
\draw[-latex'] (a\xi) node[left] {\i} -- (a\xi-| System.west);
% \foreach \i [count=\xi from 1] in {$u_a$,$i_a$}
% \draw[-latex'] (System.east |- b\xi) -- (b\xi) node[right] {\i};
\coordinate (u) at ($(System.north east)!.3333!(System.south east)$);
\coordinate (i) at ($(System.north east)!.6666!(System.south east)$);
\node[right =of u]{$u_a$}edge[<-](u);
\node[right =of i]{$i_a$}edge[<-](i);
\end{scope}
%\node[anchor=north,yshift=-5mm] at (generator.south){Figure\,2: GSM als Generator};
\node [anchor=north,text width=6cm]at (generator.south) {\captionof{figure}{GSM als Generator}};
\end{tikzpicture}
% \caption{GSM als Generator}
\label{fig:gsmgenerator}
%\end{minipage}
%\end{figure}
\end{document}