
\documentclass[]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,fit,shapes.geometric}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[]
\tikzstyle{tree_op}=[rectangle,draw=black,fill=gray!30,thick,minimum size=6mm,inner sep=0pt]
\tikzstyle{tree_subtree}=[rectangle,draw = black,densely dotted,fill=gray!30,thick,minimum size=6mm,inner sep=0pt]
\tikzstyle{triangle}=[inner sep=0pt,text=red,draw, regular polygon, regular polygon sides=3, align=center]
\tikzstyle{level 1}=[sibling distance=14mm,level distance=10mm]
\tikzstyle{level 2}=[sibling distance=14mm]
\tikzstyle{level 3}=[sibling distance=20mm]
\tikzstyle{level 4}=[sibling distance=11mm,level distance=11mm]
\node [tree_op] (root){$\rightarrow $}
child {node [triangle] (t1) {$\triangle_1$}}
child {node [triangle] (ti) {$\triangle_i$}}
child {node [triangle] (tj) {$\triangle_j$}}
child {node [triangle] (tn) {$\triangle_n$}}
;
\end{tikzpicture}
\end{document}
현재 결과에는 두 가지 문제가 있습니다.
- 삼각형은 크기가 다릅니다
- 모서리는 삼각형의 꼭지점에 연결되어야 합니다.
답변1
귀하의 문제를 해결하기 위해 다음을 추가했습니다.
- 노드의 크기가 동일한지 확인하는 스타일
equal size
( 에 의존 )eqparbox
child anchor=north
.
이는 \tikzstyle
더 이상 사용되지 않으므로 해당 구문으로 대체했습니다 \tikzset
. (물론 크기도 늘렸지만 level distance
마음에 들지 않으면 취소할 수도 있습니다.)
\documentclass[]{standalone}
\usepackage{tikz}
\usepackage{eqparbox}
\newbox\nodebox
\usetikzlibrary{trees,shapes.geometric}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[]
\tikzset{tree_op/.style={rectangle,draw=black,fill=gray!30,thick,minimum size=6mm,inner sep=0pt},
tree_subtree/.style={rectangle,draw = black,densely dotted,fill=gray!30,thick,minimum size=6mm,inner sep=0pt},
triangle/.style={inner sep=0pt,text=red,draw, regular polygon, regular polygon
sides=3, align=center,equal size=T},
level 1/.style={sibling distance=14mm,level distance=14mm},
level 2/.style={sibling distance=14mm},
level 3/.style={sibling distance=20mm},
level 4/.style={sibling distance=11mm,level distance=11mm},
equal size/.style={execute at begin
node={\setbox\nodebox=\hbox\bgroup},
execute at end
node={\egroup\eqmakebox[#1][c]{\copy\nodebox}}}}
\node [tree_op] (root){$\rightarrow $}
[child anchor=north]
child {node [triangle] (t1) {$\triangle_1$}}
child {node [triangle] (ti) {$\triangle_i$}}
child {node [triangle] (tj) {$\triangle_j$}}
child {node [triangle] (tn) {$\triangle_n$}}
;
\end{tikzpicture}
\end{document}