Cómo establecer la distancia entre nodos en TikZ

Cómo establecer la distancia entre nodos en TikZ

Estoy intentando dibujar un gráfico web para un artículo, usando TikZ para dibujar las páginas individuales como nodos. Sin embargo, cuando compongo, el gráfico se encuentra en una pequeña esquina de la línea y los nodos están demasiado juntos. node distanceno funciona y minimum sizesimplemente expande los nodos de modo que se superpongan entre sí. ¿Cómo puedo establecer la distancia mínima entre los nodos? Gracias.

El gráfico inacabado (aún sin líneas) se ve así:

ingrese la descripción de la imagen aquí

Lo ideal es que sea del ancho de la página y que los nodos estén distribuidos más lejos unos de otros.

Mi código se ve así:

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

Respuesta1

El tikzpicturemedio ambiente sólo tomaunoArgumento opcional. Es decir, si LaTeX ve un [after \begin{tikzpicture}, toma todo hasta el primero ]que ve, y esas son las opciones para el entorno. Cuando lo tiene \begin{tikzpicture}[..][..], creo que el segundo par de corchetes en realidad se lee como texto normal, y TiKZ generalmente intenta suprimir cualquier cosa que no sea un pgfcomando /TikZ, por lo que básicamente se ignora.

En resumen, todas las opciones para a tikzpicturedeben colocarse en el mismo par de corchetes.

Si cambia su código en consecuencia (y elimina lo que está fuera de lugar ?después de stealth), encontrará que su node distanceconfiguración funciona como se esperaba.

Dicho esto, es posible que desees seguir los consejos de TeXnician sobre el uso de la positioningbiblioteca y decir, por ejemplo, right=ofen lugar de right of=. Alguna discusión sobre esto se encuentra enDiferencia entre "derecha de=" y "derecha=de" en PGF/TikZ. Otra razón para usar la positioningbiblioteca es que puede establecer las distancias de los nodos horizontales y verticales por separado, escribiendo node distance=Ycm and Xcm; se ve un ejemplo en el código siguiente. Como menciona Gernot en un comentario, en ese caso probablemente también querría agregar algo on gridal estilo del nodo. on gridsignifica que las distancias se calculan desde el punto central de los nodos.

Nota final: puedes poner un estilo dentro de otro, así que si dangling nodetiene el mismo estilo que node, con la adición de fill, entonces puedes decir dangling node/.style={node,fill=black!30}. Esto reduce la duplicación de código y facilita su modificación.

ingrese la descripción de la imagen aquí

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

información relacionada