@@ -241,7 +241,7 @@ tex2pdf verbosity program args tmpDir source = do
241241 let numruns | takeBaseName program == "latexmk" = 1
242242 | "\\tableofcontents" `T.isInfixOf` source = 3 -- to get page numbers
243243 | otherwise = 2 -- 1 run won't give you PDF bookmarks
244− (exit, log', mbPdf) <- runTeXProgram verbosity program args 1 numruns
244+ (exit, log', mbPdf) <- runTeXProgram verbosity program args numruns
245245 tmpDir source
246246 case (exit, mbPdf) of
247247 (ExitFailure _, _) -> do
@@ -348,9 +348,9 @@ getResultingPDF logFile pdfFile = do
348348-- Run a TeX program on an input bytestring and return (exit code,
349349-- contents of stdout, contents of produced PDF if any). Rerun
350350-- a fixed number of times to resolve references.
351−runTeXProgram :: Verbosity -> String -> [String] -> Int -> Int -> FilePath
351+runTeXProgram :: Verbosity -> String -> [String] -> Int -> FilePath
352352 -> Text -> PandocIO (ExitCode, ByteString, Maybe ByteString)
353−runTeXProgram verbosity program args runNumber numRuns tmpDir' source = do
353+runTeXProgram verbosity program args numRuns tmpDir' source = do
354354 let isOutdirArg x = "-outdir=" `isPrefixOf` x ||
355355 "-output-directory=" `isPrefixOf` x
356356 let tmpDir =
@@ -359,8 +359,7 @@ runTeXProgram verbosity program args runNumber numRuns tmpDir' source = do
359359 Nothing -> tmpDir'
360360 liftIO $ createDirectoryIfMissing True tmpDir
361361 let file = tmpDir ++ "/input.tex" -- note: tmpDir has / path separators
362− exists <- liftIO $ doesFileExist file
363− unless exists $ liftIO $ BS.writeFile file $ UTF8.fromText source
362+ liftIO $ BS.writeFile file $ UTF8.fromText source
364363 let isLatexMk = takeBaseName program == "latexmk"
365364 programArgs | isLatexMk = ["-interaction=batchmode", "-halt-on-error", "-pdf",
366365 "-quiet", "-outdir=" ++ tmpDir] ++ args ++ [file]
@@ -374,23 +373,25 @@ runTeXProgram verbosity program args runNumber numRuns tmpDir' source = do
374373 ("TEXMFOUTPUT", tmpDir) :
375374 [(k,v) | (k,v) <- env'
376375 , k /= "TEXINPUTS" && k /= "TEXMFOUTPUT"]
377− when (runNumber == 1 && verbosity >= INFO) $ liftIO $
378− UTF8.readFile file >>=
379− showVerboseInfo (Just tmpDir) program programArgs env''
380− (exit, out) <- liftIO $ E.catch
381− (pipeProcess (Just env'') program programArgs BL.empty)
382− (handlePDFProgramNotFound program)
383− when (verbosity >= INFO) $ liftIO $ do
384− putStrLn $ "[makePDF] Run #" ++ show runNumber
385− BL.hPutStr stdout out
386− putStr "\n"
387− if runNumber < numRuns
388− then runTeXProgram verbosity program args (runNumber + 1) numRuns tmpDir source
389− else do
390− let logFile = replaceExtension file ".log"
391− let pdfFile = replaceExtension file ".pdf"
392− (log', pdf) <- getResultingPDF (Just logFile) pdfFile
393− return (exit, fromMaybe out log', pdf)
376+ when (verbosity >= INFO) $ liftIO $
377+ UTF8.readFile file >>=
378+ showVerboseInfo (Just tmpDir) program programArgs env''
379+ let runTeX runNumber = do
380+ (exit, out) <- liftIO $ E.catch
381+ (pipeProcess (Just env'') program programArgs BL.empty)
382+ (handlePDFProgramNotFound program)
383+ when (verbosity >= INFO) $ liftIO $ do
384+ putStrLn $ "[makePDF] Run #" ++ show runNumber
385+ BL.hPutStr stdout out
386+ putStr "\n"
387+ if runNumber < numRuns
388+ then runTeX (runNumber + 1)
389+ else do
390+ let logFile = replaceExtension file ".log"
391+ let pdfFile = replaceExtension file ".pdf"
392+ (log', pdf) <- getResultingPDF (Just logFile) pdfFile
393+ return (exit, fromMaybe out log', pdf)
394+ runTeX 1
394395
395396generic2pdf :: Verbosity
396397 -> String