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 distance
não funciona e minimum size
apenas 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:
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 tikzpicture
ambiente 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 pgf
comando /TikZ, então é basicamente ignorado.
Então, em resumo, todas as opções para a tikzpicture
devem 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 distance
configuração funciona conforme o esperado.
Dito isto, você pode querer seguir o conselho do TeXnicians para usar a positioning
biblioteca e dizer, por exemplo, right=of
em 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 positioning
biblioteca é 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 grid
ao estilo do nó. on grid
significa 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 node
tiver 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.
\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}