示例问题:
\documentclass[margin=3mm]{standalone}%
\usepackage{forest}
\usetikzlibrary{positioning}
\begin{document}
\begin{forest}
for tree={
inner xsep=0pt,
s sep=9mm,
l sep=7mm}
[VP
[DP]
[V'
[A, name=a]
[DP]
]
]
\begin{scope}[inner xsep=0pt, node distance=7mm and 0mm]
\node (b) [right=of a] {B};
\node (c) [right=of b] {C};
\node (x) [below=of c] {XXX};
\draw (c) -- (x);
\end{scope}
\end{forest}
\end{document}
XXX 现在位于 ABC 之下,但是如果我想在多个级别上进行此类重新排列(例如,XXX 现在应该指向下面级别节点中的 123 中的 1,然后 3 指向它下面的节点,我可以在森林中执行此操作吗,还是需要在 tikz 中手动构建树?
答案1
你可以在森林里做这一切,而不必借助 Ti 来放置额外的东西钾Z 方法。一种可能性是使用锚点,注意有不同的锚点:节点锚点、子锚点和父锚点。
\documentclass[margin=3mm]{standalone}%
\usepackage{forest}
\usetikzlibrary{positioning}
\begin{document}
\begin{forest}
for tree={
inner xsep=0pt,
s sep=9mm,
l sep=7mm}
[VP
[DP]
[V'
[ABC, name=a,parent anchor=-45
[XXX,anchor=135]]
[DP]
]
]
\end{forest}
\end{document}
数字只是角度。为了V'
连接,A
只需ABC
添加,child anchor=120
。
\documentclass[margin=3mm]{standalone}%
\usepackage{forest}
\usetikzlibrary{positioning}
\begin{document}
\begin{forest}
for tree={
inner xsep=0pt,
s sep=9mm,
l sep=7mm}
[VP
[DP]
[V'
[ABC, name=a,parent anchor=-45,child anchor=120
[XXX,anchor=135]]
[DP]
]
]
\end{forest}
\end{document}