@@ -30,7 +30,7 @@ Conversion of LaTeX to 'Pandoc' document.
3030module Text.Pandoc.Readers.LaTeX (
3131 readLaTeX,
3232 rawLaTeXInline,
33− rawLaTeXEnvironment
33+ rawLaTeXEnvironment'
3434 ) where
3535
3636import Text.ParserCombinators.Parsec
@@ -92,13 +92,12 @@ begin name = try $ do
9292end :: [Char] -> GenParser Char st [Char]
9393end name = try $ do
9494 string $ "\\end{" ++ name ++ "}"
95− spaces
9695 return name
9796
9897-- | Returns a list of block elements containing the contents of an
9998-- environment.
10099environment :: [Char] -> GenParser Char ParserState [Block]
101−environment name = try $ begin name >> spaces >> manyTill block (end name)
100+environment name = try $ begin name >> spaces >> manyTill block (end name) >>~ spaces
102101
103102anyEnvironment :: GenParser Char ParserState Block
104103anyEnvironment = try $ do
@@ -109,6 +108,7 @@ anyEnvironment = try $ do
109108 optional commandArgs
110109 spaces
111110 contents <- manyTill block (end (name ++ star))
111+ spaces
112112 return $ BlockQuote contents
113113
114114--
@@ -377,7 +377,15 @@ specialEnvironment = do -- these are always parsed as raw
377377-- | Parse any LaTeX environment and return a Para block containing
378378-- the whole literal environment as raw TeX.
379379rawLaTeXEnvironment :: GenParser Char st Block
380−rawLaTeXEnvironment = try $ do
380+rawLaTeXEnvironment = do
381+ contents <- rawLaTeXEnvironment'
382+ spaces
383+ return $ Para [TeX contents]
384+
385+-- | Parse any LaTeX environment and return a string containing
386+-- the whole literal environment as raw TeX.
387+rawLaTeXEnvironment' :: GenParser Char st String
388+rawLaTeXEnvironment' = try $ do
381389 string "\\begin{"
382390 name <- many1 letter
383391 star <- option "" (string "*") -- for starred variants
@@ -386,14 +394,11 @@ rawLaTeXEnvironment = try $ do
386394 args <- option [] commandArgs
387395 let argStr = concat args
388396 contents <- manyTill (choice [ (many1 (noneOf "\\")),
389− (do
390− (Para [TeX s]) <- rawLaTeXEnvironment
391− return s),
397+ rawLaTeXEnvironment',
392398 string "\\" ])
393399 (end name')
394− spaces
395− return $ Para [TeX $ "\\begin{" ++ name' ++ "}" ++ argStr ++
396− concat contents ++ "\\end{" ++ name' ++ "}"]
400+ return $ "\\begin{" ++ name' ++ "}" ++ argStr ++
401+ concat contents ++ "\\end{" ++ name' ++ "}"
397402
398403unknownEnvironment :: GenParser Char ParserState Block
399404unknownEnvironment = try $ do