qtree/tikz-qtree 中的无边叶(终端节点)

qtree/tikz-qtree 中的无边叶(终端节点)

我目前正在学习语法课程,我希望我的作业符合教授的惯例,即忽略每个标记与其类别标签之间的边缘(因为他说边缘对应于 PSG 规则的应用,这忽略了词汇解析)。有没有办法使用 qtree/tikz-qtree 创建语法树,以便对于叶节点,每个原子与其类别标签之间没有边缘?(我说原子而不是单词,因为像英语属格这样棘手的情况,'s它表现为限定词而不是单纯的词缀)

举个例子,近似于此(虽然显然格式化为实际语法树)。标签和标记之间有间隙也是可以的,因为我避免边缘/分支而不是喜欢距离(虽然在一定程度上小间隙是可取的)


   DP
  /  \
 D   NP
the   |
      N'
      |
      N
     book

答案1

使用tikz-qtree

\documentclass[12pt]{standalone}

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

\Tree 
[.TP
    [.DP [.D\\the ] [.NP [.N\\man ]]]
    [.T\1
        [.T\\will ]
        [.VP
            [.V\\eat ]
            [.DP [.D\\a ] [.NP [.N\\burger ]]]
        ]
    ]
]

\end{document}

相同的语法适用于qtreetikzset当然,没有命令)。但你可能会发现使用以下方法更容易forest

\documentclass[12pt]{standalone}

\usepackage[linguistics]{forest}
\begin{document}

\begin{forest} 
[TP
    [DP [D\\the ] [NP [N\\man ]]]
    [T’
        [T\\will ]
        [VP
            [V\\eat ]
            [DP [D\\a ] [NP [N\\burger ]]]
        ]
    ]
]
\end{forest}

代码输出

答案2

使用普通的 qtree 也很简单:节点文本可以包含换行符,因此只需将叶子写为D\\the即可。只要任何地方都没有空格,解析器就会将它们作为一个单元处理。如果您想要一个带有空格的“原子”,请将整个内容括在括号中(例如{Adj\\a propos}

\Tree [.NP D\\the [.NP N\\man ] ]

双反斜杠是真正的 LaTeX 命令,因此要获得 POS 和终端之间的间隙,只需使用可选参数:

\Tree [.NP D\\[6pt]the [.NP N\\[6pt]man ] ]

还可以调整 qtree 设置,使叶子的行跳过默认更大。如果您要使用 plainqtree并希望使用此选项,请告诉我。

相关内容