ノード間に矢印を描くときの xshift/yshift と相対座標の違いは何ですか?

ノード間に矢印を描くときの xshift/yshift と相対座標の違いは何ですか?

昨夜LaTeX、相対座標を使用して矢印でノードを結合し、次の を作成しました。

\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}

結果はちょっと不可解なものでした: ノード間の相対座標を使用した線

yshift今日は、相対座標の代わりに次の代替方法を試しました。

\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}

予想通りに動作しました: ノード間の yshift を使用する線。

そこで、私の質問は、一見「同一」に見える の各部分の違いは何かということです。と がLaTeXどのように動作するかを理解しようとしているときに、何か些細なことを見逃しているのでしょうか。それとも、これは私の標準のpdfTeX 3.1415926-2.5-1.40.14 インストールのバグなのでしょうか。relative coordinateyshiftUbuntu 14.04

答え1

ここで問題となるのは、

\draw[d_arrow] (nuc.west)++(0, 0.25) --
                (smps.east)++(0, -0.25);

あなたはないパスに影響を与えずに、座標に 0.25 を加算/減算します。次の簡単な例に示すように、鉛筆を移動します (両方のケースで線が終了する場所と矢印の先端がどこになるかを確認してください)。

\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}

ここに画像の説明を入力してください

シーケンス

\draw[->] (3,0)++(0.5,0.5) -- (5,2)++(0.5,0.5);

次のように考えることができます。

  • 鉛筆を(3,0)に移動します。
  • x 座標と y 座標の両方でさらに 0.5 移動します (ただし描画はしません)。
  • (5,2)への描画を開始します。
  • 再び、鉛筆を両方の座標でさらに 0.5 移動します (ただし、この時点では描画はありません)。
  • 矢印の先端を配置します。

値を追加する場合は、シフトまたはcalcライブラリを使用します (ここではやり過ぎかもしれません)。

\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}

ここに画像の説明を入力してください

関連情報