使用 tikz-qtree 绘制运动箭头和屋顶

使用 tikz-qtree 绘制运动箭头和屋顶

我正在尝试在下面的树中绘制移动箭头(它与 \qtree 包一起使用):

\Tree [.CP [\qroof{which book on syntax}.DP ] [.C' [.C will ] [.TP [\qroof{The students}.DP ]  [.T' [.<T> will ] [.V' [.V buy ] [\qroof{which book on syntax}.DP ] ] ] ] ] ]

我试图在这个帖子中实现 Alan Munn 的回答中的简洁解释在 tikz-qtree 中绘制到屋顶的移动箭头的更有效方法,但我在某个地方犯了一个错误,我不知道在哪里:

\documentclass{article}

\usepackage{tikz-qtree,tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}
\usetikzlibrary{positioning}

\begin{document}


\begin{tikzpicture}
\Tree 
[.CP 
    [.DP \edge[roof]; \node (x) {which book on syntax}; ] 
    [.C$' $
         [.C {will} ; ]
         [.TP 
            [.DP \edge[roof]; {The students}; ]  
            [.T' 
                [.$<$T$>$ {will}; ]
                [.V$'$ 
                    [.V {buy}; ] 
                    [.DP \edge[roof]; \node (y) {which book on syntax} ] 
                ] 
            ] 
         ] 
    ] 
]

\draw[->] (y) [in=-90,out=-90,looseness=1.5]  to (x);
\end{tikzpicture}

\end{document}

我收到的错误信息是:

!包 pgf 错误:没有已知的名为 y 的形状。请参阅 pgf 包文档以获取解释。

我尝试在 pgf 手册中寻找答案,但由于这是 tikz 和 qtree 的混合,我似乎找不到它。我在这里发布它,希望它能让经验丰富的人立即看到。

答案1

您的命令后缺少一个分号\node (y)(所有 TikZ 命令都以分号结尾)。您还添加了许多不需要的分号(我已将其删除),并且您的$C' $节点中还有一个虚假空格。

我还删除了一些不需要的多余括号(虽然这不是问题),并删除了头部和单词之间的线条(这在语言上是不正确的)。

\documentclass{article}

\usepackage{tikz-qtree,tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}
\usetikzlibrary{positioning}

\begin{document}


\begin{tikzpicture}
\Tree 
[.CP 
    [.DP \edge[roof]; \node (x) {which book on syntax}; ] 
    [.C$'$
         [.C\\will ]
         [.TP 
            [.DP \edge[roof]; {The students} ]  
            [.T' 
                [.$<$T$>$\\will ]
                [.V$'$ 
                    [.V\\buy ] 
                    [.DP \edge[roof]; \node (y) {which book on syntax}; ] 
                ] 
            ] 
         ] 
    ] 
]
\draw[->] (y) [in=-90,out=-90,looseness=1.5]  to (x);
\end{tikzpicture}

\end{document}

代码输出

相关内容