높이가 다른 분할 직사각형 노드 생성

높이가 다른 분할 직사각형 노드 생성

나는 이와 같은 모양을 만들기 위한 우아한 해결책을 찾으려고 노력하고 있습니다.연결된 노드가 있는 분할 직사각형

내가 생각해낸 최고는 다음과 같은 스타일로 분할된 직사각형을 그리는 것입니다.

\tikzset{
entry/.style={
    draw,
    rectangle split,
    rectangle split parts=2,
}

(에서 가져옴여기). 하지만 매번 추가 노드를 만들고 적절하게 배치하는 것 외에 세 번째 부분을 추가하는 우아한 방법을 찾을 수 없습니다. 와 같은 하나의 라이너로 노드를 생성하고 싶지만 \node [entry] (A) {1001 \nodepart{second} 1010 \nodepart{third} 2};어떻게 해야 할지 모르겠습니다.

답변1

글쎄, 구문과 일부 해커의 약간의 변경에 열려 있다면 TikZ의 및 옵션을 남용하여 프랑켄슈타인 노드를 만들 labelpin있습니다 append after command.

모양 rectangle split은 이미 원하는 모양에 가깝습니다. 그러나 구분 기호에 다른 선 스타일을 사용하는 것은 허용되지 않습니다. 그러나 구분 기호가 전혀 그려지지 않도록 방지하고 자체 경로를 제공할 수 있습니다. 이는 에서 가장자리 작업을 사용하여 수행됩니다 append after command.

옵션 을 이용하여 첨부된 직사각형을 그릴 수 있습니다 label. 적절한 위치 지정에는 테두리가 서로 겹치도록 이동하는 작업이 포함되며 이는 옵션으로 수행됩니다 outer xsep. 이 새 노드의 앵커에 대한 참조를 허용하기 위해 기본 노드의 이름으로 구성된 이름도 지정합니다.

MWE는 다음과 같습니다.

\documentclass[border=1mm,tikz]{standalone}
\usetikzlibrary{shapes.multipart}

\tikzset{entry/.style={
    % appearance settings for the main node
    draw,
    rectangle split,
    rectangle split parts=2,
    rectangle split draw splits=false,
    % draw the small attached node
    label={[name=label of \tikzlastnode,anchor=north west,draw,outer xsep=-.5\pgflinewidth]north east:#1},
    % draw the split using a dashed line
    append after command={(\tikzlastnode.text split west) edge[draw,dashed] (\tikzlastnode.text split east)},
}}

\begin{document}
    \begin{tikzpicture}
        \node[entry=2] (myentry) at (0,0) {1001 \nodepart{second} 1010};

        % examples of how we can refer to coordinates of this monster
        \node[coordinate,pin=4:a] at (label of myentry.south east) {};
        \node[coordinate,pin=4:b] at (myentry.south east) {};
    \end{tikzpicture}
\end{document}

산출

주의할 점은 구성이 배치되는 동안 추가 노드의 앵커를 사용할 수 없다는 것입니다. 또한 이 노드의 내용은 실제 노드 부분이 아닌 스타일에 대한 옵션입니다.

관련 정보