
나는 이와 같은 모양을 만들기 위한 우아한 해결책을 찾으려고 노력하고 있습니다.
내가 생각해낸 최고는 다음과 같은 스타일로 분할된 직사각형을 그리는 것입니다.
\tikzset{
entry/.style={
draw,
rectangle split,
rectangle split parts=2,
}
(에서 가져옴여기). 하지만 매번 추가 노드를 만들고 적절하게 배치하는 것 외에 세 번째 부분을 추가하는 우아한 방법을 찾을 수 없습니다. 와 같은 하나의 라이너로 노드를 생성하고 싶지만 \node [entry] (A) {1001 \nodepart{second} 1010 \nodepart{third} 2};
어떻게 해야 할지 모르겠습니다.
답변1
글쎄, 구문과 일부 해커의 약간의 변경에 열려 있다면 TikZ의 및 옵션을 남용하여 프랑켄슈타인 노드를 만들 label
수 pin
있습니다 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}
주의할 점은 구성이 배치되는 동안 추가 노드의 앵커를 사용할 수 없다는 것입니다. 또한 이 노드의 내용은 실제 노드 부분이 아닌 스타일에 대한 옵션입니다.