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 distance
no funciona y minimum size
simplemente 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í:
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 tikzpicture
medio 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 pgf
comando /TikZ, por lo que básicamente se ignora.
En resumen, todas las opciones para a tikzpicture
deben 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 distance
configuración funciona como se esperaba.
Dicho esto, es posible que desees seguir los consejos de TeXnician sobre el uso de la positioning
biblioteca y decir, por ejemplo, right=of
en 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 positioning
biblioteca 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 grid
al estilo del nodo. on grid
significa 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 node
tiene 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.
\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}