@@ -242,7 +242,7 @@ stringToLaTeX ctx (x:xs) = do
242242 '^' -> "\\^{}" ++ rest
243243 '\\'| isUrl -> '/' : rest -- NB. / works as path sep even on Windows
244244 | otherwise -> "\\textbackslash{}" ++ rest
245− '|' -> "\\textbar{}" ++ rest
245+ '|' | not isUrl -> "\\textbar{}" ++ rest
246246 '<' -> "\\textless{}" ++ rest
247247 '>' -> "\\textgreater{}" ++ rest
248248 '[' -> "{[}" ++ rest -- to avoid interpretation as
@@ -848,17 +848,17 @@ inlineToLaTeX (Link txt (src, _)) =
848848 case txt of
849849 [Str x] | escapeURI x == src -> -- autolink
850850 do modify $ \s -> s{ stUrl = True }
851− src' <- stringToLaTeX URLString src
851+ src' <- stringToLaTeX URLString (escapeURI src)
852852 return $ text $ "\\url{" ++ src' ++ "}"
853853 [Str x] | Just rest <- stripPrefix "mailto:" src,
854854 escapeURI x == rest -> -- email autolink
855855 do modify $ \s -> s{ stUrl = True }
856− src' <- stringToLaTeX URLString src
856+ src' <- stringToLaTeX URLString (escapeURI src)
857857 contents <- inlineListToLaTeX txt
858858 return $ "\\href" <> braces (text src') <>
859859 braces ("\\nolinkurl" <> braces contents)
860860 _ -> do contents <- inlineListToLaTeX txt
861− src' <- stringToLaTeX URLString src
861+ src' <- stringToLaTeX URLString (escapeURI src)
862862 return $ text ("\\href{" ++ src' ++ "}{") <>
863863 contents <> char '}'
864864inlineToLaTeX (Image _ (source, _)) = do
@@ -866,7 +866,7 @@ inlineToLaTeX (Image _ (source, _)) = do
866866 let source' = if isURI source
867867 then source
868868 else unEscapeString source
869− source'' <- stringToLaTeX URLString source'
869+ source'' <- stringToLaTeX URLString (escapeURI source')
870870 inHeading <- gets stInHeading
871871 return $
872872 (if inHeading then "\\protect\\includegraphics" else "\\includegraphics")