
子ノードは、行列ノード内で奇妙な動作をします。そして、それは 1 つの行列ノードにのみ現れます。この単純なケースでは、行列ノードなしで描画する方法があることは知っています。しかし、本質的には、各要素がツリーである半順序集合のハッセ図を描く必要があります。したがって、行列ノードが保持されていれば便利です。いずれにしても、奇妙な動作も興味深いものです。次のことも確認してください。子ノードが奇妙に右に傾いているネストされた tikzpicture を使用する場合にも表示されることを確認します。マトリックス ノードの場合に新しい質問を提起するように提案されました。
\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}
答え1
ライブラリpositioning
はright = of …
暗黙的に を設定しますanchor = west
。残念ながら、これはマトリックス内のノードに渡されます。
の代わりにpositioning
を使用する行列の追加キーを作成することもできますが、この場合、最も簡単な解決策は、行列のすべてのノードに対して(デフォルト) または( のエイリアス) を明示的に設定することです。matrix anchor
anchor
anchor = center
centered
anchor = center
TikZ のツリー構文は非常にシンプルで、アンカーを自動的に設定しません。
コード
\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}
出力
答え2
この問題は に関連しているようですpositioning
。回避策は次のとおりです。
\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}