Was ist der Unterschied zwischen X-Shift/Y-Shift und relativen Koordinaten beim Zeichnen eines Pfeils zwischen Knoten?

Was ist der Unterschied zwischen X-Shift/Y-Shift und relativen Koordinaten beim Zeichnen eines Pfeils zwischen Knoten?

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: Linien mit relativen Koordinaten zwischen Knoten

yshiftHeute 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: Linien mit Y-Verschiebung zwischen Knoten.

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 coordinateund yshiftfunktioniert? Oder ist es nur ein Fehler in meiner Standardinstallation von Ubuntu 14.04pdfTeX 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}

Bildbeschreibung hier eingeben

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 calcBibliothek (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}

Bildbeschreibung hier eingeben

verwandte Informationen