@@ -132,15 +132,19 @@ litChar = escapedChar'
132132-- | Parse a sequence of inline elements between square brackets,
133133-- including inlines between balanced pairs of square brackets.
134134inlinesInBalancedBrackets :: Parser [Char] ParserState (F Inlines)
135−inlinesInBalancedBrackets = try $ do
135+inlinesInBalancedBrackets = charsInBalancedBrackets >>=
136+ parseFromString (trimInlinesF . mconcat <$> many inline)
137+
138+charsInBalancedBrackets :: Parser [Char] ParserState [Char]
139+charsInBalancedBrackets = do
136140 char '['
137− result <- manyTill ( (do lookAhead $ try $ do x <- inline
138− guard (runF x def == B.str "[")
139− bal <- inlinesInBalancedBrackets
140− return $ (\x -> B.str "[" <> x <> B.str "]") <$> bal)
141− <|> inline)
142− (char ']')
143− return $ mconcat result
141+ result <- manyTill ( many1 (noneOf "`[]\n")
142+ <|> (snd <$> withRaw code)
143+ <|> ((\xs -> '[' : xs ++ "]") <$> charsInBalancedBrackets)
144+ <|> count 1 (satisfy (/='\n'))
145+ <|> (newline >> notFollowedBy blankline >> return "\n")
146+ ) (char ']')
147+ return $ concat result
144148
145149--
146150-- document structure