通过箭头将 tikz-qtree 中的文本与其他文本连接起来

通过箭头将 tikz-qtree 中的文本与其他文本连接起来

我想要将以下树左子树中的 NP[...]、NP[...] 文本与右子树中的 NP[...]、NP[...] 文本连接起来。

\documentclass{article}

\usepackage{xspace}

\usepackage{tikz-qtree}
\tikzset{every roof node/.append style={inner sep=0.1pt,text height=2ex,text depth=0.3ex}}

\newcommand{\feattab}[1]{[\begin{tabular}[t]{@{}l@{}}#1 ]\end{tabular}}
\newcommand{\vform}{{\sc vform}\xspace}

\newcommand{\type}[1]{{\it #1}}
\newcommand{\sliste}[1]{%
\mbox{%
$\left\langle\mbox{\sc #1}\right\rangle$}%
}


\begin{document}


\begin{tikzpicture}
\tikzset{level 1+/.style={level distance=4\baselineskip}}
\tikzset{frontier/.style={distance from root=8\baselineskip}}
\Tree[.V\feattab{
              \vform \type{fin},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}] } } 
        [.V\feattab{
              \vform \type{bse},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}] } } lesen ]
        [.V\feattab{
              \vform \type{fin},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}], V } } wird ]
]
\end{tikzpicture}

\end{document}

\node我尝试使用和实现这一点\draw,但不知何故这不起作用:

\documentclass{article}

\usepackage{xspace}

\usepackage{tikz-qtree}
\tikzset{every roof node/.append style={inner sep=0.1pt,text height=2ex,text depth=0.3ex}}

\newcommand{\feattab}[1]{[\begin{tabular}[t]{@{}l@{}}#1 ]\end{tabular}}
\newcommand{\vform}{{\sc vform}\xspace}

\newcommand{\type}[1]{{\it #1}}
\newcommand{\sliste}[1]{%
\mbox{%
$\left\langle\mbox{\sc #1}\right\rangle$}%
}


\begin{document}


\begin{tikzpicture}
\tikzset{level 1+/.style={level distance=4\baselineskip}}
\tikzset{frontier/.style={distance from root=8\baselineskip}}
\Tree[.V\feattab{
              \vform \type{fin},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}] } } 
        [.V\feattab{
              \vform \type{bse},\\
              \sliste{ \node(lesen){NP[\type{nom}], NP[\type{acc}]}; } } lesen ]
        [.V\feattab{
              \vform \type{fin},\\
              \sliste{ \node(wird){NP[\type{nom}], NP[\type{acc}]};, V } } wird ]
]
\draw[semithick,->] (lesen)..controls +(south east:5) and +(south west:5)..(wird);
\end{tikzpicture}

\end{document}

有没有办法做到这一点?

我还想通过将背景变为灰色来突出显示 NP[...]、NP[...] 部分。

答案1

TiKZ-qtree 手册说

在 \Tree 内部,您可以使用 TikZ \node 命令来代替节点标签。

并且您尝试在 anode内使用 anode label而不是 。如果您将所有节点标签都包含在 a 内node,则它可以工作。

\documentclass{article}

\usepackage{xspace}

\usepackage{tikz-qtree}
\tikzset{every roof node/.append style={inner sep=0.1pt,text height=2ex,text depth=0.3ex}}

\newcommand{\feattab}[1]{[\begin{tabular}[t]{@{}l@{}}#1 ]\end{tabular}}
\newcommand{\vform}{{\sc vform}\xspace}

\newcommand{\type}[1]{{\it #1}}
\newcommand{\sliste}[1]{%
\mbox{%
$\left\langle\mbox{\sc #1}\right\rangle$}%
}


\begin{document}


\begin{tikzpicture}
\tikzset{level 1+/.style={level distance=4\baselineskip}}
\tikzset{frontier/.style={distance from root=8\baselineskip}}
\Tree[.V\feattab{
              \vform \type{fin},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}] } } 
        [.\node (lesen) {V\feattab{
              \vform \type{bse},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}] } } }; ]
        [.\node (wird) {V\feattab{
              \vform \type{fin},\\
              \sliste{ NP[\type{nom}], NP[\type{acc}], V } }}; ]
]
\draw[semithick,->] (lesen)..controls +(south east:5) and +(south west:5)..(wird);
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容