@@ -32,6 +32,7 @@ module Text.Pandoc.Readers.Markdown (
3232 readMarkdown
3333 ) where
3434
35+import Control.Applicative ( (<$>) )
3536import Data.List ( transpose, isPrefixOf, isSuffixOf, lookup, sortBy, findIndex, intercalate )
3637import Data.Ord ( comparing )
3738import Data.Char ( isAlphaNum, isAlpha, isLower, isDigit, isUpper )
@@ -188,8 +189,11 @@ referenceKey = try $ do
188189 lab <- reference
189190 char ':'
190191 skipSpaces >> optional newline >> skipSpaces >> notFollowedBy (char '[')
191− src <- (char '<' >> many (noneOf "> \n\t") >>~ char '>')
192− <|> many (noneOf " \n\t")
192+ let sourceURL excludes = concat <$>
193+ (many $ do optional (char '\\')
194+ count 1 (noneOf $ ' ':excludes)
195+ <|> (notFollowedBy' referenceTitle >> char ' ' >> return "%20"))
196+ src <- try (char '<' >> sourceURL ">\t\n" >>~ char '>') <|> sourceURL "\t\n"
193197 tit <- option "" referenceTitle
194198 blanklines
195199 endPos <- getPosition
@@ -1062,10 +1066,11 @@ source =
10621066source' :: GenParser Char st (String, [Char])
10631067source' = do
10641068 skipSpaces
1065− src <- try (char '<' >>
1066− many (optional (char '\\') >> noneOf "> \t\n") >>~
1067− char '>')
1068− <|> many (optional (char '\\') >> noneOf " \t\n")
1069+ let sourceURL excludes = concat <$>
1070+ (many $ do optional (char '\\')
1071+ count 1 (noneOf $ ' ':excludes)
1072+ <|> (notFollowedBy' linkTitle >> char ' ' >> return "%20"))
1073+ src <- try (char '<' >> sourceURL ">\t\n" >>~ char '>') <|> sourceURL "\t\n"
10691074 tit <- option "" linkTitle
10701075 skipSpaces
10711076 eof