@@ -32,7 +32,7 @@ import Data.IORef
32import Data.Maybe ( fromMaybe, isNothing )
32import Data.Maybe ( fromMaybe, isNothing )
33import Data.List ( findIndices, isPrefixOf )
33import Data.List ( findIndices, isPrefixOf )
34import System.Environment ( getEnv )
34import System.Environment ( getEnv )
35−import System.FilePath ( (</>), takeBaseName, takeExtension )
35+import System.FilePath ( (</>), (<.>), takeBaseName, takeExtension )
36import qualified Data.ByteString.Lazy as B
36import qualified Data.ByteString.Lazy as B
37import Data.ByteString.Lazy.UTF8 ( fromString )
37import Data.ByteString.Lazy.UTF8 ( fromString )
38import Codec.Archive.Zip
38import Codec.Archive.Zip
@@ -63,6 +63,15 @@ writeEPUB mbStylesheet opts doc@(Pandoc meta _) = do
63 let vars = writerVariables opts'
63 let vars = writerVariables opts'
64 let mbCoverImage = lookup "epub-cover-image" vars
64 let mbCoverImage = lookup "epub-cover-image" vars
66+ titlePageTemplate <- readDataFile (writerUserDataDir opts)
67+ $ "templates" </> "epub-titlepage" <.> "html"
69+ coverImageTemplate <- readDataFile (writerUserDataDir opts)
70+ $ "templates" </> "epub-coverimage" <.> "html"
72+ pageTemplate <- readDataFile (writerUserDataDir opts)
73+ $ "templates" </> "epub-page" <.> "html"
66 -- cover page
75 -- cover page
67 (cpgEntry, cpicEntry) <-
76 (cpgEntry, cpicEntry) <-
68 case mbCoverImage of
77 case mbCoverImage of
@@ -70,9 +79,8 @@ writeEPUB mbStylesheet opts doc@(Pandoc meta _) = do
70 Just img -> do
79 Just img -> do
71 let coverImage = "cover-image" ++ takeExtension img
80 let coverImage = "cover-image" ++ takeExtension img
72 let cpContent = fromString $ writeHtmlString
81 let cpContent = fromString $ writeHtmlString
73− opts'{writerTemplate = pageTemplate
82+ opts'{writerTemplate = coverImageTemplate,
75− ("coverimage",coverImage):vars}
83+ writerVariables = ("coverimage",coverImage):vars}
76 (Pandoc meta [])
84 (Pandoc meta [])
77 imgContent <- B.readFile img
85 imgContent <- B.readFile img
78 return ( [mkEntry "cover.xhtml" cpContent]
86 return ( [mkEntry "cover.xhtml" cpContent]
@@ -80,8 +88,7 @@ writeEPUB mbStylesheet opts doc@(Pandoc meta _) = do
81 -- title page
89 -- title page
82 let tpContent = fromString $ writeHtmlString
90 let tpContent = fromString $ writeHtmlString
83− opts'{writerTemplate = pageTemplate
91+ opts'{writerTemplate = titlePageTemplate}
84− ,writerVariables = ("titlepage","yes"):vars}
85 (Pandoc meta [])
92 (Pandoc meta [])
86 let tpEntry = mkEntry "title_page.xhtml" tpContent
93 let tpEntry = mkEntry "title_page.xhtml" tpContent
@@ -298,43 +305,3 @@ imageTypeOf x = case drop 1 (map toLower (takeExtension x)) of
298 "svg" -> Just "image/svg+xml"
305 "svg" -> Just "image/svg+xml"
299 _ -> Nothing
306 _ -> Nothing
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\">"
307− , "<title>$title$</title>"
308− , "$if(coverimage)$"
309− , "<style type=\"text/css\">img{ max-width: 100%; }</style>"
311− , "<link href=\"stylesheet.css\" type=\"text/css\" rel=\"stylesheet\" />"
314− , "$if(coverimage)$"
315− , "<div id=\"cover-image\">"
316− , "<img src=\"$coverimage$\" alt=\"$title$\" />"
320− , "<h1 class=\"title\">$title$</h1>"
322− , "<h2 class=\"author\">$author$</h2>"
325− , "<h3 class=\"date\">$date$</h3>"
328− , "<h1>$title$</h1>"
330− , "<div id=\"$idprefix$TOC\">"