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