如果我添加syntax
包,编译器将产生错误:
最小示例
\documentclass[10pt,letterpaper]{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,automata,backgrounds,petri,positioning}
\usepackage{syntax}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
\node[state,initial] (q_1) {$q_1$};
\node[state,accepting] (q_2) [right=of q_1] {$q_2$};
\node[state] (q_3) [below right=of q_1] {$q_3$};
\path[->]
(q_1) edge [bend left] node {a} (q_2)
(q_1) edge [loop above] node {b} (q_1)
(q_2) edge [bend left] node {a,b} (q_3)
(q_3) edge [bend left] node {a} (q_2)
(q_3) edge [bend left] node {b} (q_1);
\node [below=1cm, align=flush center,text width=8cm] at (q_3)
{
$M_1$
};
\end{tikzpicture}
\end{document}
但如果我删除\usepackage{syntax}
,它就会成功编译。我想知道有没有办法解决这个问题?谢谢。
答案1
出现此问题的原因是,该包为了改善带下划线的代码排版,syntax
将下划线 ( ) 设为有效。这会弄乱您的节点名称,并导致错误。_
q_1
有两种方法可以解决这个问题:
- 避免在节点名(和文件名)中使用下划线。
syntax
使用选项加载包。您仍然可以在代码示例中nounderscore
使用来获得漂亮的下划线排版。\_