我正在寻找类似的东西这(有限自动机)。我想将特定节点绘制为结束节点,这意味着该节点应该有两个圆圈作为边框。我用它forest
来绘制我的树
目前我正在使用此代码生成树。应该有一个“结束节点”用于“Jack”、“Java”、“Jim”、“Ron”和“Ronny”(始终位于最后一个匹配节点)
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
circle,
black,
draw,
minimum size = 2em,
font=\Large,
edge={->},
s sep = 30pt
}
[{}
[J, edge label={node[midway, left]{J}}
[a, edge label={node[midway, left]{a}}
[c, edge label={node[midway, left]{c}}
[k, edge label={node[midway, left]{k}}]]
[v, edge label={node[midway, left]{v}}
[a, edge label={node[midway, left]{a}}]]]
[i, edge label={node[midway, left]{i}}
[m, edge label={node[midway, left]{m}}]]]
[R, edge label={node[midway, right]{R}}
[o, edge label={node[midway, right]{o}}
[n, edge label={node[midway, right]{n}}
[n, edge label={node[midway, right]{n}}
[y, edge label={node[midway, right]{y}}]]]]]]
\end{forest}
\end{document}
答案1
同时我在我的示例库中找到了一个简单的示例:
\documentclass[tikz,multi,border=5pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
draw=teal,
line width=0.4pt,
edge={draw=teal,very thin},
grow=east,
circle,
l sep=19mm,
% anchor=children,
anchor=parent,
}
[A, double, outer sep=0.5pt,
[B]
[C]
]
\end{forest}
\end{document}
这就是你要找的吗?
答案2
这是获得所需边缘标签模式的一种不太费力的方法。这完全是题外话,甚至没有尝试回答实际问题,Zarko 已经讲过了。
\documentclass[border=10pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
circle,
black,
draw,
minimum size = 2em,
font=\Large,
edge={->},
s sep = 30pt
},
delay={
for nodewalk={fake=r,1,descendants}{
if edge label={}{}{
edge label/.wrap value={ node [midway, left] {#1} }
}
},
for nodewalk={fake=r,l,descendants}{
if edge label={}{}{
edge label/.wrap value={ node [midway, right] {#1} }
}
}
}
[
[J, edge label=J
[a, edge label=a
[c, edge label=c
[k, edge label=k]]
[v, edge label=v
[a, edge label=a]]]
[i, edge label=i
[m, edge label=m]]]
[R, edge label=R
[o, edge label=o
[n, edge label=n
[n, edge label=n
[y, edge label=y]]]]]]
\end{forest}
\end{document}
这也许比通常的情况更棘手,通常的情况是人们希望左侧分支的所有标签都朝一个方向,而右侧分支的所有标签都朝另一个方向。因此,这种模式在技术上似乎更有趣,尽管在审美上不一定令人愉悦。