From 12aa83f70eb5d5fa9f472be2347b4cefa7975b62 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Tue, 7 Feb 2012 22:00:22 -0800 Subject: PDF: Only run latex twice if \tableofcontents is present. Note: This will pick up on \tableofcontents even if it's in a verbatim environment. But the worst that can happen is that the document takes a bit longer to build. --- src/Text/Pandoc/PDF.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/PDF.hs b/src/Text/Pandoc/PDF.hs index 4b0dd9207..cc19e1c50 100644 --- a/src/Text/Pandoc/PDF.hs +++ b/src/Text/Pandoc/PDF.hs @@ -43,6 +43,7 @@ import System.IO (hClose) import Control.Concurrent (putMVar, takeMVar, newEmptyMVar, forkIO) import Text.Pandoc.UTF8 as UTF8 import Control.Monad (unless) +import Data.List (isInfixOf) tex2pdf :: String -- ^ tex program (pdflatex, lualatex, xelatex) -> String -- ^ latex source @@ -55,7 +56,9 @@ tex2pdf' :: FilePath -- ^ temp directory for output -> String -- ^ tex source -> IO (Either ByteString ByteString) tex2pdf' tmpDir program source = do - let numruns = 2 -- should suffice for toc and hyperrefs + let numruns = if "\\tableofcontents" `isInfixOf` source + then 2 + else 1 (exit, log', mbPdf) <- runTeXProgram program numruns tmpDir source let msg = "Error producing PDF from TeX source." case (exit, mbPdf) of -- cgit v1.2.3