TikZ 中的循环无法使用“triangle 90”

TikZ 中的循环无法使用“triangle 90”

我想要我的有限状态自动机(FSA) 边的端点转换为内部填充三角形。因此我使用了triangle 90如下代码:

\usetikzlibrary{automata, positioning, arrows}

\begin{tikzpicture}[
    -triangle 90,
    node distance=3cm,
    every state/.style={thick, fill=gray!10},
    initial text=$ $
]
\node[state, initial] (q1) {$q_1$};
\node[state, accepting, right of=q1] (q2) {$q_2$};
\node[state, right of=q2] (q3) {$q_3$};
\draw
(q1) edge[loop above] node{0} (q1)
(q1) edge[above] node{1} (q2)
(q2) edge[loop above] node{1} (q2)
(q2) edge[bend left, above] node{0} (q3)
(q3) edge[bend left, below] node{0,1} (q2);
\end{tikzpicture}

但结果如下:

结果

我希望我的循环能像其他边缘一样。

答案1

-triangle 90用两个选项->(所有边都是有方向的)和(所有箭头都是三角形)替换该选项>=triangle 90。我猜这两种方式是等价的,但显然它们不是。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata, positioning, arrows}
\begin{document}
\begin{tikzpicture}[
    ->,
    >=triangle 90,
    node distance=3cm,
    every state/.style={thick, fill=gray!10},
    initial text=$ $
]
\node[state, initial] (q1) {$q_1$};
\node[state, accepting, right of=q1] (q2) {$q_2$};
\node[state, right of=q2] (q3) {$q_3$};
\draw
(q1) edge[loop above] node{0} (q1)
(q1) edge[above] node{1} (q2)
(q2) edge[loop above] node{1} (q2)
(q2) edge[bend left, above] node{0} (q3)
(q3) edge[bend left, below] node{0,1} (q2);
\end{tikzpicture}
\end{document}

答案2

arrows已弃用。请使用arrows.meta

每种loop风格都是最初的style, initially ->,shorten >=1pt,并因此覆盖了箭头。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata, positioning, arrows.meta}
\begin{document}
\begin{tikzpicture}[
    ->,
    >={Triangle[angle=90:5pt]},
    node distance=3cm,
    every state/.style={thick, fill=gray!10},
    initial text=$ $
]
\node[state, initial] (q1) {$q_1$};
\node[state, accepting, right of=q1] (q2) {$q_2$};
\node[state, right of=q2] (q3) {$q_3$};
\draw
(q1) edge[loop above] node{0} (q1)
(q1) edge[above] node{1} (q2)
(q2) edge[loop above] node{1} (q2)
(q2) edge[bend left, above] node{0} (q3)
(q3) edge[bend left, below] node{0,1} (q2);
\end{tikzpicture}
\end{document}

带直角箭头的自动机图

缩短其他箭头就更好了shorten >=1pt

相同的自动机,但箭头缩短了

相关内容