如何用LaTeX画自动机
tikz-tutorial,这个教程讲的挺详细的,按要求导入包、配置特性,就可以绘制很漂亮的自动机图案了。
但是稍微有些纰漏,>=stealth’这里不应有’,否则直接报错
node
\node[] (name) {text label};
示例:\node[state, right of=B] (A) {A};,()里的是name,用于后文引用,{}里的是显示的标签名。
除了开始的节点不需指定位置,其他节点需要通过相对位置或绝对位置来放置。
状态
- state
- initial
- accepting
只要是node,就必须有state。initial指定开始节点,会有一条线指向开始节点。accepting是接受状态,双圈圆。
位置
位置的指定通过相对位置或绝对位置。
相对位置是right of=A这种,一共有right left above below,并且可以联合使用:above right
也可以用xshift yshift进行微调
绝对位置用的at,不过这种要求似乎过高
\node[state, initial] (0) {0};
\node[state, above right of=0] (1) {1};
\node[state, right of=1] (2) {2};
==注意==:每条语句结束都要加分号。
edge
\draw (q1) edge[loop above] node{0} (q1);,()代表的是边的起点和终点,edge中是关于边的特性,node里是边上的标签名。
在画完节点后就可以画边了,注意只有最后一条语句加分号
\draw (0) edge[above] node{$\epsilon$} (1);
% above代表ϵ在边的上方,而$\epsilon$代表ϵ
好的,下面让我们进入实例分析吧,光会理论可不会作图
\begin{tikzpicture}
\node[state, initial] (q0) {q0}; % 指定初始节点q0
\node[state, right of=q0] (q1) {q1}; % q1在q0右侧
\node[state, right of=q1] (q2) {q2};
\node[state, below right of=q1, xshift=-0.5cm, accepting] (q3) {q3}; % 指定终止节点位置,并且将其左移0.5cm
\draw (q0) edge[loop above] node{b} (q0) % 这是一条循环边,且在节点上方
(q0) edge[above] node{a} (q1)
(q1) edge[above] node{a} (q2)
(q1) edge[below] node{b} (q3)
(q2) edge[below] node{b} (q3);
\end{tikzpicture}
\begin{tikzpicture}
\node[state, initial, accepting] (A) {A};
\node[state, accepting, above right of=A] (B) {B};
\node[state, below right of=A] (C) {C};
\node[state, right of=C] (D) {D};
\node[state, right of=D] (E) {E};
\node[state, accepting, above of=E, yshift=1.3cm] (F) {F}; % 这里是想让F在E的上方、B的右方
\draw (A) edge[above] node{0} (B)
(A) edge[below] node{1} (C)
(B) edge[loop above, out=60, in=120, distance=1.5cm] node{0} (B) % out代表出边的角度,in代表入边的角度。实际范围无限大,但我们推荐范围是-180°到180°,即240°可以用-120°表示。distance就是循环边的半径
(B) edge[right] node{1} (C)
(C) edge[above] node{0} (D)
(C) edge[above, bend left=10] node{1} (F) % 线是弯的,数值代表弯曲的角度
(D) edge[loop below, out=-120, in=-60, distance=1.5cm] node{1} (D)
(D) edge[above, bend left=10] node{0} (E)
(E) edge[below, bend left=10] node{0} (D)
(E) edge[right] node{1} (F)
(F) edge[below, bend left=10] node{1} (C)
(F) edge[above] node{0} (B);
\end{tikzpicture}
\begin{tikzpicture}[node distance=2cm]
如上,[]里也可以加参数。如果自动机过长,可以缩减node间的距离(因为教程里给的tikzset的node distance是3cm)
\item后面使用\begin{tikzpicture},结果图画到项目符号上面去了
这种情况的原因在于\item后没有换行
\item
% 此处留空行
\begin{tikzpicture}
% code
\end{tikzpicture}
如何表示exponent
How would LaTeX have an expression for an exponent?
$3^m+2^{m+n}$
\clearpage
\clearpage 是一个 LaTeX 命令,用于强制将当前页面结束并开始新页面。它的作用是在当前页面结束之前将所有未处理的浮动体(例如图形、表格等)插入到页面中,然后开始新的页面。
这篇文章让我发现了自己写作有多么的糟糕可怕。。。