为了绘制下推自动机,我想中断路径的输入,因此我尝试使用断线符号\\
,甚至$$ $$
,但它仍然无法中断线条。
例如,输入应该是
0, 1, 2
3, 4, 5
有什么想法吗?谢谢。
代码示例:
\documentclass[10pt,letterpaper]{article}
\usepackage[latin1]{inputenc}
\usepackage[left=1in,right=1in,top=1in,bottom=1in]{geometry}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex}
\textbf{PDA:}\\
\begin{tikzpicture}[shorten >=1pt,node distance=5cm,on grid,auto]
\node[state,initial] (q_0) {$q_0$};
\node[state,accepting] (q_1) [right=of q_0] {$q_1$};
\node[state] (q_2) [right=of q_1] {$q_2$};
\node[state] (q_3) [below=of q_1] {$q_3$};
\path[->]
(q_0) edge node {0,1} (q_1)
edge [loop above] node {0,1,2,3,4,5} (q_0)
(q_1) edge node {0,1} (q_2)
(q_2) edge [loop right] node {1} (q_2)
; %end path
\end{tikzpicture}
\\
\end{document}
答案1
一种简单的方法是在节点内指定文本特征:文本宽度等。这样您就可以完全按照自己的意愿行事,而无需任何额外的包。例如,
\documentclass[]{minimal}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=5cm,on grid,auto]
\node[state,initial] (q_0) {$q_0$};
\path[->] (q_0) edge[loop above] node[text width=1cm,align=center] {0,1,2\\3,4,5} (q_0);
\end{tikzpicture}
\end{document}
结果是
答案2
根据Frédérics的回答和Chans的评论,你可以这样做:
\documentclass[]{minimal}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=5cm,on grid,auto]
\node[state,initial] (q_0) {$q_0$};
\path[->] (q_0) edge[loop above] node[align=center] {0,1,2\\3,4,5} (q_0);
\end{tikzpicture}
\end{document}
你不需要这个text width
选项,只需要align
答案3
您可以使用makecell
包裹. 如上所述包装文档, 它提供
\makecell[<vertical or/and horizontal alignment>]{<cell text>}
这有助于创建(小规模)多行表格单元格。在这方面,请考虑对代码进行以下更改:
...
\usepackage{makecell}%
...
\path[->]
(q_0) edge node {0,1} (q_1)
edge [loop above] node {\makecell[l]{0,1,2,\\3,4,5}} (q_0)
(q_1) edge node {0,1} (q_2)
(q_2) edge [loop right] node {1} (q_2)
; %end path
答案4
您可以使用\shortstack[alignment]{text1 \\ text1 \\ text1 etc. }
以下对齐方式:
r
- 右对齐
l
- 左对齐
c
- 居中(默认)
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}
\tikzstyle{box} = [rectangle, rounded corners, minimum width=2cm, minimum height=1cm,text centered, draw=black, ]
\begin{tikzpicture}[node distance=2cm]
\node (box1) [box] {\shortstack{text1 \\ text2} };
\node (box2) [box, right of=box1, xshift=1cm] {Process 2b};
\end{tikzpicture}