O caminho da cobra Tikz tem espaços em branco antes/depois do nó (MWE)

O caminho da cobra Tikz tem espaços em branco antes/depois do nó (MWE)

Estou usando o tikz para desenhar uma borda/caminho em espiral entre os nós, mas algumas bordas têm espaços em branco antes/depois do nó inicial ou final. Aqui está um pequeno exemplo:

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

O resultado é:PDF do que é produzido acima

Observe que há algum espaço em branco entre o nó central inferior e o nóz. Além disso, há espaço em branco entre o nó superior e o nósim.

Isso ainda ocorre mesmo quando a "amplitude" está definida como 0 mm, o que pensei que seria equivalente a se a borda não estivesse decorada. Definir as opções de "comprimento da postagem" e "pré-comprimento" com várias combinações corrige algumas arestas, mas cria o mesmo problema com outras arestas que estavam OK antes.

Se eu remover decorate, decorations={...}e usar \drawnormalmente, sem configurações, funciona bem, mas as bordas não ficam onduladas. Como posso me livrar do espaço em branco para que ele se comporte como uma borda normal, mas semi-ondulada?

Responder1

Você tem que lidar com a decoração com cuidado. Não sei exatamente por que isso acontece, mas obviamente é porque você colocou vários segmentos em um único \drawcomando.

Você deve escrever um separado \drawpara cada segmento de linha. Ou, para torná-lo semelhante à sua versão original, você pode usar o seguinte código:

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

insira a descrição da imagem aqui

Responder2

Dois comentários (não é uma resposta real): tikzstyleestá obsoleto e se você desenhar as linhas uma por uma, não haverá problema. (Não verifiquei se o problema é devido a tikzstyle.)ATUALIZAR: compactificou o código e um grande obrigado a @Zarko por pegar os colchetes!

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

insira a descrição da imagem aqui

informação relacionada