将树的各个部分向左移动,在 tikz-qtree 中创建重叠的姐妹?

将树的各个部分向左移动,在 tikz-qtree 中创建重叠的姐妹?

我遇到了一个非常大的树的问题。我想做的是将第一个节点(1 NP)向左移动,为其他节点腾出更多空间。支配 er 的第二个节点 V_e1 也可以向左移动。Adj 节点甚至可以进入 Det 节点的区域。这可能吗?

\documentclass{minimal}
\usepackage{graphicx,tikz-qtree}

\newcommand{\relliste}[1]{%
\mbox{%
$%
%
\left\langle \textrm{#1} \right\rangle%
$%
}%
}

\newcommand{\feattab}[1]{[\begin{tabular}[t]{@{}l@{}}#1 ]\end{tabular}}

\newcommand{\eliste}{%
\mbox{%
$\left\langle\right\rangle$}%
}


\begin{document}

\resizebox{\linewidth}{!}{%
\begin{tikzpicture}
\tikzset{level 1/.style={level distance=8\baselineskip}}%
\tikzset{level 2/.style={level distance=8\baselineskip}}%
\tikzset{level 3/.style={level distance=8\baselineskip}}%
\tikzset{level 4+/.style={level distance=6\baselineskip}}%
\tikzset{frontier/.style={distance from root=40\baselineskip}}%
\Tree[.{V$_{e1}$\feattab{
         SPR \relliste{ },\\
         COMPS \eliste\\
         RELS  \relliste{ h4:present(e1, h5), h5:eaqual\_rel(e1, x, y), h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
         HCONS \relliste{ h7 $=_q$ h9 } }}
          [.{{1} NP\feattab{
                        RELS  \relliste{ },\\
                        HCONS \relliste{ } }}  han ]
          [.{V$_{e1}$\feattab{
              SPR \relliste{ {1} },\\
              COMPS \eliste\\
              RELS  \relliste{ h4:present(e1, h5), h5:equal\_rel(e, x, y), h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
              HCONS \relliste{ h7 $=_q$ h9 } }}
              [.{V$_{e1}$\feattab{
                  SPR  \relliste{ {1} },\\
                  COMPS \relliste{ {2} },\\
                  RELS  \relliste{ h4:present(e1, h5) },\\
                  HCONS \eliste }} \edge node[auto=left]{Inflectional LR};
                [.{V$_e$\feattab{
                  SPR  \relliste{ {1} },\\
                  COMPS \relliste{ {2} },\\
                  RELS  \eliste,\\
                  HCONS \eliste }} er ] ]
              [.{{2} NP$_{e1}$\feattab{
                      head|subj \relliste{ {1} NP$_x$ },\\
                      SPR \eliste,\\
                      RELS  \relliste{ h5:equal\_rel(e1, x, y), h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
                      HCONS \relliste{ h7 $=_q$ h9 } }}
                [.{NP$_y$\feattab{
                      SPR \eliste,\\
                      RELS  \relliste{ h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
                      HCONS \relliste{ h7 $=_q$ h9 } }}
                  [.{{3} Det\feattab{
                        RELS  \relliste{ h6:some(y, h7, h8) },\\
                        HCONS \relliste{ h7 $=_q$ h9 } }} en ]
                  [.{N$_y$\feattab{
                        SPR \relliste{ {3} }\\
                        RELS  \relliste{ h9:smart(e2, y), h9:man(y) },\\
                        HCONS \eliste }} 
                    [.{Adj\feattab{
                          RELS  \relliste{ h9:smart(e2, y) },\\
                          HCONS \eliste }} klog ]
                    [.{N$_y$\feattab{
                          RELS  \relliste{ h9:man(y) },\\
                          HCONS \eliste }} mand ] ] ]
              ]
          ]
]
\end{tikzpicture}}

\end{document}

答案1

\node您可以通过使每个节点成为明确的 TikZ并指定节点的最小宽度来移动树中的节点:

\documentclass{minimal}
\usepackage{graphicx,tikz-qtree}

\newcommand{\relliste}[1]{%
\mbox{%
$%
%
\left\langle \textrm{#1} \right\rangle%
$%
}%
}

\newcommand{\feattab}[1]{[\begin{tabular}[t]{@{}l@{}}#1 ]\end{tabular}}

\newcommand{\eliste}{%
\mbox{%
$\left\langle\right\rangle$}%
}


\begin{document}

\resizebox{\linewidth}{!}{%
\begin{tikzpicture}
\tikzset{level 1/.style={level distance=8\baselineskip}}%
\tikzset{level 2/.style={level distance=8\baselineskip}}%
\tikzset{level 3/.style={level distance=8\baselineskip}}%
\tikzset{level 4+/.style={level distance=6\baselineskip}}%
\tikzset{frontier/.style={distance from root=40\baselineskip}}%
\Tree[.{V$_{e1}$\feattab{
         SPR \relliste{ },\\
         COMPS \eliste\\
         RELS  \relliste{ h4:present(e1, h5), h5:eaqual\_rel(e1, x, y), h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
         HCONS \relliste{ h7 $=_q$ h9 } }}
          [.\node[minimum width=4in] (NP1) {{1} NP\feattab{
                        RELS  \relliste{ },\\
                        HCONS \relliste{ } }};  han ]
          [.{V$_{e1}$\feattab{
              SPR \relliste{ {1} },\\
              COMPS \eliste\\
              RELS  \relliste{ h4:present(e1, h5), h5:equal\_rel(e, x, y), h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
              HCONS \relliste{ h7 $=_q$ h9 } }}
              [.\node[minimum width=4in] (VP) {V$_{e1}$\feattab{
                  SPR  \relliste{ {1} },\\
                  COMPS \relliste{ {2} },\\
                  RELS  \relliste{ h4:present(e1, h5) },\\
                  HCONS \eliste }}; \edge node[auto=left]{Inflectional LR};
                [.{V$_e$\feattab{
                  SPR  \relliste{ {1} },\\
                  COMPS \relliste{ {2} },\\
                  RELS  \eliste,\\
                  HCONS \eliste }} er ] ]
              [.{{2} NP$_{e1}$\feattab{
                      head|subj \relliste{ {1} NP$_x$ },\\
                      SPR \eliste,\\
                      RELS  \relliste{ h5:equal\_rel(e1, x, y), h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
                      HCONS \relliste{ h7 $=_q$ h9 } }}
                [.{NP$_y$\feattab{
                      SPR \eliste,\\
                      RELS  \relliste{ h6:some(y, h7, h8), h9:smart(e2, y), h9:man(y) },\\
                      HCONS \relliste{ h7 $=_q$ h9 } }}
                  [.{{3} Det\feattab{
                        RELS  \relliste{ h6:some(y, h7, h8) },\\
                        HCONS \relliste{ h7 $=_q$ h9 } }} en ]
                  [.{N$_y$\feattab{
                        SPR \relliste{ {3} }\\
                        RELS  \relliste{ h9:smart(e2, y), h9:man(y) },\\
                        HCONS \eliste }} 
                    [.{Adj\feattab{
                          RELS  \relliste{ h9:smart(e2, y) },\\
                          HCONS \eliste }} klog ]
                    [.{N$_y$\feattab{
                          RELS  \relliste{ h9:man(y) },\\
                          HCONS \eliste }} mand ] ] ]
              ]
          ]
]
\end{tikzpicture}}

\end{document}

代码输出

相关内容