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.
This commit is contained in:
parent
328c91e307
commit
12aa83f70e
1 changed files with 4 additions and 1 deletions
|
@ -43,6 +43,7 @@ import System.IO (hClose)
|
||||||
import Control.Concurrent (putMVar, takeMVar, newEmptyMVar, forkIO)
|
import Control.Concurrent (putMVar, takeMVar, newEmptyMVar, forkIO)
|
||||||
import Text.Pandoc.UTF8 as UTF8
|
import Text.Pandoc.UTF8 as UTF8
|
||||||
import Control.Monad (unless)
|
import Control.Monad (unless)
|
||||||
|
import Data.List (isInfixOf)
|
||||||
|
|
||||||
tex2pdf :: String -- ^ tex program (pdflatex, lualatex, xelatex)
|
tex2pdf :: String -- ^ tex program (pdflatex, lualatex, xelatex)
|
||||||
-> String -- ^ latex source
|
-> String -- ^ latex source
|
||||||
|
@ -55,7 +56,9 @@ tex2pdf' :: FilePath -- ^ temp directory for output
|
||||||
-> String -- ^ tex source
|
-> String -- ^ tex source
|
||||||
-> IO (Either ByteString ByteString)
|
-> IO (Either ByteString ByteString)
|
||||||
tex2pdf' tmpDir program source = do
|
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
|
(exit, log', mbPdf) <- runTeXProgram program numruns tmpDir source
|
||||||
let msg = "Error producing PDF from TeX source."
|
let msg = "Error producing PDF from TeX source."
|
||||||
case (exit, mbPdf) of
|
case (exit, mbPdf) of
|
||||||
|
|
Loading…
Reference in a new issue