我正在使用 TikZ 包绘制下推确定自动机。如何在转换箭头的标签中添加新线?
这不起作用:
\begin{tikzpicture}[shorten >=1pt,node distance=3.5cm,on grid,auto]
\node[state, initial, initial where=left, accepting] (A) {A};
\path[->]
(A) edge [loop above] node {$a, b, c$ \\ $c, d, e$ \\ foo \\ bar} (A);
\end{tikzpicture}
具体来说,{$a, b, c$ \\ $c, d, e$ \\ foo \\ bar}
就是忽略新行。
答案1
如果您只是在循环上方的标签中添加新行,那么答案已经在评论中提供了。
以下是使用该text width
选项的示例。
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning,automata}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=3.5cm,on grid,auto]
\node[state, initial, initial where=left, accepting] (A) {A};
\path[->]
(A) edge [loop above,text width=1cm] node {$a, b, c$ \\ $c, d, e$ \\ foo \\ bar} (A);
\end{tikzpicture}
\end{document}
这是另一个带有align=left
选项的。
\begin{tikzpicture}[shorten >=1pt,node distance=3.5cm,on grid,auto]
\node[state, initial, initial where=left, accepting] (A) {A};
\path[->]
(A) edge [loop above,align=left] node {$a, b, c$ \\ $c, d, e$ \\ foo \\ bar} (A);
\end{tikzpicture}
这里有align=center
选项。
\begin{tikzpicture}[shorten >=1pt,node distance=3.5cm,on grid,auto]
\node[state, initial, initial where=left, accepting] (A) {A};
\path[->]
(A) edge [loop above,align=center] node {$a, b, c$ \\ $c, d, e$ \\ foo \\ bar} (A);
\end{tikzpicture}
您甚至可以在节点内使用表格。(但这个已经做得过头了:)
\begin{tikzpicture}[shorten >=1pt,node distance=3.5cm,on grid,auto]
\node[state, initial, initial where=left, accepting] (A) {A};
\path[->]
(A) edge [loop above,text width=2cm] node {
\begin{tabular}{@{}ccc}
$a$,& $b$,& $c$ \\
$c$,& $d$,& $e$ \\
foo & & \\
bar & &
\end{tabular}
} (A);
\end{tikzpicture}
您可以参阅手册第 16 节(从 179 页开始)pgf
以了解更多相关内容。