
El nodo hijo se comporta de manera extraña dentro de un nodo matriz. Y sólo aparece en un nodo de la matriz. Sé que existen métodos para dibujarlo sin el nodo de matriz en este caso simple. Pero esencialmente necesito dibujar el diagrama de Hasse de un conjunto parcialmente ordenado, donde cada elemento es un árbol. Por lo tanto, sería bueno si se mantuviera el nodo de la matriz. De todos modos, el extraño comportamiento también es interesante. También se puede comprobarnodo hijo extrañamente inclinado hacia la derechapara ver que también aparece cuando se usa tikzpicture anidado. Se me sugiere plantear una nueva pregunta para el caso del nodo de 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}
Respuesta1
Los conjuntos implícitos de la positioning
biblioteca . Desafortunadamente, esto se transmite a los nodos dentro de la matriz.right = of …
anchor = west
Podríamos crear positioning
claves adicionales para una matriz que use matrix anchor
en lugar de, anchor
pero en este caso, la solución más sencilla sería establecer explícitamente anchor = center
(el valor predeterminado) o centered
(un alias para anchor = center
) para todos los nodos de las matrices.
La sintaxis del árbol de TikZ es muy simple y no establece ningún anclaje automáticamente.
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}
Producción
Respuesta2
Creo que el problema parece estar relacionado con positioning
. Existe una solución alternativa como la siguiente.
\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}