我正在尝试玩弄 tikz,但发现结果很奇怪。当我运行给定的代码时这里:
\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
semithick]
\tikzstyle{every state}=[fill=red,draw=none,text=white]
\node[initial,state] (A) {$q_a$};
\node[state] (B) [above right of=A] {$q_b$};
\node[state] (D) [below right of=A] {$q_d$};
\node[state] (C) [below right of=B] {$q_c$};
\node[state] (E) [below of=D] {$q_e$};
\path (A) edge node {0,1,L} (B)
edge node {1,1,R} (C)
(B) edge [loop above] node {1,1,L} (B)
edge node {0,1,L} (C)
(C) edge node {0,1,L} (D)
edge [bend left] node {1,0,R} (E)
(D) edge [loop below] node {1,1,R} (D)
edge node {0,1,R} (A)
(E) edge [bend left] node {1,0,R} (A);
\end{tikzpicture}
\end{document}
我得到这个结果: 我正在使用 Ubuntu Natty 机器。
答案1
(这个答案建立在之前的许多评论之上,我决定补充细节,因为目前还没有答案。)默认情况下,当您使用 latex 编译(相当复杂的)pgf 代码时,生成的文件包含各种 dvipdfm(x) 无法处理的 postscript 代码——如果您在转换时查看 stderr,就会发生大量错误。这就是为什么 dvips -> ps2pdf 可以工作,但 dvipdfm 无法工作的原因。
据我了解,pgf 将半自动选择要使用的后端驱动程序,如果您正在运行,latex
它会猜测您想要使用 dvips。使用 pdflatex,它当然会自动使用 pdftex 驱动程序。如果您想使用 dvipdfm(x) 转换 pgf 生成的代码的 dvi,它没有中间 .ps 阶段(与类似名称的 dvipdf 不同),您需要告诉它使用正确的驱动程序。因此,如果您想执行 latex -> dvipdfm,则需要在加载 pgf/tikz 之前添加以下行:
\def\pgfsysdriver{pgfsys-dvipdfm.def}
至少对我来说,使用此行,原始代码可以通过此命令序列顺利编译和转换。驱动程序系统在 2.1 手册的 \S 10.2 中有详细记录。因此,总而言之,我认为最有可能的是错误不是运行latex
本身pdflatex
,而是latex
在 pgf 驱动程序和转换路径不匹配的情况下运行。
答案2
我遇到了同样的问题,我解决了:
- 在 Kile 的设置 -> 配置 Kile
- 转到工具->构建
- 搜索
dvitopdf
- 将命令改为
dvipdf
而不是dvipdfmx
或其他内容,诸如此类。