我正在尝试使用tikz-qtree
包创建树,其中一些叶子包含附加信息。但是,我希望叶子在第一行的底部对齐。MWE 将显示我遇到的问题:
(1)如果我设置anchor=base
,叶子会在最底部垂直对齐,而我不希望在垂直对齐时考虑附加信息。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
\tikzset{%
every tree node/.style={align=center,anchor=base}, %align leaves at bottom
}%
\Tree
[.Root
Tall
{no\\add' info}
]
\end{tikzpicture}
\end{document}
(2) 如果我更改anchor=north
,叶子会对齐到最顶部。这更接近我想要的效果。但是,这样做的问题是“较高”的单词/字母(例如 l、t、f)的上限较高(?),因此单词会略微错位,如下所示:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
\tikzset{%
every tree node/.style={align=center,anchor=north}, %align leaves at bottom
}%
\Tree
[.Root
Tall
{no\\add' info}
]
\end{tikzpicture}icture}
\end{document}
在第二个例子中,“T”和“n”的顶部垂直对齐。有没有办法让“Tall”和“no”在这两个单词的底部垂直对齐,而忽略附加信息?
答案1
一个简单的解决方案是\vphantom{f}
向分支中添加“否”:
\documentclass[border=3.141592]{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
\tikzset{%
every tree node/.style={align=center, anchor=north}, %align leaves at bottom
}%
\Tree
[.Root
Tall
{no\vphantom{f}\\add' info} % <---
]
\end{tikzpicture}
\end{document}
编辑(1):
使用这个 forest
包你将不会遇到对齐nides的问题:
\documentclass[border=3.141592]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree = {
inner sep=1pt,
align=center,
parent anchor=south,
child anchor=north
}
[Root
[Tall]
[no \\add' info]
]
\end{forest}
\end{document}
编译结果和之前一样:
编辑(2):
使用森林,您可以通过以下方式在序言中定义其样式\forestset
:
\documentclass[border=3.141592]{standalone}
\usepackage{forest}
\forestset{ % <---
my tree/.style={%
for tree={inner sep = 1pt, % if you liked
align=center,
parent anchor=south,
child anchor=north
}
}}
\begin{document}
\begin{forest} my tree % <---
[Root
[Tall]
[no \\add' info]
]
\end{forest}
\end{document}