Results 1 to 2 of 2

Math Help - Help with tikz

  1. #1
    Super Member redsoxfan325's Avatar
    Joined
    Feb 2009
    From
    Swampscott, MA
    Posts
    943

    Help with tikz

    I am new to tikz and would like some help. Because this comes back with an error of equation too long on MHF, I have attached an image of what it looks like, and have pasted the code below. There are two things I would like to know:
    1) How can I compress this a bit so it doesn't fill up the whole page? Like maybe make the nodes smaller or get more fine-tuned control over the arrows and arrow text? Alternatively, is there someway I can put a ... in there, like have the nodes q_0, q_1,\ldots,q_9? (This would be helpful to know anyway.)
    2) How can I write a loop to shorten the code?
    If you can answer either or both of these, I would be very grateful.

    Code:
    \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
                        semithick]
      \node[initial,accepting,state] (S) {$q_s$};
      \node[accepting,state] (D) at (-2,-2) {$q_t$};
      \node[state] (N4) at (5,0) {$q_4$};
      \node[state] (N3) at (5,2) {$q_3$};
      \node[state] (N2) at (5,4) {$q_2$};
      \node[state] (N1) at (5,6) {$q_1$};
      \node[state] (N0) at (5,8) {$q_0$};
      \node[state] (N5) at (5,-2) {$q_5$};
      \node[state] (N6) at (5,-4) {$q_6$};
      \node[state] (N7) at (5,-6) {$q_7$};
      \node[state] (N8) at (5,-8) {$q_8$};
      \node[state] (N9) at (5,-10) {$q_9$};
      \node[accepting,state] (W) at (10,0) {$q_w$};
      \path (S)  edge node {$\Sigma$} (D)
                 edge [bend left]  node {\scriptsize$\Sigma-0$} (N0)
                 edge [bend left]  node {\scriptsize$\Sigma-1$} (N1)
                 edge              node {\scriptsize$\Sigma-2$} (N2)
                 edge              node {\scriptsize$\Sigma-3$} (N3)
                 edge              node {\scriptsize$\Sigma-4$} (N4)
                 edge              node {\scriptsize$\Sigma-5$} (N5)
                 edge              node {\scriptsize$\Sigma-6$} (N6)
                 edge [bend right] node {\scriptsize$\Sigma-7$} (N7)
                 edge [bend right] node {\scriptsize$\Sigma-8$} (N8)
                 edge [bend right] node {\scriptsize$\Sigma-9$} (N9)
            (N0) edge [bend left]  node {\scriptsize$0$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-0$} ()
            (N1) edge [bend left]  node {\scriptsize$1$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-1$} ()
            (N2) edge              node {\scriptsize$2$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-2$} ()
            (N3) edge              node {\scriptsize$3$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-3$} ()
            (N4) edge              node {\scriptsize$4$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-4$} ()
            (N5) edge              node {\scriptsize$5$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-5$} ()
            (N6) edge              node {\scriptsize$6$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-6$} ()
            (N7) edge [bend right] node {\scriptsize$7$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-7$} ()
            (N8) edge [bend right] node {\scriptsize$8$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-8$} ()
            (N9) edge [bend right] node {\scriptsize$9$} (W)
                 edge [loop above] node {\scriptsize$\Sigma-9$} ();
    \end{tikzpicture}
    \end{center}
    Attached Thumbnails Attached Thumbnails Help with tikz-nfa.png  
    Follow Math Help Forum on Facebook and Google+

  2. #2
    MHF Contributor
    Joined
    Oct 2009
    Posts
    5,517
    Thanks
    771

    Re: Help with tikz

    How can I compress this a bit so it doesn't fill up the whole page? Like maybe make the nodes smaller or get more fine-tuned control over the arrows and arrow text?
    This is a creative question. Maybe there is a better layout for the nodes. I am also not sure how different you want the arrows and arrow text to be.

    The size of the nodes is controled by the option "inner sep" (p. 175 of TikZ Manual v. 2.10), which can be negative, but it does not seem to work when the option "state" is given.

    Alternatively, is there someway I can put a ... in there, like have the nodes q_0, q_1,\ldots,q_9?
    The following code draws four nodes with dots between them.

    Code:
    \usetikzlibrary{arrows,automata,positioning}
    
        \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,semithick,node distance=2cm,on grid]
          \node[initial,accepting,state] (S) {$q_s$};
          \node[accepting,state,below left=2 of S] (D) {$q_t$};
          \node[right=5 of S,circle,fill,inner sep=1pt] (vdots) {};
          \node[above=.3 of vdots,circle,fill,inner sep=1pt] {};
          \node[below=.3 of vdots,circle,fill,inner sep=1pt] {};
          \node[state,above=of vdots] (N1) {$q_1$};
          \node[state,above=of N1] (N0) {$q_0$};
          \node[state,below=of vdots] (Nn-1) {};
          \node[state,below=of Nn-1] (Nn) {$q_n$};
          \foreach \n/\l in {0, 1, n-1/(n-1), n}
            \path (N\n) edge[loop above] node {\scriptsize$\Sigma-\l$} ();
          \node[accepting,state,right=5 of vdots] (W) {$q_w$};
          \path (S)  edge node {$\Sigma$} (D)
                     edge  node[near end] {\scriptsize$\Sigma-0$} (N0)
                     edge  node[near end] {\scriptsize$\Sigma-1$} (N1)
                     edge  node {\scriptsize$\Sigma-(n-1)$} (Nn-1)
                     edge  node {\scriptsize$\Sigma-n$} (Nn)
                (N0) edge node {\scriptsize$0$} (W)
                (N1) edge node {\scriptsize$1$} (W)
                (Nn-1) edge node {\scriptsize$n-1$} (W)
                (Nn) edge node {\scriptsize$n$} (W);
        \end{tikzpicture}
    The library "positioning" makes it possible to say "right=5 of ...".

    How can I write a loop to shorten the code?
    Here is how to draw the nodes N0 N9. This works because some evaluation is done inside the coordinates.
    Code:
    \foreach \n in {0, ..., 9}
      \node[state] (N\n) at (5,8-2*\n) {$q_\n$};
    If you specify the options "node distance=2cm,on grid" after "\begin{tikzpicture}", you can do the following.
    Code:
    \node[state] (N0) at (5,8) {$q_0$};
    \foreach \n [remember=\n as \m (initially 0)] in {1, ..., 9}
      \node[state,below=of N\m] (N\n)  {$q_\n$};
    You can also draw the loop arrows inside the for-loop.
    Code:
    \node[state] (N0) at (5,8) {$q_0$};
    \foreach \n [remember=\n as \m (initially 0)] in {1, ..., 9} {
      \node[state,below=of N\m] (N\n)  {$q_\n$};
      \path (N\n) edge [loop above] node {\scriptsize$\Sigma-\n$} ();
    }
    Follow Math Help Forum on Facebook and Google+

Similar Math Help Forum Discussions

  1. draw in tikz
    Posted in the LaTeX Help Forum
    Replies: 0
    Last Post: March 8th 2012, 03:51 AM
  2. tikz
    Posted in the LaTeX Help Forum
    Replies: 2
    Last Post: January 12th 2012, 04:15 PM
  3. Tikz Circle Help
    Posted in the LaTeX Help Forum
    Replies: 0
    Last Post: March 23rd 2010, 03:22 PM
  4. tikz circuits library causing pgfkeys error
    Posted in the LaTeX Help Forum
    Replies: 0
    Last Post: January 12th 2010, 08:49 AM
  5. Line intersection with unit circle using TikZ/PGF
    Posted in the LaTeX Help Forum
    Replies: 0
    Last Post: January 1st 2010, 01:36 PM

Search Tags


/mathhelpforum @mathhelpforum