考虑
\documentclass[12pt,a4paper]{article}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\begin{document}
X + Y $\Rightarrow$ \begin{tikzpicture} \Tree [.X X Y ] \end{tikzpicture}
\end{document}
假设我想要 X[...] 而不是下面的树中的 X。我该如何插入它?我如何才能让 X 和 Y 在它们正下方插入 <...>,就像这些幻灯片第 14-16 页中对 A 和 B 所做的那样:http://www.ucl.ac.uk/~ucjtmgg/docs/cam-slides.pdf
我如何调节树的位置?我希望树大致位于X + Y $\Rightarrow$
树所在位置的中间,如上面幻灯片第 17 页所示:
答案1
图形的垂直放置有多种不同的方式。有一个选项baseline
。将其设置为图像的中心(current bounding box.center)
会将中间位置置于周围文本的当前基线上。第三个示例将展示一种使图像围绕当前数学轴居中的方法。
第二幅图将叶子放在与周围文本相同的基线上。
第三幅图像使用宏\VCenter
将图像围绕数学轴居中。之前的文本看起来更像一个方程式。居中是通过 TeX 基元完成的\vcenter
。
此外,节点在第二行包含尖括号。
完整示例:
\documentclass[12pt,a4paper]{article}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\newcommand*{\VCenter}[1]{%
\ensuremath{%
\vcenter{%
\hbox{#1}%
}%
}%
}
\begin{document}
X + Y $\Rightarrow$
\begin{tikzpicture}[baseline=(current bounding box.center)]
\Tree [.X X Y ]
\end{tikzpicture}
\bigskip
\underline{X + Y $\Rightarrow$
\begin{tikzpicture}[baseline=(X.base)]
\Tree [.X \node(X){X}; Y ]
\end{tikzpicture}}
\bigskip
X + Y $\Rightarrow$
\VCenter{\begin{tikzpicture}[
every node/.append style={align=center},
level distance=50pt,
]
\Tree [ .\node{X\\$\langle\ldots\rangle$};
\node{X\\$\langle\alpha\rangle$};
\node{Y\\$\langle\beta\rangle$};
]
\end{tikzpicture}}
\end{document}
答案2
\documentclass[12pt,a4paper]{article}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\usepackage{stackengine}
\begin{document}
\raisebox{3\baselineskip}{X + Y $\Rightarrow$}
\tikzset{level 1/.style={level distance=60pt,sibling distance=30pt}}
\begin{tikzpicture} \Tree [.\stackunder{X}{$\langle$...$\rangle$}
\stackunder{X}{$\langle\alpha\rangle$} \stackunder{Y}{$\langle\beta\rangle$} ]
\end{tikzpicture}
\end{document}
答案3
一种紧凑的forest
解决方案,用于baseline
将空节点设置为树的基线。
\documentclass[12pt,a4paper]{article}
\usepackage{forest}
\begin{document}
X + Y $\Rightarrow$
\begin{forest}
for tree={align=center, parent anchor=south, child anchor=north, if n children=0{tier=t}{}}
[{X\\$[\dots]$} [{X\\$\langle\alpha\rangle$}] [, no edge, baseline [, phantom]] [{Y\\$\langle\beta\rangle$}] ]
\end{forest}
\end{document}