aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <fiddlosopher@gmail.com>2012-02-07 22:00:22 -0800
committerJohn MacFarlane <fiddlosopher@gmail.com>2012-02-07 22:00:22 -0800
commit12aa83f70eb5d5fa9f472be2347b4cefa7975b62 (patch)
tree5368c7c88ce1b5c3adadffbe5dde18ccd21d386e
parent328c91e3071f34f798f472661469b561468713ed (diff)
downloadpandoc-12aa83f70eb5d5fa9f472be2347b4cefa7975b62.tar.gz
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.
-rw-r--r--src/Text/Pandoc/PDF.hs5
1 files changed, 4 insertions, 1 deletions
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