Tikz 스네이크 경로에는 노드(MWE) 앞/뒤에 공백이 있습니다.

Tikz 스네이크 경로에는 노드(MWE) 앞/뒤에 공백이 있습니다.

나는 tikz를 사용하여 노드 사이에 뱀 코일 가장자리/경로를 그리지만 일부 가장자리에는 시작 또는 끝 노드 앞/뒤에 공백이 있습니다. 다음은 작은 예입니다.

    \documentclass{standalone}
    \usepackage{tikz}
    \usetikzlibrary[positioning,decorations.pathmorphing]
    \begin{document}
    \begin{tikzpicture}

      \tikzstyle{enclosed} = [draw, circle, inner sep=0pt, minimum size=.15cm, fill=black]
      \tikzstyle{enclosedM} = [draw, circle, inner sep=0pt, minimum size=.15cm, fill=red]

      \node[enclosed, label={left: $x$}] (x) at (0,2) {};
      \node[enclosed, label={right: $y$}] (y) at (4,2) {};
      \node[enclosed] (w) at (2,0) {};
      \node[enclosed] (v) at (2,4) {};
      \node[enclosedM, label={above: $z$}] (z) at (2,1) {};
      \node[enclosedM, label={below: $t$}] (t) at (2,3) {};

      \draw[decorate,decoration={snake,amplitude=.2mm}]
        (x) -- (v)
        (v) -- (y)
        (x) -- (w)
        (w) -- (y)
        (x) -- (t)
        (v) -- (t)
        (y) -- (t)
        (x) -- (z)
        (w) -- (z)
        (z) -- (y);
    \end{tikzpicture}
    \end{document}

결과는 다음과 같습니다.위에서 생성된 내용의 PDF

중앙 하단 노드와 노드 사이에 약간의 공백이 있습니다.. 또한 최상위 노드와 노드 사이에 공백이 있습니다.와이.

이는 "진폭"이 0mm로 설정된 경우에도 여전히 발생합니다. 이는 가장자리가 전혀 장식되지 않은 경우와 동일할 것이라고 생각했습니다. 다양한 조합으로 "포스트 길이" 및 "사전 길이" 옵션을 설정하면 일부 가장자리가 수정되지만 이전에는 괜찮았던 다른 가장자리에서도 동일한 문제가 발생합니다.

를 제거 하고 설정 없이 정상적으로 decorate, decorations={...}사용 하면 제대로 작동하지만 가장자리가 물결 모양이 되지 않습니다. \draw공백을 제거하여 일반 가장자리처럼 작동하지만 반 물결 모양으로 동작하도록 하려면 어떻게 해야 합니까?

답변1

장식을 조심스럽게 다뤄야 합니다. 왜 이런 일이 발생하는지 정확히 알지 못하지만 분명히 하나의 단일 \draw명령에 여러 세그먼트를 넣기 때문입니다.

\draw모든 라인 세그먼트에 대해 별도로 작성해야 합니다 . 또는 원래 버전과 유사하게 만들려면 다음 코드를 사용할 수 있습니다.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathmorphing}
\begin{document}

\begin{tikzpicture}

  \tikzset{
   enclosed/.style={draw, circle, inner sep=0pt, minimum size=.15cm, fill=black},
   enclosedM/.style={enclosed, fill=red}
  }

  \node[enclosed, label={left: $x$}] (x) at (0,2) {};
  \node[enclosed, label={right: $y$}] (y) at (4,2) {};
  \node[enclosed] (w) at (2,0) {};
  \node[enclosed] (v) at (2,4) {};
  \node[enclosedM, label={above: $z$}] (z) at (2,1) {};
  \node[enclosedM, label={below: $t$}] (t) at (2,3) {};

  \foreach\x in {
    (x) -- (v),
    (v) -- (y),
    (x) -- (w),
    (w) -- (y),
    (x) -- (t),
    (v) -- (t),
    (y) -- (t),
    (x) -- (z),
    (w) -- (z),
    (z) -- (y)
  }
   \draw[decorate,decoration={snake,amplitude=.2mm}] \x;

\end{tikzpicture}

\end{document}

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

답변2

두 가지 의견(실제 답변 아님): tikzstyle더 이상 사용되지 않으며 선을 하나씩 그리면 문제가 없습니다. (문제가 로 인한 것인지 확인하지 않았습니다 tikzstyle.)업데이트: 코드를 압축했으며 대괄호를 잡아준 @Zarko에게 큰 감사를 드립니다!

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
  \tikzset{Snake/.style={decorate,decoration={snake,amplitude=.2mm}},
    enclosed/.style={draw, circle, inner sep=0pt, minimum size=.15cm,
    fill=black},
    enclosedM/.style={draw, circle, inner sep=0pt, minimum size=.15cm,
    fill=red}}

  \node[enclosed, label={left:$x$}] (x) at (0,2) {};
  \node[enclosed, label={right:$y$}] (y) at (4,2) {};
  \node[enclosed] (w) at (2,0) {};
  \node[enclosed] (v) at (2,4) {};
  \node[enclosedM, label={above:$z$}] (z) at (2,1) {};
  \node[enclosedM, label={below:$t$}] (t) at (2,3) {};
  \foreach \X in {x,y,v} \draw[Snake] (t) -- (\X);
  \foreach \X in {x,y,w} \draw[Snake] (z) -- (\X);
  \foreach \X in {x,y}{\foreach \V in {v,w}  \draw[Snake] (\V) -- (\X);}    
\end{tikzpicture}
\end{document}

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

관련 정보