git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: Parse inside arguments when ignoring commands.
commite126ab9efcec79850c217b979fd295a6730bfa6c authorJohn MacFarlane <jgm@berkeley.edu> dateWed 5 Jan 2011, 12:25 (16 years ago) parentc3071ff
1 file changed+11−9
src/Text/Pandoc/Readers/LaTeX.hs+11−9
src/Text/Pandoc/Readers/LaTeX.hs+11−9
@@ -39,8 +39,8 @@ import Text.Pandoc.Shared
3939import Text.Pandoc.Parsing
4040import Data.Maybe ( fromMaybe )
4141import Data.Char ( chr, toUpper )
42−import Data.List ( isPrefixOf, isSuffixOf )
43−import Control.Monad ( when, guard )
42+import Data.List ( intercalate, isPrefixOf, isSuffixOf )
43+import Control.Monad
4444
4545-- | Parse LaTeX from string and return 'Pandoc' document.
4646readLaTeX :: ParserState -- ^ Parser state, including options for parser
@@ -430,9 +430,11 @@ unknownCommand = try $ do
430430 else do
431431 (name, _, args) <- command
432432 spaces
433− if name `elem` commandsToIgnore
434− then return Null
435− else return $ Plain [Str $ concat args]
433+ unless (name `elem` commandsToIgnore) $ do
434+ -- put arguments back in input to be parsed
435+ inp <- getInput
436+ setInput $ intercalate " " args ++ inp
437+ return Null
436438
437439commandsToIgnore :: [String]
438440commandsToIgnore = ["special","pdfannot","pdfstringdef", "index","bibliography"]
@@ -922,7 +924,7 @@ rawLaTeXInline = try $ do
922924 return $ TeX ("\\" ++ name ++ star ++ concat args)
923925 else do
924926 (name, _, args) <- command
925− spaces
926− if name `elem` commandsToIgnore
927− then return $ Str ""
928− else return $ Str (concat args)
927+ unless (name `elem` commandsToIgnore) $ do
928+ inp <- getInput
929+ setInput $ intercalate " " args ++ inp
930+ return $ Str ""