노드 사이에 화살표를 그릴 때 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? 어떻게 작동 relative coordinate하는지 이해하려고 노력하는 동안 사소한 것을 놓치고 있습니까 yshift? 아니면 내 주식 Ubuntu 14.04pdfTeX 3.1415926-2.5-1.40.14 설치 의 버그일까요 ?

답변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}

여기에 이미지 설명을 입력하세요

관련 정보