From e126ab9efcec79850c217b979fd295a6730bfa6c Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 5 Jan 2011 12:25:47 -0800 Subject: LaTeX reader: Parse inside arguments when ignoring commands. --- src/Text/Pandoc/Readers/LaTeX.hs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/Text/Pandoc/Readers') diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index cdac5b2a5..7f726b2e1 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -39,8 +39,8 @@ import Text.Pandoc.Shared import Text.Pandoc.Parsing import Data.Maybe ( fromMaybe ) import Data.Char ( chr, toUpper ) -import Data.List ( isPrefixOf, isSuffixOf ) -import Control.Monad ( when, guard ) +import Data.List ( intercalate, isPrefixOf, isSuffixOf ) +import Control.Monad -- | Parse LaTeX from string and return 'Pandoc' document. readLaTeX :: ParserState -- ^ Parser state, including options for parser @@ -430,9 +430,11 @@ unknownCommand = try $ do else do (name, _, args) <- command spaces - if name `elem` commandsToIgnore - then return Null - else return $ Plain [Str $ concat args] + unless (name `elem` commandsToIgnore) $ do + -- put arguments back in input to be parsed + inp <- getInput + setInput $ intercalate " " args ++ inp + return Null commandsToIgnore :: [String] commandsToIgnore = ["special","pdfannot","pdfstringdef", "index","bibliography"] @@ -922,7 +924,7 @@ rawLaTeXInline = try $ do return $ TeX ("\\" ++ name ++ star ++ concat args) else do (name, _, args) <- command - spaces - if name `elem` commandsToIgnore - then return $ Str "" - else return $ Str (concat args) + unless (name `elem` commandsToIgnore) $ do + inp <- getInput + setInput $ intercalate " " args ++ inp + return $ Str "" -- cgit v1.2.3