我正在尝试转换我的tree-dvips
树转换为与 xelatex 兼容的东西。我查看了tikz-qtree
包,但似乎无法设置复杂节点。
在旧qtree
包中,有一个我可以使用的低级语法(leaf、branch 等),但这似乎已经消失了。在 中,tree-dvips
我只需将复杂的东西放在 中\node{...}
,但我该如何使用 来做到这一点tikz-qtree
?
\documentclass{scrbook}
\usepackage{tikz-qtree}
\begin{document}
This is some text and the figure should be the size of the text not larger and not smaller.
\begin{figure}[h]
\begin{tikzpicture}
\Tree[.{V[\begin{tabular}[t]{@{}l@{}}
spr eliste,\\
comps eliste ]
\end{tabular}} [.NP dogs ] [.V sleep] ]
\end{tikzpicture}
\end{figure}
This is some text and the figure should be the size of the text not larger and not smaller.
\end{document}
编辑:尝试不使用表格环境,但添加左/北选项会给我带来奇怪的结果。看看下图中的“人”。它太北了。
\documentclass{scrbook}
\usepackage{tikz-qtree}
\tikzset{every tree node/.style={align=left, anchor=north}}
\begin{document}
\begin{tikzpicture}
\tikzset{level 1+/.style={level distance=3\baselineskip}}
\tikzset{frontier/.style={distance from root=12\baselineskip}}
\Tree[.{V[{\sc comps} { }]}
[.{{1} NP} man ]
[.{V[{\sc comps} { {1} }]}
[.{{2} NP} ketābāro ]
[.{V[{\sc comps} { {1}, {2} }]}
[.{{3} PP} \edge[roof]; {be Sepide} ]
[.{V[{\sc comps} { {1}, {2}, {3} }]} dādam ]
]
]
]
\end{tikzpicture}
\end{document}
答案1
我不确定这是否是你想要实现的:
\documentclass{scrbook}
\usepackage{tikz-qtree}
\begin{document}
This is some text and the figure should be the size of the text not larger and not smaller.
\begin{figure}[!ht]
\begin{tikzpicture}
\Tree [.V [.{\begin{tabular}[t]{@{}l@{}} spr eliste \\ comps eliste \end{tabular}} ] [.N tree ] ]
\end{tikzpicture}
\end{figure}
This is some text and the figure should be the size of the text not larger and not smaller.
\end{document}
答案2
没有必要将复杂的节点包装在tabular
环境中。只要您为节点中的文本指定明确的对齐方式,TikZ 就允许节点包含换行符。
因此,将以下行添加到您的文档中:
\tikzset{every tree node/.style={align=left, anchor=north}}
或者
\tikzset{every tree node/.style={align=center, anchor=north}}
而且您根本不需要使用表格。
\documentclass{scrbook}
\usepackage{tikz-qtree}
\tikzset{every tree node/.style={align=left, anchor=north}}
\begin{document}
\Tree [.V [.{[spr eliste \\ comps eliste]} ] [.NP dogs ] [.V sleep ] ]
\end{document}
对于您的编辑,使用anchor=north
如果您需要节点在基线上排列,则使用不适合树的终端节点。(我通常不会以这种方式绘制树木,所以我没有考虑太多。)
您可以使用以下方法解决此问题:
\tikzset{every internal node/.style={align=left, anchor=north}}
或者
\tikzset{every internal node/.style={align=center, anchor=north}}
这internal node
密钥针对树中的所有非终端。