@@ -202,9 +202,17 @@ referenceKey = try $ do
202202 lab <- reference
203203 char ':'
204204 skipSpaces >> optional newline >> skipSpaces >> notFollowedBy (char '[')
205− let sourceURL excludes = many $
206− optional (char '\\') >> (noneOf (' ':excludes) <|> (notFollowedBy' referenceTitle >> char ' '))
207− src <- try (char '<' >> sourceURL ">\t\n" >>~ char '>') <|> sourceURL "\t\n"
205+ let nl = char '\n' >> notFollowedBy blankline >> return ' '
206+ let sourceURL = liftM unwords $ many $ try $ do
207+ notFollowedBy' referenceTitle
208+ skipMany (oneOf " \t")
209+ optional nl
210+ notFollowedBy' reference
211+ skipMany (oneOf " \t")
212+ many1 (noneOf " \t\n")
213+ let betweenAngles = try $ char '<' >>
214+ manyTill (noneOf ">\n" <|> nl) (char '>')
215+ src <- try betweenAngles <|> sourceURL
208216 tit <- option "" referenceTitle
209217 blanklines
210218 endPos <- getPosition
@@ -1116,9 +1124,16 @@ source =
11161124source' :: GenParser Char st (String, [Char])
11171125source' = do
11181126 skipSpaces
1119− let sourceURL excludes = many $
1120− optional (char '\\') >> (noneOf (' ':excludes) <|> (notFollowedBy' linkTitle >> char ' '))
1121− src <- try (char '<' >> sourceURL ">\t\n" >>~ char '>') <|> sourceURL "\t\n"
1127+ let nl = char '\n' >>~ notFollowedBy blankline
1128+ let sourceURL = liftM unwords $ many $ try $ do
1129+ notFollowedBy' linkTitle
1130+ skipMany (oneOf " \t")
1131+ optional nl
1132+ skipMany (oneOf " \t")
1133+ many1 (noneOf " \t\n")
1134+ let betweenAngles = try $ char '<' >>
1135+ manyTill (noneOf ">\n" <|> nl) (char '>')
1136+ src <- try betweenAngles <|> sourceURL
11221137 tit <- option "" linkTitle
11231138 skipSpaces
11241139 eof