diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -31,6 +31,7 @@
   | WriteHaskell Bool Text -- False for Hidden, True for Visible
   | EvalHaskell  Bool Text -- False for Command, True for Environment
   | Sequence     [Syntax]
+    deriving Show -- Show instance for debugging.
 
 -- Parsing
 
@@ -42,8 +43,8 @@
   _ <- string "\\begin{writehaskell}"
   b <- choice [ string "[hidden]"  >> return False
               , string "[visible]" >> return True
-              , return v ]
-  h <- manyTill anyChar $ try $ string "\\end{writehaskell}"
+              , return v ] -- When no option is given, take the default.
+  h <- manyTill anyChar $ string "\\end{writehaskell}"
   return $ WriteHaskell b $ pack h
 
 p_evalhaskell :: Parser Syntax
@@ -52,23 +53,43 @@
 p_evalhaskellenv :: Parser Syntax
 p_evalhaskellenv = do
   _ <- string "\\begin{evalhaskell}"
-  h <- manyTill anyChar $ try $ string "\\end{evalhaskell}"
+  h <- manyTill anyChar $ string "\\end{evalhaskell}"
   return $ EvalHaskell True $ pack h
 
 p_evalhaskellcomm :: Parser Syntax
 p_evalhaskellcomm = do
-  _ <- string "\\evalhaskell{"
-  h <- manyTill anyChar $ char '}'
+  _  <- string "\\evalhaskell{"
+  h  <- p_haskell 0
   return $ EvalHaskell False $ pack h
 
+p_haskell :: Int -> Parser String
+p_haskell n = choice [
+    do _ <- char '{'
+       ('{':) <$> p_haskell (n+1)
+  , do _ <- char '}'
+       if n == 0
+          then return []
+          else ('}':) <$> p_haskell (n-1)
+  , do _ <- char '\"'
+       liftA2 (++) (('\"':) <$> p_string) (p_haskell n)
+  , liftA2 (:) anyChar (p_haskell n)
+    ]
+
+p_string :: Parser String
+p_string = choice [
+    liftA2 (++) (char '\\' >> char '\"' >> return "\\\"") p_string
+  , liftA2 (:) (char '\"') (return [])
+  , liftA2 (:) anyChar p_string
+    ]  
+
 p_writelatex :: Parser Syntax
 p_writelatex = (WriteLaTeX . pack) <$>
   many1 (p_other >>= \b -> if b then anyChar else fail "stop write latex")
   where
     p_other =
-      choice [ string "\\begin{writehaskell}" >> return False
-             , string "\\begin{evalhaskell}"  >> return False
-             , string "\\evalhaskell"         >> return False
+      choice [ string "\\begin{writehaskell}" >> return False -- starts p_writehaskell
+             , string "\\begin{evalhaskell}"  >> return False -- starts p_evalhaskellenv
+             , string "\\evalhaskell"         >> return False -- starts p_evalhaskellcomm
              , return True
              ]
 
diff --git a/haskintex.cabal b/haskintex.cabal
--- a/haskintex.cabal
+++ b/haskintex.cabal
@@ -1,5 +1,5 @@
 name:                haskintex
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Haskell Evaluation inside of LaTeX code.
 description:
   The /haskintex/ program is a tool that reads a LaTeX file and evaluates Haskell expressions contained
