
Letzte Nacht habe ich dieses Stück hergestellt LaTeX
, indem ich relative Koordinaten verwendet habe, um Knoten mit Pfeilen zu verbinden:
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning} %for [above], [below] and shit.
\usetikzlibrary{arrows}
\usetikzlibrary{shapes}
\begin{document}
\begin{figure}[generic_scheme]
\tikzstyle{block}=[draw,shape=rectangle, minimum width=2.5cm,
minimum height=1cm]
\tikzstyle{f_arrow}=[->, thick]
\tikzstyle{d_arrow}=[<->, thick]
\begin{tikzpicture}[auto]
\node[block] (nuc) [] {Intel NUC};
\node[block] (power) [above=of nuc, yshift=0.5cm]
{Power\\Circuit};
\node[block] (smps) [left=of nuc, yshift=1.25cm] {SMPS};
\draw[f_arrow] (power.south) -- (nuc.north);
\draw[f_arrow] (power.west)++(0, -0.25) --
(smps.east)++(0, 0.25);
\draw[d_arrow] (nuc.west)++(0, 0.25) --
(smps.east)++(0, -0.25);
\end{tikzpicture}
\end{figure}
\end{document}
Das Ergebnis war irgendwie rätselhaft:
yshift
Heute habe ich diese alternative Methode anstelle der relativen Koordinaten ausprobiert :
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning} %for [above], [below] and shit.
\usetikzlibrary{arrows}
\usetikzlibrary{shapes}
\begin{document}
\begin{figure}[generic_scheme]
\tikzstyle{block}=[draw,shape=rectangle, minimum width=2.5cm,
minimum height=1cm]
\tikzstyle{f_arrow}=[->, thick]
\tikzstyle{d_arrow}=[<->, thick]
\begin{tikzpicture}[auto]
\node[block] (nuc) [] {Intel NUC};
\node[block] (power) [above=of nuc, yshift=0.5cm]
{Power\\Circuit};
\node[block] (smps) [left=of nuc, yshift=1.25cm] {SMPS};
\draw[f_arrow] (power.south) -- (nuc.north);
\draw[f_arrow] ([yshift=-0.25cm]power.west) --
([yshift=0.25cm]smps.east);
\draw[d_arrow] ([yshift=0.25cm]nuc.west) --
([yshift=-0.25cm]smps.east);
\end{tikzpicture}
\end{figure}
\end{document}
Was wie vorgesehen funktionierte:
Meine Frage wäre also: Was ist der Unterschied zwischen diesen scheinbar „identischen“ Teilen von LaTeX
? Übersehe ich etwas Triviales, während ich versuche zu verstehen, wie relative coordinate
und yshift
funktioniert? Oder ist es nur ein Fehler in meiner Standardinstallation von Ubuntu 14.04
pdfTeX 3.1415926-2.5-1.40.14?
Antwort1
Das Problem hierbei ist, dass die Verwendung
\draw[d_arrow] (nuc.west)++(0, 0.25) --
(smps.east)++(0, -0.25);
du bistnicht0,25 zu den Koordinaten addieren/subtrahieren, ohne den Pfad zu beeinflussen. Du bewegst den Bleistift, wie das folgende einfache Beispiel zeigt (schau, wo die Linie in beiden Fällen endet und wo die Pfeilspitze hinführt):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid (6,3);
\draw (0,0)++(0.5,0.5) -- (2,2)++(0.5,0.5);
\draw[->] (3,0)++(0.5,0.5) -- (5,2)++(0.5,0.5);
\end{tikzpicture}
\end{document}
Der Ablauf
\draw[->] (3,0)++(0.5,0.5) -- (5,2)++(0.5,0.5);
kann wie folgt gesehen werden:
- Bewegen Sie den Bleistift auf (3,0).
- Verschieben Sie es (aber ohne zu zeichnen) zusätzlich um 0,5 in den X- und Y-Koordinaten.
- Beginnen Sie mit dem Zeichnen bis (5,2).
- Bewegen Sie den Bleistift zusätzlich erneut um 0,5 in beiden Koordinaten (aber es gibt jetzt keine Zeichnung mehr).
- Platzieren Sie die Pfeilspitze(n).
Wenn Sie die Werte hinzufügen möchten, verwenden Sie Verschiebungen oder die calc
Bibliothek (hier möglicherweise ein Overkill):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid (6,3);
\draw[->] ([shift={(0.5,0.5)}]0,0) -- ([shift={(0.5,0.5)}]2,2);
\draw[->] ( $ (3,0) +(0.5,0.5) $ ) -- ( $ (5,2) + (0.5,0.5) $ );
\end{tikzpicture}
\end{document}