@@ -1145,11 +1145,10 @@ source :: GenParser Char ParserState (String, [Char])
11451145source =
11461146 (try $ charsInBalanced '(' ')' litChar >>= parseFromString source') <|>
11471147 -- the following is needed for cases like: [ref](/url(a).
1148− (enclosed (char '(') (char ')') anyChar >>=
1149− parseFromString source')
1148+ (enclosed (char '(') (char ')') litChar >>= parseFromString source')
11501149
11511150-- auxiliary function for source
1152−source' :: GenParser Char st (String, [Char])
1151+source' :: GenParser Char ParserState (String, [Char])
11531152source' = do
11541153 skipSpaces
11551154 let nl = char '\n' >>~ notFollowedBy blankline
@@ -1158,22 +1157,21 @@ source' = do
11581157 skipMany spaceChar
11591158 optional nl
11601159 skipMany spaceChar
1161− many1 (satisfy $ not . isBlank)
1162− let betweenAngles = try $ char '<' >>
1163− manyTill (noneOf ">\n" <|> nl) (char '>')
1160+ many1 $ escapedChar' <|> satisfy (not . isBlank)
1161+ let betweenAngles = try $
1162+ char '<' >> manyTill (escapedChar' <|> noneOf ">\n" <|> nl) (char '>')
11641163 src <- try betweenAngles <|> sourceURL
11651164 tit <- option "" linkTitle
11661165 skipSpaces
11671166 eof
11681167 return (escapeURI $ removeTrailingSpace src, tit)
11691168
1170−linkTitle :: GenParser Char st String
1171−linkTitle = try $ do
1169+linkTitle :: GenParser Char ParserState String
1170+linkTitle = try $ do
11721171 (many1 spaceChar >> option '\n' newline) <|> newline
11731172 skipSpaces
11741173 delim <- oneOf "'\""
1175− tit <- manyTill (optional (char '\\') >> anyChar)
1176− (try (char delim >> skipSpaces >> eof))
1174+ tit <- manyTill litChar (try (char delim >> skipSpaces >> eof))
11771175 return $ decodeCharacterReferences tit
11781176
11791177link :: GenParser Char ParserState Inline