在文本中定位某些 TikZ 树的根

在文本中定位某些 TikZ 树的根

我想将树的根定位到一些(数学)文本中。

具体来说,我的代码看起来像这个MWE:

%!TeX program = xelatex
\documentclass{article}

\usepackage{fontspec}
\usepackage{amsmath}
\usepackage{tikz}

\newcommand{\BT}[1]{\mathrm{BT}\left(#1\right)}

\begin{document} %----------------------------------------

\[ \BT{M} := \lambda x_1.\dots\lambda x_n.
\tikz[level distance=1.5cm,baseline]{
\node {$y$}
    child { node {$\BT{M_1}$} }
    child { node {\dots{}} edge from parent[draw=none] }
    child { node {$\BT{M_p}$} }
; } \]

\end{document}

并呈现如下内容:

在此处输入图片描述

而我想要的是这样的:

在此处输入图片描述

有什么办法可以做到这一点(如果可能的话,不需要丑陋的手动间距)?

答案1

\documentclass{article}
\usepackage{fontspec}
\usepackage{mathtools}
\usepackage{tikz}
\usetikzlibrary{positioning}

\newcommand{\BT}[1]{\mathrm{BT}\left(#1\right)}

\begin{document} 
\[ 
\tikz[node distance=0pt,
      level distance=1.5cm,baseline]
{
\node (n) {$\vphantom{\lambda)}y$}
    child { node {$\BT{M_1}$} }
    child { node {\dots} edge from parent[draw=none] }
    child { node {$\BT{M_p}$} }; 
\node[left=of n,inner xsep=-2pt] {$\BT{M} := \lambda x_1\dots\lambda x_n.$};
} 
\]
\end{document}

在此处输入图片描述

编辑: 第一个建议可以通过使用 来简化tikzmark。由于它使用overlayremember picture选项,因此需要(至少)编译两次才能实现显示的结果:

\documentclass{article}
\usepackage{fontspec}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\newcommand{\BT}[1]{\mathrm{BT}\left(#1\right)}

\begin{document}
\[
\BT{M} := \lambda x_1\dots\lambda x_n.\tikzmarknode{a}{y}
    \begin{tikzpicture}[overlay, remember picture,
                        level distance=12mm, sibling distance=11mm]
\node at (a.south) {}
    child { node {$\BT{M_1}$} }
    child { node {\dots} edge from parent[draw=none] }
    child { node {$\BT{M_p}$} };
    \end{tikzpicture}
\]
\end{document}

在此处输入图片描述

(红线表示文本边框)

相关内容