From d5fad2306a27b3fcf2c85782dd13bc8e516a5df9 Mon Sep 17 00:00:00 2001
From: John MacFarlane <fiddlosopher@gmail.com>
Date: Thu, 25 Jul 2013 20:29:42 -0700
Subject: [PATCH] LaTeX writer:  Change `\` to `/` in paths.

`/` works even on Windows in LaTeX.  `\` will cause major problems
if unescaped.
---
 src/Text/Pandoc/Writers/LaTeX.hs | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index 2b4a608a7..06a04ade2 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -202,7 +202,8 @@ stringToLaTeX  ctx (x:xs) = do
                    _       -> '-' : rest
        '~' | not isUrl -> "\\textasciitilde{}" ++ rest
        '^' -> "\\^{}" ++ rest
-       '\\' -> "\\textbackslash{}" ++ rest
+       '\\'| isUrl     -> '/' : rest  -- NB. / works as path sep even on Windows
+           | otherwise -> "\\textbackslash{}" ++ rest
        '|' -> "\\textbar{}" ++ rest
        '<' -> "\\textless{}" ++ rest
        '>' -> "\\textgreater{}" ++ rest
@@ -648,7 +649,8 @@ inlineToLaTeX (Image _ (source, _)) = do
   let source' = if isAbsoluteURI source
                    then source
                    else unEscapeString source
-  return $ "\\includegraphics" <> braces (text source')
+  source'' <- stringToLaTeX URLString source'
+  return $ "\\includegraphics" <> braces (text source'')
 inlineToLaTeX (Note contents) = do
   modify (\s -> s{stInNote = True})
   contents' <- blockListToLaTeX contents