@@ -242,8 +242,8 @@ withVerbatimMode parser = do
242242 return result
243243
244244rawLaTeXParser :: (PandocMonad m, HasMacros s, HasReaderOptions s)
245− => LP m a -> LP m a -> ParserT String s m (a, String)
246−rawLaTeXParser parser valParser = do
245+ => Bool -> LP m a -> LP m a -> ParserT String s m (a, String)
246+rawLaTeXParser retokenize parser valParser = do
247247 inp <- getInput
248248 let toks = tokenize "source" $ T.pack inp
249249 pstate <- getState
@@ -254,10 +254,11 @@ rawLaTeXParser parser valParser = do
254254 case res' of
255255 Left _ -> mzero
256256 Right toks' -> do
257− res <- lift $ runParserT (do doMacros 0
258− -- retokenize, applying macros
259− ts <- many (satisfyTok (const True))
260− setInput ts
257+ res <- lift $ runParserT (do when retokenize $ do
258+ -- retokenize, applying macros
259+ doMacros 0
260+ ts <- many (satisfyTok (const True))
261+ setInput ts
261262 rawparser)
262263 lstate' "chunk" toks'
263264 case res of
@@ -284,20 +285,19 @@ rawLaTeXBlock :: (PandocMonad m, HasMacros s, HasReaderOptions s)
284285 => ParserT String s m String
285286rawLaTeXBlock = do
286287 lookAhead (try (char '\\' >> letter))
287− -- we don't want to apply newly defined latex macros to their own
288− -- definitions:
289− snd <$> rawLaTeXParser (environment <|> macroDef <|> blockCommand) blocks
288+ snd <$> (rawLaTeXParser False macroDef blocks
289+ <|> rawLaTeXParser True(environment <|> macroDef <|> blockCommand) blocks)
290290
291291rawLaTeXInline :: (PandocMonad m, HasMacros s, HasReaderOptions s)
292292 => ParserT String s m String
293293rawLaTeXInline = do
294294 lookAhead (try (char '\\' >> letter))
295− snd <$> rawLaTeXParser (inlineEnvironment <|> inlineCommand') inlines
295+ snd <$> rawLaTeXParser True (inlineEnvironment <|> inlineCommand') inlines
296296
297297inlineCommand :: PandocMonad m => ParserT String ParserState m Inlines
298298inlineCommand = do
299299 lookAhead (try (char '\\' >> letter))
300− fst <$> rawLaTeXParser (inlineEnvironment <|> inlineCommand') inlines
300+ fst <$> rawLaTeXParser True (inlineEnvironment <|> inlineCommand') inlines
301301
302302tokenize :: SourceName -> Text -> [Tok]
303303tokenize sourcename = totoks (initialPos sourcename)