
O nó filho se comporta de maneira estranha dentro de um nó matriz. E só aparece em um nó da matriz. Eu sei que existem métodos para desenhá-lo sem o nó da matriz neste caso simples. Mas essencialmente preciso desenhar o diagrama de Hasse de um conjunto parcialmente ordenado, onde cada elemento é uma árvore. Portanto, seria bom se o nó da matriz fosse mantido. De qualquer forma, o comportamento estranho também é interessante. Pode-se também verificarnó filho estranhamente inclinado para a direitapara ver que ele também aparece ao usar o tikzpicture aninhado. Sugere-se que levante uma nova questão para o caso do nó matriz.
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
[level distance = 10mm]
\node [matrix, label=left:{$T_1$}] (T1)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\node [matrix, right = of T1, label=left:{$T_2$}] (T2)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\end{tikzpicture}
\end{document}
Responder1
Os conjuntos implícitos positioning
da biblioteca . Infelizmente, isso é transmitido aos nós dentro da matriz.right = of …
anchor = west
Poderíamos criar positioning
chaves extras para uma matriz que usamos matrix anchor
em vez de, anchor
mas neste caso, a solução mais fácil seria definir explicitamente anchor = center
(o padrão) ou centered
(um alias para anchor = center
) para todos os nós das matrizes.
A sintaxe da árvore do TikZ é muito simples e não define nenhuma âncora automaticamente.
Código
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
level distance = 10mm,
every matrix/.style={
nodes={draw, circle, inner sep=1pt, minimum size = 1mm, centered}}]
\node [matrix, label=left:{$T_1$}] (T1){
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};\\};
\node [matrix, right = of T1, label=left:{$T_2$}] (T2){
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};\\};
\end{tikzpicture}
\end{document}
Saída
Responder2
Acho que o problema parece estar relacionado com positioning
. Existe uma solução alternativa como segue.
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}
[level distance = 10mm]
\node [matrix, label=left:{$T_1$}] (T1)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node [grow=down] {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\node [matrix, label=left:{$T_2$}, matrix anchor=west] at ($(T1.east) + (10mm,0)$) (T2)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\end{tikzpicture}
\end{document}