@@ -148,19 +148,27 @@ litChar = escapedChar'
148-- | Parse a sequence of inline elements between square brackets,
148-- | Parse a sequence of inline elements between square brackets,
149-- including inlines between balanced pairs of square brackets.
149-- including inlines between balanced pairs of square brackets.
150inlinesInBalancedBrackets :: PandocMonad m => MarkdownParser m (F Inlines)
150inlinesInBalancedBrackets :: PandocMonad m => MarkdownParser m (F Inlines)
151−inlinesInBalancedBrackets = try $ char '[' >> go 1
151+inlinesInBalancedBrackets =
152+ try $ char '[' >> withRaw (go 1) >>=
153+ parseFromString inlines . stripBracket . snd
154+ where stripBracket [] = []
155+ stripBracket xs = if last xs == ']' then init xs else xs
152− where go :: PandocMonad m => Int -> MarkdownParser m (F Inlines)
156+ go :: PandocMonad m => Int -> MarkdownParser m ()
153− go 0 = return mempty
157+ go 0 = return ()
154− go openBrackets =
158+ go openBrackets = do
155− (mappend <$> (bracketedSpan <|> link <|> image) <*>
159+ (() <$ (escapedChar <|>
156− go openBrackets)
162+ rawLaTeXInline') >> go openBrackets)
157− <|> ((if openBrackets > 1
163+ <|>
158− then (return (B.str "]") <>)
164+ (do char ']'
159− else id) <$>
165+ if openBrackets > 1
160− (char ']' >> go (openBrackets - 1)))
166+ then go (openBrackets - 1)
161− <|> ((return (B.str "[") <>) <$>
167+ else return ())
162− (char '[' >> go (openBrackets + 1)))
169+ (char '[' >> go (openBrackets + 1))
163− <|> (mappend <$> inline <*> go openBrackets)
171+ (anyChar >> go openBrackets)
166-- document structure
174-- document structure