在 或 中tikz-qtree
,qtree
是否可以标记或编号 (垂直) 树的不同级别?此类标签可以位于整个树的右侧或左侧。
答案1
您可以使用\node
s 来命名一些特殊节点,并允许访问它们在树中的位置,然后使用命名的节点来放置文本。在两侧放置文本的小示例:
\documentclass[border=3pt]{standalone}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
\Tree
[.\node (level0-right) {S};
[.NP
[.Det \node (level3-left) {the};
]
[.N cat
]
]
[.\node (level1-right) {VP};
[.V sat
]
[.\node (level2-right) {PP};
[.P on
]
[.\node (level3-right) {NP};
[.Det the
]
[.\node (level4-right) {N}; \node (level5-right) {mat};
]
]
]
]
]
\foreach \Value/\Text in {0/{Texto 1},1/{Texto 2},2/{Texto 3},3/{Texto 4},4/{Texto 5},5/{Texto 6}}
{
\node[anchor=west]
at ([xshift=1cm]{level5-right}|-{level\Value-right})
{\Text};
\node[anchor=east]
at ([xshift=-1cm]{level3-left}|-{level\Value-right})
{\Text};
}
\end{tikzpicture}
\end{document}
答案2
只是为了好玩,这是Gonzalo Medina 的示例树和prooftrees
:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{prooftrees}% version 0.8
\begin{document}
\begin{prooftree}
{
single branches
}
[S, just=explan 1
[NP, just=explan 2
[Det [the]]
[N [cat]]
]
[VP
[V [sat]]
[PP, just=explan 3
[P [on]]
[NP, just=explan 4
[Det, just=explan 5 [the, just=explan 6]]
[N [mat]]
]
]
]
]
\end{prooftree}
\end{document}
请注意,左侧的编号是自动的。(可以关闭,但这是默认设置。)但请记住,该包实际上是专门为逻辑证明而设计的,而不是为其他类型的树而设计的。
编辑
以下是 Beamer 中具有一些覆盖规范的同一棵树:
tikzpicture
这是我对s 和树通常使用的标准定义forest
,特别是:
\documentclass{beamer}
\usepackage{prooftrees}% version 0.8
\tikzset{% set up for transitions using tikz with beamer overlays
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
transparent/.style={opacity=0.1,text opacity=0.1},
opaque on/.style={alt=#1{}{transparent}},
alerted/.style={color=red},
alert on/.style={alt=#1{alerted}{}},
}
\forestset{%
visible on/.style={%
for tree={%
/tikz/visible on={#1},
edge={/tikz/visible on={#1}}}},
opaque on/.style={%
for tree={%
/tikz/opaque on={#1},
edge={/tikz/opaque on={#1}}}},
alerted on/.style={%
for tree={%
/tikz/alerted on={#1},
edge={/tikz/alerted on={#1}}}},
}%
\begin{document}
\begin{frame}{A Tree}
\begin{prooftree}
{
single branches,
}
[S, just=explan 1
[NP, just=explan 2, alert on=<4->, for children={opaque on=<5->}
[Det [the]]
[N [cat]]
]
[VP
[V [sat]]
[PP, just=explan 3
[P [on]]
[NP, just=explan 4, alert on=<2>
[Det, just=explan 5, opaque on=<3-> [the, just=explan 6]]
[N [mat]]
]
]
]
]
\end{prooftree}
\end{frame}
\end{document}