如何拉长附着在某个特定节点上的树枝?

如何拉长附着在某个特定节点上的树枝?

在此处输入图片描述

我想延长连接到 VP 节点的两个直接分支(图中红色的),而不改变上下其他分支的高度。有什么想法吗?谢谢!

\documentclass{article}
\usepackage[margin=.8in]{geometry}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{stmaryrd}
\tikzset{every tree edge/.style={align=center, anchor=north}} 
\begin{document}
    \begin{tikzpicture}
    \Tree
      [.TP
            [.DP \edge[roof]; {Harvey} ]
            [.T\1
                [.T {[past]} ]
                [.{VP \\ <e,t>}
                    [.DP \edge[roof]; {t$_1$} ]
                    [.V\1
                        [.V {eat} ]
                        [.DP ]]]]]
    \end{tikzpicture}
\end{document}

答案1

您可以使用 来定位特定级别\tikzset。但请注意,这也会增加与 的[past]分离T

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}

\begin{document}
\begin{tikzpicture}[baseline]
\tikzset{level 3/.style={level distance=5em}} % the root of the tree is level 0
\Tree
    [.TP
        [.DP \edge[roof]; {Harvey} ]
        [.T\1
            [.T {[past]} ]
            [.VP\\$<e,t>$
                [.DP \edge[roof]; {t$_1$} ]
                [.V\1
                    [.V {eat} ]
                    [.DP ]
                ]
            ]
        ]
    ]
\end{tikzpicture}

\end{document}

我能想到的解决方法有两种。首先,你可以将其作为[past]同一节点的一部分。

\begin{tikzpicture}[baseline]
\tikzset{level 3/.style={level distance=5em}}
\Tree
    [.TP
        [.DP \edge[roof]; {Harvey} ]
        [.T\1
            [.T\\{[past]} ] % note the difference here
            [.VP\\$<e,t>$
                [.DP \edge[roof]; {t$_1$} ]
                [.V\1
                    [.V {eat} ]
                    [.DP ]
                ]
            ]
        ]
    ]
\end{tikzpicture}

在此处输入图片描述

[past]或者,您也可以使用按键手动换档yshift

\begin{tikzpicture}[baseline]
\tikzset{level 3/.style={level distance=5em}}
\Tree
    [.TP
        [.DP \edge[roof]; {Harvey} ]
        [.T\1
            [.T \node[yshift=2em]{[past]}; ] % note the difference here
            [.VP\\$<e,t>$
                [.DP \edge[roof]; {t$_1$} ]
                [.V\1
                    [.V {eat} ]
                    [.DP ]
                ]
            ]
        ]
    ]
\end{tikzpicture}

在此处输入图片描述

除此之外,使用forest可能更可取。

答案2

如果您不介意更换套餐,forest专门从事这种定制:

\documentclass[tikz]{standalone}
\usepackage{forest}

\begin{document}
\begin{forest}
  for tree={
    parent anchor=south,
    child anchor=north,
  }
  [TP
    [DP
      [Harvey, triangle]
    ]
    [T%\1
        [T
        [{[past]}]
        ]
        [VP, l sep+=\baselineskip
            [DP
              [{t$_1$}, triangle]
            ]
            [V%\1
                [V
                  [eat]
                ]
                [DP ]
            ]
        ]
    ]
  ]
\end{forest}

\end{document}

较长的森林树枝

相关内容