我想调整语法树中某些屋顶的高度和宽度。
我特别想让长短语/句子的屋顶看起来更好。在下图中,“um cocar de índio”屋顶不应该那么宽,而应该更高,更不“平坦”,如果我能解释清楚的话。这是它现在的样子:
我已经看过解决方案了这里,但它对我来说不起作用,因为“三角形”(屋顶)颠倒了,如下图所示(并且屋顶的宽度对我来说仍然看起来一样):
这是一个简单的例子:
\documentclass[12pt,a4paper]{article}
\usepackage{tipa, tikz-qtree}
\usepackage{tikz-qtree-compat}
\usepackage{linguex}
\begin{document}
\ex. \parbox{\textwidth}{\begin{tikzpicture}[sibling distance=5pt, level distance=10pt]\tikzset{every tree node/.style={align=center,anchor=north}}
\Tree
[ [ \edge[roof]; \node(v2) {[o rei]\textsubscript{F}} ; ]
[ [. \node(ct) {CT-$\lambda$\textsubscript{1}}; ]
[ [. \node(v1) {$t_1$} ; ]
[ [.me ]
[ [. deu ]
[ \edge[roof]; {um cocar de índio} ] ] ] ] ] ]
\draw[semithick, dashed, ->] (v1) to [bend left=45] (v2);
\end{tikzpicture}}
\end{document}
答案1
这是一个解决方案。它要求屋顶节点的文本具有明确的\node
样式[roof node]
。我只展示了向下指向的屋顶的代码;对于其他方向,您可以查看源代码。我没有改变屋顶的宽度,这对我来说看起来不错,但这可以通过调整坐标加法中的坐标tikz-qtree
来实现。x
\documentclass[12pt,a4paper]{article}
\usepackage{tipa, tikz-qtree}
\usetikzlibrary{calc}
\usepackage{calc}
\newlength{\roofht}
\setlength{\roofht}{.5cm}
\usepackage{tikz-qtree-compat}
\usepackage{linguex}
\tikzset{roof node/.style=
{text height=\roofht+.5\baselineskip}}
\makeatletter
\def\roof@edge@down#1#2{(#1.south) -- ($(#2.north west)+(0pt,-\roofht)$) -- ($(#2.north east)+(0pt,-\roofht)$) -- cycle}
\makeatother
\begin{document}
\ex. \parbox{\textwidth}{\begin{tikzpicture}[sibling distance=5pt, level distance=10pt]\tikzset{every tree node/.style={align=center,anchor=north},roof/.append={level distance=3em}}
\Tree
[ [ \edge[roof]; \node[roof node](v2) {[o rei]\textsubscript{F}} ; ]
[ [. \node(ct) {CT-$\lambda$\textsubscript{1}}; ]
[ [. \node(v1) {$t_1$} ; ]
[ [.me ]
[ [. deu ]
[ \edge[roof,]; \node[roof node]{um cocar de índio}; ] ] ] ] ] ]
\draw[semithick, dashed, ->] (v1) to [bend left=45] (v2);
\end{tikzpicture}}
\end{document}