@@ -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 ""