使用下面的 MWE:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\usepackage{ textcomp }
\begin{document}
\begin{tikzpicture}
\Tree [
.TP [
.T' \node(C){T+verb}; [
.vP \qroof{`ana}.DP [
.v' \node(B){v+{\textlangle}verb{\textrangle}}; [
.VP [
.V' \node(A){V+{\textlangle}verb{\textrangle}}; \qroof{taalib}.DP
]
]
]
]
]
]
\draw [semithick,->] (A) to[out=270,in=180] (B);
\draw [semithick,->] (B) to[out=270,in=180] (C);
\end{tikzpicture}
\end{document}
我得到如下输出:
如果“V+”箭头的端点和“v+”箭头的起点在同一个位置,也许用一个小黑点连接它们,那么这棵树看起来会好得多,而且我认为更直观。这将更好地表明同一个动词在做这两个动作。有人知道如何做到这一点吗?
答案1
您可以添加一个带有点的节点,并且使用参数,而不是使用入角和出角bend
。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\usetikzlibrary{positioning}
\newcommand\TR[1]{\textlangle#1\textrangle}
\usepackage{ textcomp }
\begin{document}
\begin{tikzpicture}
\Tree [
.TP [
.T\1 \node(C){T+verb}; [
.vP \qroof{`ana}.DP [
.v\1 \node(B){v+\TR{verb}}; [
.VP [
.V\1 \node(A){V+\TR{verb}}; \qroof{taalib}.DP
]
]
]
]
]
]
\draw [semithick] (A.south) edge [bend left=70,->,shorten >=.2em] (B.south)
node (D) [draw, fill, circle, minimum size=2pt,below = -.25em of B.south,
inner sep=0pt] {} ;
\draw [semithick] (D) edge [bend left=70,->,shorten <=.5em] (C);
\end{tikzpicture}
\end{document}
我还做了一些其他的更改(\1
用 '' 代替素数,并使用命令来标记轨迹,这样可以节省大量的打字时间。
答案2
您已经有了一个带有黑点的解决方案,但您也可以使用起始和最终锚点。使用B.240
语法,您可以选择角度为 240 的节点边界上的点。查看示例
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\usepackage{ textcomp }
\begin{document}
\begin{tikzpicture}
\Tree [
.TP [
.T' \node(C){T+verb}; [
.vP \qroof{`ana}.DP [
.v' \node(B){v+{\textlangle}verb{\textrangle}}; [
.VP [
.V' \node(A){V+{\textlangle}verb{\textrangle}}; \qroof{taalib}.DP
]
]
]
]
]
]
\draw [semithick,->] (A) to[out=270,in=270] (B.south);
\draw [semithick,->] (B.240) to[out=240,in=180] (C);
\end{tikzpicture}
\end{document}