If I add syntax package, the compiler will generate errors:

Minimal Example





    \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$}; 

        (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)

But if I delete \usepackage{syntax}, it compiles successfully. I wonder is there a way to get around this issue? Thank you.

up vote 5 down vote accepted

This issue arises because the syntax package makes the underscore (_) active in order to improve the typesetting of code with underscores. This messes with your node name q_1, and leads to the error.

Two ways around this:

  1. Avoid using underscores in node names (and file names).
  2. Load the syntax package with the option nounderscore. You can still get the nice underscore typesetting by using \_ in your code samples.
  • Thanks a lot. But I really don't want to get rid of the _, I will go with your second solution. – Chan Aug 5 '11 at 5:28

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.