Tikz 樹邊緣始終連接到元素頂部中心

Tikz 樹邊緣始終連接到元素頂部中心
\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. 三角形有不同的尺寸
  2. 邊應連接到三角形的頂點

答案1

為了解決您的問題,我添加了

  1. 確保節點大小相等的樣式(依賴 ),equal size以及eqparbox
  2. 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}

在此輸入影像描述

相關內容