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}
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 \draw
normalmente, 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 \draw
comando.
Você deve escrever um separado \draw
para 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}
Responder2
Dois comentários (não é uma resposta real): tikzstyle
está 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}