看起来我在 Tikz 中制作的树的兄弟节点没有正确对齐。每个兄弟节点级别的文本行似乎不正确。
我不知道如何解决这个问题;感谢您的帮助。
\begin{figure*}
\centering
\begin{tikzpicture}[level 1/.style={sibling distance=8cm},level 2/.style={sibling distance=4cm},level 3/.style={sibling distance=2cm}]
\node {Buying a car}
child {node {Red}
child {node {Cloth}
child {node {Standard}}
child {node {Upgraded}}}
child {node {Leather}
child {node {Standard}}
child {node {Upgraded}}}}
child {node {Blue}
child {node {Cloth}
child {node {Standard}}
child {node {Upgraded}}}
child {node {Leather}
child {node {Standard}}
child {node {Upgraded}}}}
;
\end{tikzpicture}
\caption{Options when buying a car.}
\end{figure*}
答案1
你可以使用类似
every node/.append style={anchor=mid}
添加到您传递的选项中tikzpicture
。
或者 Forest 默认将它们对齐:
\documentclass[border=9pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
[Buying a car
[Red
[Cloth
[Standard]
[Upgraded]
]
[Velvet
[Standard]
[Upgraded]
]
]
[Blue
[Cloth
[Standard]
[Upgraded]
]
[Velvet
[Standard]
[Upgraded]
]
]
]
\end{forest}
\end{document}
答案2
字母的下行部分p
和g
强制Upgraded
节点高于Standard
没有下行部分的字母。您可以通过anchor=north
向节点添加选项来解决这个问题,这将使兄弟节点对齐,因为它们具有相同的大写字母高度。
\vphantom{p}
另一种解决方案是在每个这样的节点后面放置一个Standard
,它提供一个与字母高度相同的垂直空间p
,而没有水平宽度。
答案3
这只是一个使用istgame
包裹:
修改:为了纠正最后的文本的对齐方式,我[text depth=.25ex]
相应地插入并交换了图片。
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}
\tikzset{oval node/.style={ellipse node,draw=none}}
% start
\xtdistance{15mm}{80mm}
\istrooto(0){Buying a car} \istb \istb \endist
% Red or Blue
\xtdistance{15mm}{40mm}
\istrooto(1)(0-1){Red} \istb \istb \endist
\istrooto(2)(0-2){Blue} \istb \istb \endist
% Cloth or Leather
\xtdistance{15mm}{20mm}
\istrooto(a)(1-1){Cloth} \istb \istb \endist
\istrooto(b)(1-2){Leather} \istb \istb \endist
\istrooto(c)(2-1){Cloth} \istb \istb \endist
\istrooto(d)(2-2){Leather} \istb \istb \endist
% Standard or Upgrade
\foreach \x in {a,b,c,d}
{
\istrooto(A)(\x-1)[text depth=.25ex]{Standard} \endist % revised
\istrooto(B)(\x-2)[text depth=.25ex]{Upgrade} \endist % revised
}
\end{istgame}
\end{document}