连接“森林”中的任意文本

连接“森林”中的任意文本

tikz-qtree我已经就()问过这个问题通过箭头将 tikz-qtree 中的文本与其他文本连接起来),但也许有更好的方法来做到这一点forest

我有以下树:

\documentclass{article}                          


\usepackage{forest}

\forestset{
sn edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word}{}}},
}



\begin{document}
\begin{forest}
sn edges
[V{[\textit{fin,} SUBCAT $<>$]}
        [1 NP{[\textit{nom}]}
                [er]]
        [V{[\textit{fin}, SUBCAT $<1>$]}
                [2 NP{[\textit{acc}]}
                        [das Buch]]
                [V{[\textit{fin}, SUBCAT $<1,2>$]}
                        [3 NP{[\textit{dat}]}
                                [dem Mann]]
                        [V{[\textit{fin}, SUBCAT $<1,2,3>$]}
                                [gibt]]]]]  
\end{forest}

\end{document}

在此处输入图片描述

我想用双箭头连接 的实例fin。最好的方法是\node围绕各种 进行一些声明fin并连接这些节点。但这不知何故不起作用。有办法吗?

答案1

您只需设置名称,因为它们是真正的节点:

\documentclass{article}


\usepackage{forest}

\forestset{
sn edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word}{}}},
}



\begin{document}
    \begin{forest}
sn edges
[V{[\textit{fin,} SUBCAT $<>$]}
        [1 NP{[\textit{nom}]}
                [er]]
        [V{[\textit{fin}, SUBCAT $<1>$]},name=fin1  %new code
                [2 NP{[\textit{acc}]}
                        [das Buch]]
                [V{[\textit{fin}, SUBCAT $<1,2>$]},name=fin2 %new code
                        [3 NP{[\textit{dat}]}
                                [dem Mann]]
                        [V{[\textit{fin}, SUBCAT $<1,2,3>$]},name=fin3 %new code
                                [gibt]]]]]
\draw[<->] ($(fin1.south west)+(1,.1)$) -- ($(fin2.north west)+(.5,-.1)$);
\draw[<->] ($(fin2.south west)+(1,.1)$) -- ($(fin3.north west)+(.5,-.1)$);
\end{forest}
\end{document}

我不确定您想要连接什么,您可以使用标准节点锚点来移动箭头或弯曲箭头等。

在此处输入图片描述

编辑:为了对箭头的起点和终点进行更细粒度的控制,可以使用 tikzmarks:

\documentclass{article}


\usepackage{forest}
\usetikzlibrary{tikzmark}
\forestset{
sn edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word}{}}},
}



    \begin{document}
        \begin{forest}
    sn edges
    [V{[\textit{fin,} SUBCAT $<>$]}
            [1 NP{[\textit{nom}]}
                    [er]]
            [V{[\textit{fin}, SUBCAT $<1\tikzmark{m1}>$]},name=fin1  %new code
                    [2 NP{[\textit{acc}]}
                            [das Buch]]
                    [V{[\textit{fin}, SUBCAT $<\tikzmark{m2}1,2>$]},name=fin2 %new code
                            [3 NP{[\textit{dat}]}
                                    [dem Mann]]
                            [V{[\textit{fin}, SUBCAT $<1,2,3>$]},name=fin3 %new code
                                    [gibt]]]]]
    \draw[<->] ($(fin1.south west)+(1,.1)$) -- ($(fin2.north west)+(.5,-.1)$);
    \draw[<->] ($(fin2.south west)+(1,.1)$) -- ($(fin3.north west)+(.5,-.1)$);
    \end{forest}
    \begin{tikzpicture}[overlay,remember picture]
       \draw[<->](pic cs:m1)--(pic cs:m2);
    \end{tikzpicture}
    \end{document}

在此处输入图片描述

相关内容