@@ -153,7 +153,7 @@ import Text.Parsec
153153import Text.Parsec.Pos (newPos)
154154import Data.Char ( toLower, toUpper, ord, isAscii, isAlphaNum, isDigit, isPunctuation )
155155import Data.List ( intercalate, transpose )
156−import Network.URI ( parseURI, URI (..), isAllowedInURI )
156+import Network.URI ( parseURI, URI (..), isAllowedInURI, isUnescapedInURI, escapeURIString )
157157import Text.Pandoc.Shared
158158import qualified Data.Map as M
159159import Text.TeXMath.Macros (applyMacros, Macro, parseMacroDefinitions)
@@ -380,7 +380,7 @@ uri = try $ do
380380 str <- liftM concat $ many1 $ inParens <|> count 1 (innerPunct <|> uriChar)
381381 str' <- option str $ char '/' >> return (str ++ "/")
382382 -- now see if they amount to an absolute URI
383− case parseURI (escapeURI str') of
383+ case parseURI (escapeURIString isUnescapedInURI str') of
384384 Just uri' -> if uriScheme uri' `elem` protocols
385385 then return (str', show uri')
386386 else fail "not a URI"