使用 tikz 的自动机库绘图时不显示箭头

使用 tikz 的自动机库绘图时不显示箭头

我正在尝试LaTeX使用包automata中的库来绘制 DFA 的状态图tikz,但在绘制某些边时遇到了问题:每当边在两个节点之间对角线移动时,箭头似乎就会拒绝出现!

例如,此代码

\documentclass[12pt]{article}

\usepackage[left=1in, right=1in, top=1in, bottom=1in]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tikz}
\usepackage{mathtools}
\usetikzlibrary{automata,positioning,arrows}

\begin{center}
 \begin{tikzpicture}[shorten >=1pt, node distance=2cm,auto]
  \node[state,initial] (q0) {$q_0$};
  \node[state] (q1) [right of=q0] {$q_1$};
  \node[state,accepting] (q2) [below of=q1] {$q_2$};
   \path[->] (q0) edge [loop above] node {a} ()
             (q0) edge node {b} (q1)
             (q1) edge node {a} (q2)
             (q1) edge [loop above] node {b} (q1)
             (q2) edge [loop right] node {a} ()
             (q2) edge node {b} (q0);
  \end{tikzpicture}
  \end{center}
  \end{document}

生产

在此处输入图片描述

除了节点 q2 和 q0 之间的边缺少指示路径从 q2 到 q0 的箭头之外,其他都很好。

事实上,如果我调整 q2 的位置,使其位于 q0 下方:

      \node[state,accepting] (q2) [below of=q1] {$q_2$};
   -> \node[state,accepting] (q2) [below of=q0] {$q_2$};

现在这条边的箭头画得很好,但是从 q1 到 q2 的边却缺少箭头!

在此处输入图片描述

我不确定这是否仅仅是 tikz 或我的编辑器的限制(我在 中使用 AuCTeX emacs,在 中显示 pdf evince),或者我只是没有正确绘制 tikzpicture。

有一个简单的解决办法吗?

答案1

我使用了以下测试:

\documentclass[12pt]{article}

\usepackage{tikz}
\usetikzlibrary{automata,positioning,arrows,calc}

\begin{document}
\begin{center}
 \begin{tikzpicture}[shorten >=1pt, node distance=2cm,auto]
             \draw[->](0,0)--(7,7);
             \draw[->] (0,0)--(7,0);
             \draw[->] (0,0)--(7,2);
             \draw[->] (0,0)--(7,3);
             \draw[->] (0,0)--(7,4);
             \draw[->] (0,0)--(7,5);
             \draw[->] (0,0)--(7,5.5);
             \draw[->] (0,0)--(7,6);
             \draw[->](0,0)--(7,7);
             \draw[->] (0,0)--(6,7);
             \draw[->] (0,0)--(5,7);
             \draw[->] (0,0)--(4,7);
             \draw[->] (0,0)--(3.5,7);
             \draw[->] (0,0)--(3,7);
             \draw[->] (0,0)--(2,7);
             \draw[->] (0,0)--(1,7);
             \draw[->] (0,0)--(0,7);

             \draw[->](0,0)--(-7,7);
             \draw[->] (0,0)--(-7,0);
             \draw[->] (0,0)--(-7,2);
             \draw[->] (0,0)--(-7,3);
             \draw[->] (0,0)--(-7,4);
             \draw[->] (0,0)--(-7,5);
             \draw[->] (0,0)--(-7,5.5);
             \draw[->] (0,0)--(-7,6);
             \draw[->](0,0)--(-7,7);
             \draw[->] (0,0)--(-6,7);
             \draw[->] (0,0)--(-5,7);
             \draw[->] (0,0)--(-4,7);
             \draw[->] (0,0)--(-3.5,7);
             \draw[->] (0,0)--(-3,7);
             \draw[->] (0,0)--(-2,7);
             \draw[->] (0,0)--(-1,7);

              \draw[->](0,0)--(-7,-7);
             \draw[->] (0,0)--(-7,-2);
             \draw[->] (0,0)--(-7,-3);
             \draw[->] (0,0)--(-7,-4);
             \draw[->] (0,0)--(-7,-5);
             \draw[->] (0,0)--(-7,-5.5);
             \draw[->] (0,0)--(-7,-6);
             \draw[->](0,0)--(-7,-7);
             \draw[->] (0,0)--(-6,-7);
             \draw[->] (0,0)--(-5,-7);
             \draw[->] (0,0)--(-4,-7);
             \draw[->] (0,0)--(-3.5,-7);
             \draw[->] (0,0)--(-3,-7);
             \draw[->] (0,0)--(-2,-7);
             \draw[->] (0,0)--(-1,-7);

             \draw[->](0,0)--(7,-7);
             \draw[->] (0,0)--(7,-2);
             \draw[->] (0,0)--(7,-3);
             \draw[->] (0,0)--(7,-4);
             \draw[->] (0,0)--(7,-5);
             \draw[->] (0,0)--(7,-5.5);
             \draw[->] (0,0)--(7,-6);
             \draw[->](0,0)--(7,-7);
             \draw[->] (0,0)--(6,-7);
             \draw[->] (0,0)--(5,-7);
             \draw[->] (0,0)--(4,-7);
             \draw[->] (0,0)--(3.5,-7);
             \draw[->] (0,0)--(3,-7);
             \draw[->] (0,0)--(2,-7);
             \draw[->] (0,0)--(1,-7);
             \end{tikzpicture}
  \end{center}
  \end{document}

zoom=125% 的结果是:

在此处输入图片描述

但缩放=175%:

在此处输入图片描述

其他经过测试的 pdf 查看器按预期工作。因此,这是一个与 TeX-LaTeX 无关的问题,并且是特定于查看器的问题,但我认为答案对于查看发生了什么以及何时发生很有用,因为 evince 是许多 Linux 发行版中的默认 pdf 查看器,并且许多 latex 用户使用 Linux。

另一个有同样问题的问题是:使用 TikZ 箭头指示两张图片之间的循环--缺少箭头

因此,当前是第一个的重复,我会将其标记为之前提到的重复。

我建议更改第一个标题,即使我们必须将其标记为离题(早期的),但不要删除它,因为许多 Linux 用户都会需要它。

我的示例显示的问题是,当缩放比例小于 175% 并且方向接近任何对角线方向时,箭头尖会消失。

离题:我将尝试使用这个答案来填补 evince 的一个错误,并且我将在下面添加链接,以便任何想说它影响他的人都可以说。

相关内容