我一直在尝试使用 tikz-qtree 包来制作这棵树。我有它的几个部分,但我无法制作虚线。
\documentclass[a4paper,12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsfonts, amsmath, amsthm, amssymb}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[scale=1.2,every node/.style={align=center}]
\tikzset{level distance=50pt,sibling distance=5pt}
\Tree [.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ $\bullet$\\$\gamma:\rho^c$
]
[.$\beta$:$\sigma^a$ $\bullet$\\$\delta:\vartheta^c$ ] ]
\end{tikzpicture}
\end{document}
你能画出那条虚线吗?
答案1
您可以使用tikz
任何您喜欢的选项在树中创建节点。例如,您可以创建一个带有圆角虚线边框的标签节点,如下所示:
\begin{tikzpicture}
[
scale=1.2,
every node/.style={align=center},
level distance=50pt,
sibling distance=5pt,
]
\Tree
[.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
]
[.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
]
]
\end{tikzpicture}
不过我建议forest
能够提供 Ti 所有功能的钾Z 等等。如果您愿意,您可以将最后的线条放入节点中,并让 Forest 使用您想要的任何选项自动添加圆圈,同时添加虚线边框等。例如,您可以将以下代码用于树的序言。
for tree={
math content,
默认情况下,节点具有数学内容。
parent anchor=children,
child anchor=parent,
把东西整理一下。
},
before typesetting nodes={
推迟此操作,直到一切准备就绪。
where n children=0{
仅适用于终端节点。
no edge,
不要给它们画边。
draw,
请为它们画一个边框。
densely dotted,
使边框密集分布。
content/.wrap value={\strut#1},
使它们都具有相同的高度。
rounded corners,
把角弄圆。
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
在终端节点前插入另一个节点,该节点只是一个小的实心圆。也不要在该节点上画边。通过replace by
将原始节点与替代节点配对,然后append
再配对原始节点来声明节点。我们稍后再执行此操作,因为否则原始节点尚未全部保存,如果我们尝试移动它们,我们可能会丢失一些东西。
}{}
不要对非终端节点做任何事情。
}
延迟的事情结束了。
这使得我们能够非常简洁地指定树本身,而无需一直切换到数学模式。
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
组装这个,
\begin{forest}
for tree={
math content,
parent anchor=children,
child anchor=parent,
},
before typesetting nodes={
where n children=0{
no edge,
draw,
densely dotted,
content/.wrap value={\strut#1},
rounded corners,
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
}{}
}
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
\end{forest}
生产
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{tikz-qtree}
\usepackage{forest}
\begin{document}
\begin{tikzpicture}
[
scale=1.2,
every node/.style={align=center},
level distance=50pt,
sibling distance=5pt,
]
\Tree
[.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
]
[.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
]
]
\end{tikzpicture}
\begin{forest}
for tree={
math content,
parent anchor=children,
child anchor=parent,
},
before typesetting nodes={
where n children=0{
no edge,
draw,
densely dotted,
content/.wrap value={\strut#1},
rounded corners,
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
}{}
}
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
\end{forest}
\end{document}