根据tikzmark
文档,使用时\subnode
,应
可以使用普通节点语法(在 内
tikzpicture
)来访问此信息。因此,之后\node {a \subnode{a}{sub} node};
可以将其用作a
节点。
阅读文档后,使用\subnode
绘制树时可以按我预期的方式工作,tikz-qtree
但使用 绘制树时则不行forest
。
此代码根据需要生成以下树。
\documentclass[varwidth=\maxdimen, border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usepackage{tikz-qtree}
\tikzset{every tree node/.style={align=center, anchor=north}}
\begin{document}
\begin{tikzpicture}[remember picture]
\Tree
[.TP
[.NP \edge[roof]; {someone} ]
[.T$'$
[.\node(T){T}; ]
[.VP
[.V$'$
[.V\\\subnode{eat}{eat}\\{\ldots}\\{\ldots} ]
[.NP \edge[roof]; {the pie} ]
]
]
]
]
\draw[->] (T) to[in=-180, out=-75] (eat);
\end{tikzpicture}
\end{document}
而此代码会生成下面的树,这是我们所不希望的。
\documentclass[varwidth=\maxdimen, border=5pt]{standalone}
\usepackage[linguistics]{forest}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{forest} remember picture
[TP
[NP
[someone, roof]
]
[T$'$
[T, name=T]
[VP
[V$'$
[V\\\subnode{eat}{eat}\\\ldots\\\ldots]
[NP
[{the pie}, roof]
]
]
]
]
]
\draw[->] (T) to[in=-180, out=-75] (eat);
\end{forest}
\end{document}
似乎forest
没有选择该remember picture
选项,那么我是否应该以不同的方式进行设置?如果是,该怎么做?
答案1
这总是有点棘手,因为有两个独立的“记忆”机制在起作用。因此,您可能只需使用两个子项并以通常的方式(即使用图片)将它们连接起来即可overlay,remember
。
\documentclass[varwidth=\maxdimen, border=5pt]{standalone}
\usepackage[linguistics]{forest}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{forest}
[TP
[NP
[someone, roof]
]
[T$'$
[\subnode{T}{T}]
[VP
[V$'$
[V\\\subnode{eat}{eat}\\\ldots\\\ldots]
[NP
[{the pie}, roof]
]
]
]
]
]
\end{forest}
\begin{tikzpicture}[overlay,remember picture]
\draw[->] (T) to[in=-180, out=-75] (eat);
\end{tikzpicture}
\end{document}
另一种可能性是仅使用\subnodes
来测量相对位置。这样可以消除偏移误差。不过,必须考虑inner sep
。
\documentclass[varwidth=\maxdimen, border=5pt]{standalone}
\usepackage[linguistics]{forest}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{forest}
[TP
[NP
[someone, roof]
]
[T$'$
[T, name=T]
[VP
[V$'$
[\subnode{V1}{V}\\\subnode{eat}{eat}\\\ldots\\\ldots,name=V]
[NP
[{the pie}, roof]
]
]
]
]
]
\draw[->] let \p1=($(V1.north west)-(eat.west)$) in
(T) to[in=-180, out=-75] ($(V.north west)+(0,-\y1-\pgfkeysvalueof{/pgf/inner
ysep})$);
\end{forest}
\end{document}