@@ -32,7 +32,7 @@ import Data.IORef
3232import Data.Maybe ( fromMaybe, isNothing )
3333import Data.List ( findIndices, isPrefixOf )
3434import System.Environment ( getEnv )
35−import System.FilePath ( (</>), takeBaseName, takeExtension )
35+import System.FilePath ( (</>), (<.>), takeBaseName, takeExtension )
3636import qualified Data.ByteString.Lazy as B
3737import Data.ByteString.Lazy.UTF8 ( fromString )
3838import Codec.Archive.Zip
@@ -63,6 +63,15 @@ writeEPUB mbStylesheet opts doc@(Pandoc meta _) = do
6363 let vars = writerVariables opts'
6464 let mbCoverImage = lookup "epub-cover-image" vars
6565
66+ titlePageTemplate <- readDataFile (writerUserDataDir opts)
67+ $ "templates" </> "epub-titlepage" <.> "html"
68+
69+ coverImageTemplate <- readDataFile (writerUserDataDir opts)
70+ $ "templates" </> "epub-coverimage" <.> "html"
71+
72+ pageTemplate <- readDataFile (writerUserDataDir opts)
73+ $ "templates" </> "epub-page" <.> "html"
74+
6675 -- cover page
6776 (cpgEntry, cpicEntry) <-
6877 case mbCoverImage of
@@ -70,9 +79,8 @@ writeEPUB mbStylesheet opts doc@(Pandoc meta _) = do
7079 Just img -> do
7180 let coverImage = "cover-image" ++ takeExtension img
7281 let cpContent = fromString $ writeHtmlString
73− opts'{writerTemplate = pageTemplate
74− ,writerVariables =
75− ("coverimage",coverImage):vars}
82+ opts'{writerTemplate = coverImageTemplate,
83+ writerVariables = ("coverimage",coverImage):vars}
7684 (Pandoc meta [])
7785 imgContent <- B.readFile img
7886 return ( [mkEntry "cover.xhtml" cpContent]
@@ -80,8 +88,7 @@ writeEPUB mbStylesheet opts doc@(Pandoc meta _) = do
8088
8189 -- title page
8290 let tpContent = fromString $ writeHtmlString
83− opts'{writerTemplate = pageTemplate
84− ,writerVariables = ("titlepage","yes"):vars}
91+ opts'{writerTemplate = titlePageTemplate}
8592 (Pandoc meta [])
8693 let tpEntry = mkEntry "title_page.xhtml" tpContent
8794
@@ -298,43 +305,3 @@ imageTypeOf x = case drop 1 (map toLower (takeExtension x)) of
298305 "svg" -> Just "image/svg+xml"
299306 _ -> Nothing
300307
301−pageTemplate :: String
302−pageTemplate = unlines
303− [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
304− , "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"
305− , "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
306− , "<head>"
307− , "<title>$title$</title>"
308− , "$if(coverimage)$"
309− , "<style type=\"text/css\">img{ max-width: 100%; }</style>"
310− , "$endif$"
311− , "<link href=\"stylesheet.css\" type=\"text/css\" rel=\"stylesheet\" />"
312− , "</head>"
313− , "<body>"
314− , "$if(coverimage)$"
315− , "<div id=\"cover-image\">"
316− , "<img src=\"$coverimage$\" alt=\"$title$\" />"
317− , "</div>"
318− , "$else$"
319− , "$if(titlepage)$"
320− , "<h1 class=\"title\">$title$</h1>"
321− , "$for(author)$"
322− , "<h2 class=\"author\">$author$</h2>"
323− , "$endfor$"
324− , "$if(date)$"
325− , "<h3 class=\"date\">$date$</h3>"
326− , "$endif$"
327− , "$else$"
328− , "<h1>$title$</h1>"
329− , "$if(toc)$"
330− , "<div id=\"$idprefix$TOC\">"
331− , "$toc$"
332− , "</div>"
333− , "$endif$"
334− , "$endif$"
335− , "$body$"
336− , "$endif$"
337− , "</body>"
338− , "</html>"
339− ]
340−