@@ -204,7 +204,7 @@ block :: LP Blocks
204204block = (mempty <$ comment)
205205 <|> (mempty <$ ((spaceChar <|> newline) *> spaces))
206206 <|> environment
207− <|> mempty <$ macro -- TODO improve macros, make them work everywhere
207+ <|> mempty <$ macro
208208 <|> blockCommand
209209 <|> paragraph
210210 <|> grouped block
@@ -327,11 +327,15 @@ inlineCommand = try $ do
327327 parseRaw <- getOption readerParseRaw
328328 star <- option "" (string "*")
329329 let name' = name ++ star
330− let rawargs = withRaw (skipopts *> option "" dimenarg
331− *> many braced) >>= applyMacros' . snd
332− let raw = if parseRaw
333− then (rawInline "latex" . (('\\':name') ++)) <$> rawargs
334− else mempty <$> rawargs
330+ let raw = do
331+ rawargs <- withRaw (skipopts *> option "" dimenarg *> many braced)
332+ let rawcommand = '\\' : name ++ star ++ snd rawargs
333+ transformed <- applyMacros' rawcommand
334+ if transformed /= rawcommand
335+ then parseFromString inlines transformed
336+ else if parseRaw
337+ then return $ rawInline "latex" rawcommand
338+ else return mempty
335339 case M.lookup name' inlineCommands of
336340 Just p -> p <|> raw
337341 Nothing -> case M.lookup name inlineCommands of