Como definir a distância entre nós no TikZ

Como definir a distância entre nós no TikZ

Estou tentando desenhar um gráfico da web para um artigo, usando o TikZ para desenhar as páginas individuais como nós. Quando eu digito, no entanto, o gráfico fica em um pequeno canto da linha e os nós ficam muito próximos. node distancenão funciona e minimum sizeapenas expande os nós de forma que eles se sobreponham. Como posso definir a distância mínima entre os nós? Obrigado.

O gráfico inacabado (sem linhas ainda) fica assim:

insira a descrição da imagem aqui

Idealmente, deve ser a largura da página e os nós devem ser distribuídos mais distantes uns dos outros.

Meu código fica assim:

 \documentclass[12pt, oneside]{amsart}      
\usepackage{geometry}                       
\geometry{a4paper}

\usepackage{tikz}

\begin{document}

\tikzstyle{node}=[circle, draw=black!100, thick]
\tikzstyle{dangling node}=[circle, draw=black!100, fill=black!30, thick]
\begin{tikzpicture}[minimum size=5mm][node distance=5.3cm,>=stealth?,bend angle=45,auto]
  \node[node](page 1){1};
  \node[node](page 2)[right of=page 1]{2};
  \node[node](page 3)[below of=page 1]{3};
  \node[node](page 4)[below of=page 2]{4};
  \node[dangling node](page 5)[below of=page 3, xshift=5mm]{5};
\end{tikzpicture}

\end{document}

Responder1

O tikzpictureambiente só levaumargumento opcional. Ou seja, se o LaTeX vê um [after \begin{tikzpicture}, ele pega tudo até o primeiro ]que vê, e essas são as opções para o ambiente. Quando você tem \begin{tikzpicture}[..][..], o segundo par de colchetes é na verdade lido apenas como texto normal, eu acho, e o TiKZ geralmente tenta suprimir qualquer coisa que não seja um pgfcomando /TikZ, então é basicamente ignorado.

Então, em resumo, todas as opções para a tikzpicturedevem ser colocadas no mesmo par de colchetes.

Se você alterar seu código adequadamente (e remover o que foi colocado incorretamente ?depois stealth), você descobrirá que sua node distanceconfiguração funciona conforme o esperado.

Dito isto, você pode querer seguir o conselho do TeXnicians para usar a positioningbiblioteca e dizer, por exemplo, right=ofem vez de right of=. Alguma discussão sobre isso é encontrada emDiferença entre "direito de =" e "direito = de" em PGF/TikZ. Outro motivo para usar a positioningbiblioteca é que você pode definir as distâncias dos nós horizontais e verticais separadamente, escrevendo node distance=Ycm and Xcm, um exemplo é visto no código abaixo. Como gernot menciona em um comentário, nesse caso provavelmente também seria desejável adicionar algo on gridao estilo do nó. on gridsignifica que as distâncias são calculadas a partir do ponto central dos nós.

Nota final: você pode colocar um estilo dentro de outro, então se dangling nodetiver o mesmo estilo que node, com a adição do fill, então você pode dizer dangling node/.style={node,fill=black!30}. Isso reduz a duplicação de código e facilita a modificação.

insira a descrição da imagem aqui

\documentclass[12pt, oneside]{amsart}
\usepackage{geometry}                       
\geometry{a4paper}

\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
  node/.style={circle, draw=black!100, thick, on grid}, % on grid added
  dangling node/.style={node, fill=black!30}
}
\begin{document}
\begin{center}
\begin{tikzpicture}[
  minimum size=5mm,
  node distance=4cm and 7cm,
  >=stealth,
  bend angle=45,
  auto
]
  % grid to easier see that the node centers line up  
  \draw [help lines] (-1,-9) grid (9,1);

  \node[node](page 1){1};
  \node[node](page 2)[right=of page 1]{22};
  \node[node](page 3)[below=of page 1]{3333};
  \node[node](page 4)[below=of page 2]{4555555};
  \node[dangling node](page 5)[below=of page 3, xshift=5mm]{5};
\end{tikzpicture}
\end{center}
\end{document}

informação relacionada