매트릭스 노드 내부의 하위 노드의 이상한 동작

매트릭스 노드 내부의 하위 노드의 이상한 동작

하위 노드가 매트릭스 노드 내에서 이상하게 동작합니다. 그리고 하나의 매트릭스 노드에만 나타납니다. 이 간단한 경우에는 행렬 노드 없이 그리는 방법이 있다는 것을 알고 있습니다. 그러나 본질적으로 나는 각 요소가 트리인 부분적으로 정렬된 집합의 Hasse 다이어그램을 그려야 합니다. 그래서 매트릭스 노드를 유지하면 좋을 것 같습니다. 어쨌든 이상한 행동도 흥미롭다. 확인할 수도 있습니다이상하게 오른쪽으로 기울고 있는 자식 노드중첩된 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

라이브러리 positioningright = of …암시적으로 anchor = west. 불행히도 이것은 매트릭스 내부의 노드로 전달됩니다.

대신에 를 positioning사용하는 행렬에 대한 추가 키를 생성할 수 있지만 이 경우 가장 쉬운 해결책은 행렬의 모든 노드에 대해 명시적으로 (기본값) 또는 (의 별칭 )을 설정하는 것입니다.matrix anchoranchoranchor = centercenteredanchor = 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}

관련 정보