我正在尝试在下面的树中绘制移动箭头(它与 \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}