使用 Tikz 包绘制树形图的帮助

使用 Tikz 包绘制树形图的帮助

我的要求如下:

在此处输入图片描述

我通过使用以下标签实现了这一点:

\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage{times}
\usepackage{linguex}%
\usepackage{tikz}%
\usetikzlibrary{decorations.text,calc,arrows.meta}%
\usepackage{tikz-qtree}%

\usepackage{adjustbox}
%\usepackage{showframe}
\begin{document}

\ex.
\a. John destroyed the sandcastle.
\b.
\begin{adjustbox}{max width=0.91\textwidth}
\Tree [.InitP [.{\sc initiator} { John} ] [ [.Init ] [.ProcP
[.{\sc undergoer} { the sandcastle} ] [ [.Proc ] [.ResP [.{\sc
resultee} { $<$the sandcastle$>$ } ] [ [.Res ] [.XP \edge[roof];
{\sc ground$/$final state} ] ] ] ] ] ] ]
\end{adjustbox}


\end{document}

输出如下:

在此处输入图片描述

我如何实现左手标记部分,请指教..

答案1

这很容易做到,只需为短语的相关头创建命名节点,然后使用positioning库在左侧添加一个节点即可。我使用箭头连接节点;如果您只想要一条没有箭头的线,请->\draw命令中删除。如果您有很多这样的树,您可能会发现使用forest包而不是包更容易做到这一点tikz-qtree,因为它允许您通过添加键立即创建一个命名节点name=...

我已将两种解决方案添加到一个文档中。我还将times包替换为newtxtextnewtxmath;该times包已弃用。我还将所有内容更改为,\sc因为\scshape双字母字体更改命令也已弃用(请参阅双字母字体样式命令 (\bf,\it,...) 会在 LaTeX 中复活吗?我已经为条形级别创建了一个宏,如果您加载包,\1它已经在环境中定义好了,但对于语法来说更通用。\Treetikz-qtree-compat

我还对您的树做了一些其他外观上的改变(由于您绘制的树不包含 Tense,因此我将其从标签上删除。)

\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage{newtxmath,newtxtext} % don't use {times} it's deprecated
\usepackage{linguex}%
\usepackage{tikz}%
\usetikzlibrary{positioning}%
\usepackage{tikz-qtree,tikz-qtree-compat}%
\usepackage[linguistics]{forest}
\newcommand*\1{\ensuremath{'}}

\usepackage{adjustbox}
\begin{document}

\ex.
\a. John destroyed the sandcastle.
\b.
\begin{adjustbox}{max width=0.91\textwidth}
\begin{tikzpicture}[baseline]
\Tree [.InitP [.{{\scshape initiator}\\John} ] [.Init\1 [.\node(Init){Init}; ] [.ProcP
[.{{\scshape undergoer}\\the sandcastle} ] [.Proc\1 [.\node(Proc){Proc}; ] [.ResP [.{{\scshape
resultee}\\$<$the sandcastle$>$ } ] [.Res\1 [.\node(Res){Res}; ] [.XP \edge[roof];
{\scshape ground$/$final state} ] ] ] ] ] ] ]
\node [below left=3cm of Init,font=\itshape] (D) {destroy};
\draw[->] (D.east) -- (Init);
\draw[->] (D.east) -- (Proc);
\draw[->] (D.east) -- (Res);
\end{tikzpicture}
\end{adjustbox}
\b.
\begin{forest}
[InitP [{{\scshape initiator}\\John} ] [Init\1 [Init,name=Init  ] [ProcP
[{{\scshape undergoer}\\the sandcastle} ] [Proc\1 [Proc,name=Proc  ] [ResP [{{\scshape
resultee}\\$<$the sandcastle$>$ } ] [Res\1 [Res,name=Res  ] [XP[{\scshape ground$/$final state},roof ] ] ] ] ] ]]]
\node [below left=3.5cm of Init,font=\itshape] (D) {destroy};
\draw[->] (D.east) -- (Init);
\draw[->] (D.east) -- (Proc);
\draw[->] (D.east) -- (Res);
\end{forest}

\end{document}

代码输出

相关内容