git.iko.soy/typeable/pandoc
on master help sign in
EPUB writer: ensure that pagetitle is always set...
db596a5John MacFarlane
src/Text/Pandoc/Writers/EPUB.hs+12−6
@@ -403,6 +403,12 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do
403 writeHtmlStringForEPUB version o
403 writeHtmlStringForEPUB version o
404 metadata <- getEPUBMetadata opts meta
404 metadata <- getEPUBMetadata opts meta
405
405
406+ let plainTitle = case docTitle' meta of
407+ [] -> case epubTitle metadata of
408+ [] -> "UNTITLED"
409+ (x:_) -> titleText x
410+ x -> stringify x
411+
406 -- stylesheet
412 -- stylesheet
407 stylesheets <- case epubStylesheets metadata of
413 stylesheets <- case epubStylesheets metadata of
408 [] -> (\x -> [B.fromChunks [x]]) <$>
414 [] -> (\x -> [B.fromChunks [x]]) <$>
@@ -440,6 +446,7 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do
440 cpContent <- lift $ writeHtml
446 cpContent <- lift $ writeHtml
441 opts'{ writerVariables =
447 opts'{ writerVariables =
442 ("coverpage","true"):
448 ("coverpage","true"):
449+ ("pagetitle",plainTitle):
443 cssvars True ++ vars }
450 cssvars True ++ vars }
444 (Pandoc meta [RawBlock (Format "html") $ "<div id=\"cover-image\">\n<img src=\"../media/" ++ coverImage ++ "\" alt=\"cover image\" />\n</div>"])
451 (Pandoc meta [RawBlock (Format "html") $ "<div id=\"cover-image\">\n<img src=\"../media/" ++ coverImage ++ "\" alt=\"cover image\" />\n</div>"])
445 imgContent <- lift $ P.readFileLazy img
452 imgContent <- lift $ P.readFileLazy img
@@ -452,6 +459,7 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do
452 -- title page
459 -- title page
453 tpContent <- lift $ writeHtml opts'{
460 tpContent <- lift $ writeHtml opts'{
454 writerVariables = ("titlepage","true"):
461 writerVariables = ("titlepage","true"):
462+ ("pagetitle",plainTitle):
455 cssvars True ++ vars }
463 cssvars True ++ vars }
456 (Pandoc meta [])
464 (Pandoc meta [])
457 tpEntry <- mkEntry "text/title_page.xhtml" tpContent
465 tpEntry <- mkEntry "text/title_page.xhtml" tpContent
@@ -604,11 +612,6 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do
604 $ eRelativePath ent),
612 $ eRelativePath ent),
605 ("media-type", fromMaybe "" $
613 ("media-type", fromMaybe "" $
606 getMimeType $ eRelativePath ent)] $ ()
614 getMimeType $ eRelativePath ent)] $ ()
607− let plainTitle = case docTitle' meta of
608− [] -> case epubTitle metadata of
609− [] -> "UNTITLED"
610− (x:_) -> titleText x
611− x -> stringify x
612
615
613 let tocTitle = fromMaybe plainTitle $
616 let tocTitle = fromMaybe plainTitle $
614 metaValueToString <$> lookupMeta "toc-title" meta
617 metaValueToString <$> lookupMeta "toc-title" meta
@@ -749,7 +752,10 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do
749 where titElements = parseXML titRendered
752 where titElements = parseXML titRendered
750 titRendered = case P.runPure
753 titRendered = case P.runPure
751 (writeHtmlStringForEPUB version
754 (writeHtmlStringForEPUB version
752− opts{ writerTemplate = Nothing }
755+ opts{ writerTemplate = Nothing
756+ , writerVariables =
757+ ("pagetitle",plainTitle):
758+ writerVariables opts}
753 (Pandoc nullMeta
759 (Pandoc nullMeta
754 [Plain $ walk clean tit])) of
760 [Plain $ walk clean tit])) of
755 Left _ -> TS.pack $ stringify tit
761 Left _ -> TS.pack $ stringify tit