@@ -71,7 +71,8 @@ makePDF :: String -- ^ pdf creator (pdflatex, lualatex, xelatex)
71makePDF program writer opts doc = withTempDir "tex2pdf." $ \tmpdir -> do
71makePDF program writer opts doc = withTempDir "tex2pdf." $ \tmpdir -> do
72 doc' <- handleImages opts tmpdir doc
72 doc' <- handleImages opts tmpdir doc
73 let source = writer opts doc'
73 let source = writer opts doc'
74+ args = writerLaTeXArgs opts
74− tex2pdf' (writerVerbose opts) tmpdir program source
75+ tex2pdf' (writerVerbose opts) args tmpdir program source
76handleImages :: WriterOptions
77handleImages :: WriterOptions
77 -> FilePath -- ^ temp dir to store images
78 -> FilePath -- ^ temp dir to store images
@@ -132,15 +133,16 @@ convertImage tmpdir fname =
132 doNothing = return (Right fname)
133 doNothing = return (Right fname)
134tex2pdf' :: Bool -- ^ Verbose output
135tex2pdf' :: Bool -- ^ Verbose output
136+ -> [String] -- ^ Arguments to the latex-engine
135 -> FilePath -- ^ temp directory for output
137 -> FilePath -- ^ temp directory for output
136 -> String -- ^ tex program
138 -> String -- ^ tex program
137 -> String -- ^ tex source
139 -> String -- ^ tex source
138 -> IO (Either ByteString ByteString)
140 -> IO (Either ByteString ByteString)
139−tex2pdf' verbose tmpDir program source = do
141+tex2pdf' verbose args tmpDir program source = do
140 let numruns = if "\\tableofcontents" `isInfixOf` source
142 let numruns = if "\\tableofcontents" `isInfixOf` source
141 then 3 -- to get page numbers
143 then 3 -- to get page numbers
142 else 2 -- 1 run won't give you PDF bookmarks
144 else 2 -- 1 run won't give you PDF bookmarks
143− (exit, log', mbPdf) <- runTeXProgram verbose program 1 numruns tmpDir source
145+ (exit, log', mbPdf) <- runTeXProgram verbose program args 1 numruns tmpDir source
144 case (exit, mbPdf) of
146 case (exit, mbPdf) of
145 (ExitFailure _, _) -> do
147 (ExitFailure _, _) -> do
146 let logmsg = extractMsg log'
148 let logmsg = extractMsg log'
@@ -173,9 +175,9 @@ extractMsg log' = do
173-- Run a TeX program on an input bytestring and return (exit code,
175-- Run a TeX program on an input bytestring and return (exit code,
174-- contents of stdout, contents of produced PDF if any). Rerun
176-- contents of stdout, contents of produced PDF if any). Rerun
175-- a fixed number of times to resolve references.
177-- a fixed number of times to resolve references.
176−runTeXProgram :: Bool -> String -> Int -> Int -> FilePath -> String
178+runTeXProgram :: Bool -> String -> [String] -> Int -> Int -> FilePath -> String
177 -> IO (ExitCode, ByteString, Maybe ByteString)
179 -> IO (ExitCode, ByteString, Maybe ByteString)
178−runTeXProgram verbose program runNumber numRuns tmpDir source = do
180+runTeXProgram verbose program args runNumber numRuns tmpDir source = do
179 let file = tmpDir </> "input.tex"
181 let file = tmpDir </> "input.tex"
180 exists <- doesFileExist file
182 exists <- doesFileExist file
181 unless exists $ UTF8.writeFile file source
183 unless exists $ UTF8.writeFile file source
@@ -188,7 +190,7 @@ runTeXProgram verbose program runNumber numRuns tmpDir source = do
188 let file' = file
190 let file' = file
190 let programArgs = ["-halt-on-error", "-interaction", "nonstopmode",
192 let programArgs = ["-halt-on-error", "-interaction", "nonstopmode",
191− "-output-directory", tmpDir', file']
193+ "-output-directory", tmpDir', file'] ++ args
192 env' <- getEnvironment
194 env' <- getEnvironment
193 let sep = searchPathSeparator:[]
195 let sep = searchPathSeparator:[]
194 let texinputs = maybe (tmpDir' ++ sep) ((tmpDir' ++ sep) ++)
196 let texinputs = maybe (tmpDir' ++ sep) ((tmpDir' ++ sep) ++)
@@ -212,7 +214,7 @@ runTeXProgram verbose program runNumber numRuns tmpDir source = do
212 B.hPutStr stderr err
214 B.hPutStr stderr err
213 putStr "\n"
215 putStr "\n"
214 if runNumber <= numRuns
216 if runNumber <= numRuns
215− then runTeXProgram verbose program (runNumber + 1) numRuns tmpDir source
217+ then runTeXProgram verbose program args (runNumber + 1) numRuns tmpDir source
217 let pdfFile = replaceDirectory (replaceExtension file ".pdf") tmpDir
219 let pdfFile = replaceDirectory (replaceExtension file ".pdf") tmpDir
218 pdfExists <- doesFileExist pdfFile
220 pdfExists <- doesFileExist pdfFile