树木定位

树木定位

考虑

\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}

基线森林

相关内容