我在弄清楚如何将箭头放在我想要的位置时遇到了一些问题。
本质上,我想将箭头放在以下每棵树的中心,但它们却不断地乱窜,可能是因为页边距的原因。
有谁能想到解决办法吗?
\documentclass{article}
\usepackage{linguex}
\usepackage{qtree}
\usepackage{multicol}
\usepackage{tikz}
\begin{document}
\begin{multicols}{3}
\ex. \small
\a. \Tree [.DP [.NP ]. NP ].DP
\b. \Tree [.DP [.NP ]. NP ].DP
\c. \Tree [.DP [.NP ]. NP ].DP
\end{multicols}
\begin{center}
\begin{tikzpicture}
\draw[->] (-2, 0) -- (-2, -0.5) node[anchor=north] {[bla]};
\draw[->] (3, 0) -- (3, -0.5) node[anchor=north] {[blu]};
\draw[->] (5, 0) -- (5, -0.5) node[anchor=north] {[bli]};
\end{tikzpicture}
\end{center}
\end{document}
答案1
刚刚意识到,你实际上可以将一棵树放在 中\node
。需要注意的一件重要事情是,树的最后一部分和节点的结束之间必须有一个空格};
(对你来说可能很明显,但它一开始就吸引了我)。
\documentclass{article}
\usepackage{linguex}
\usepackage{qtree}
\usepackage{multicol}
\usepackage{tikz}
\begin{document}
\begin{multicols}{3}
\ex. \small
\a. \begin{tikzpicture}
\node (a) {\Tree [.DP [.NP ]. NP ].DP }; % space before }; is necessary
\draw (a.south) -- +(0,-0.5) node[below] {[bla]};
\end{tikzpicture}
\b. \begin{tikzpicture}
\node (a) {\Tree [.DP [.NP ]. NP ].DP };
\draw (a.south) -- +(0,-0.5) node[below] {[blu]};
\end{tikzpicture}
\c. \begin{tikzpicture}
\node (a) {\Tree [.DP [.NP ]. NP ].DP };
\draw (a.south) -- +(0,-0.5) node[below] {[bli]};
\end{tikzpicture}
% an empty line before \end{multicols} is necessary
\end{multicols}
\end{document}
原始答案
如果可以选择切换到,则可以按照以下方式tikz-qtree
绘制箭头:tikzpicture
\Tree
\documentclass{article}
\usepackage{linguex}
\usepackage{tikz-qtree}
\usepackage{multicol}
\usepackage{tikz}
\begin{document}
\begin{multicols}{3}
\ex. \small
\a. \begin{tikzpicture}[baseline]
\Tree [.DP [.NP ] [.NP ] ]
\draw [->] (current bounding box.south) -- +(0,-0.5) node[below] {[bla]};
\end{tikzpicture}
\b. \begin{tikzpicture}[baseline]
\Tree [.DP [.NP ] [.NP ] ]
\draw [->] (current bounding box.south) -- +(0,-0.5) node[below] {[bla]};
\end{tikzpicture}
\c. \begin{tikzpicture}[baseline]
\Tree [.DP [.NP ] [.NP ] ]
\draw [->] (current bounding box.south) -- +(0,-0.5) node[below] {[bla]};
\end{tikzpicture}
\end{multicols}
\end{document}
答案2
这是一个 Forest 解决方案,它定义了一种新样式。add arrow=<text>
这可以在树的前言中使用(在 Forest 树开始之后和树本身的规范之前)。它从树边界框底部的中心向下绘制一个箭头,指向包含用方<text>
括号括起来的参数的节点。
\documentclass{article}
\usepackage{linguex}
\usepackage{multicol}
\usepackage[linguistics]{forest}
\forestset{%
add arrow/.style={
tikz+={%
\draw [->] (current bounding box.south) -- +(0,-.5) node [anchor=north] {[#1]};
},
},
}
\begin{document}
\begin{multicols}{3}
\ex. \small
\a. \Forest{add arrow=bla [DP[NP][NP]]}
\b. \Forest{add arrow=blu [DP[NP][NP]]}
\c. \Forest{add arrow=bli [DP[NP][NP]]}
\end{multicols}
\end{document}
作为额外奖励,您不必担心记住任何类型的右括号前的空格。(如果有空格,则无关紧要,因为它们会在 中qtree
,但如果没有空格,它也不会在意。[在我看来,Forest 值得切换,即使只是为了这个功能!]