git.iko.soy/typeable/pandoc
on master help sign in
PDF: Use / as path separators in latex input only
1aed920Tim Lin
src/Text/Pandoc/PDF.hs+15−12
@@ -56,11 +56,11 @@ import Data.List (intercalate)
56#endif
56#endif
57
57
58withTempDir :: String -> (FilePath -> IO a) -> IO a
58withTempDir :: String -> (FilePath -> IO a) -> IO a
59−withTempDir f =
59+withTempDir =
60#ifdef _WINDOWS
60#ifdef _WINDOWS
61− withTempDirectory "." (f . changePathSeparators)
61+ withTempDirectory "."
62#else
62#else
63− withSystemTempDirectory f
63+ withSystemTempDirectory
64#endif
64#endif
65
65
66#ifdef _WINDOWS
66#ifdef _WINDOWS
@@ -99,8 +99,7 @@ handleImage' baseURL tmpdir (Image ils (src,tit)) = do
99 let ext = fromMaybe (takeExtension src) $
99 let ext = fromMaybe (takeExtension src) $
100 extensionFromMimeType mime
100 extensionFromMimeType mime
101 let basename = UTF8.toString $ B64.encode $ UTF8.fromString src
101 let basename = UTF8.toString $ B64.encode $ UTF8.fromString src
102− -- note: we want / even on Windows, for TexLive:
103− let fname = tmpdir ++ "/" ++ basename <.> ext
102+ let fname = tmpdir </> basename <.> ext
104 BS.writeFile fname contents
103 BS.writeFile fname contents
105 return $ Image ils (fname,tit)
104 return $ Image ils (fname,tit)
106 _ -> do
105 _ -> do
@@ -152,18 +151,22 @@ extractMsg log' = do
152runTeXProgram :: String -> Int -> FilePath -> String
151runTeXProgram :: String -> Int -> FilePath -> String
153 -> IO (ExitCode, ByteString, Maybe ByteString)
152 -> IO (ExitCode, ByteString, Maybe ByteString)
154runTeXProgram program runsLeft tmpDir source = do
153runTeXProgram program runsLeft tmpDir source = do
155− let file = tmpDir ++ "/input.tex"
154+ let file = tmpDir </> "input.tex"
156 exists <- doesFileExist file
155 exists <- doesFileExist file
157 unless exists $ UTF8.writeFile file source
156 unless exists $ UTF8.writeFile file source
158− let programArgs = ["-halt-on-error", "-interaction", "nonstopmode",
159− "-output-directory", tmpDir, file]
160− env' <- getEnvironment
161#ifdef _WINDOWS
157#ifdef _WINDOWS
162− let sep = ";"
158+ -- note: we want / even on Windows, for TexLive
159+ let tmpDir' = changePathSeparators tmpDir
160+ let file' = changePathSeparators file
163#else
161#else
164− let sep = ":"
162+ let tmpDir' = tmpDir
163+ let file' = file
165#endif
164#endif
165+ let programArgs = ["-halt-on-error", "-interaction", "nonstopmode",
166+ "-output-directory", tmpDir', file']
167+ env' <- getEnvironment
168+ let sep = searchPathSeparator:[]
166− let texinputs = maybe (tmpDir ++ sep) ((tmpDir ++ sep) ++)
169+ let texinputs = maybe (tmpDir' ++ sep) ((tmpDir' ++ sep) ++)
167 $ lookup "TEXINPUTS" env'
170 $ lookup "TEXINPUTS" env'
168 let env'' = ("TEXINPUTS", texinputs) :
171 let env'' = ("TEXINPUTS", texinputs) :
169 [(k,v) | (k,v) <- env', k /= "TEXINPUTS"]
172 [(k,v) | (k,v) <- env', k /= "TEXINPUTS"]