diff options
author | John MacFarlane <jgm@berkeley.edu> | 2018-08-28 12:34:49 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2018-08-28 12:35:28 -0700 |
commit | 7318bc91ce58bb6c39e556e334f278e590439c3f (patch) | |
tree | 72a0054c1168d22d9bf9e8e18c0d1ea1f74db4f8 /src/Text/Pandoc/Writers | |
parent | dac85d683feb6f9f7e12b9273f353a1291171cd1 (diff) | |
download | pandoc-7318bc91ce58bb6c39e556e334f278e590439c3f.tar.gz |
EPUB writer: set epub:type on body element intelligently.
epub:type of first section epub:type of body
-------------------------- ------------------
prologue frontmatter
abstract frontmatter
acknowledgments frontmatter
copyright-page frontmatter
dedication frontmatter
foreword frontmatter
halftitle, frontmatter
introduction frontmatter
preface frontmatter
seriespage frontmatter
titlepage frontmatter
afterword backmatter
appendix backmatter
colophon backmatter
conclusion backmatter
epigraph backmatter
Otherwise body will have epub:type 'bodymatter'.
This only affects epub3.
See http://www.idpf.org/epub/profiles/edu/structure/#h.l0bzsloklt10
Closes #4823.
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r-- | src/Text/Pandoc/Writers/EPUB.hs | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Writers/EPUB.hs b/src/Text/Pandoc/Writers/EPUB.hs index 3c6ab69b9..4c5e73d81 100644 --- a/src/Text/Pandoc/Writers/EPUB.hs +++ b/src/Text/Pandoc/Writers/EPUB.hs @@ -461,6 +461,7 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do -- title page tpContent <- lift $ writeHtml opts'{ writerVariables = ("titlepage","true"): + ("body-type", "frontmatter"): ("pagetitle", escapeStringForXML plainTitle): cssvars True ++ vars } (Pandoc meta []) @@ -565,13 +566,28 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do let chapToEntry num (Chapter mbnum bs) = mkEntry ("text/" ++ showChapter num) =<< writeHtml opts'{ writerNumberOffset = fromMaybe [] mbnum - , writerVariables = cssvars True ++ vars } - (case bs of - (Header _ _ xs : _) -> + , writerVariables = ("body-type", bodyType) : + cssvars True ++ vars } pdoc + where (pdoc, bodyType) = + case bs of + (Header _ (_,_,kvs) xs : _) -> -- remove notes or we get doubled footnotes - Pandoc (setMeta "title" (walk removeNote $ fromList xs) - nullMeta) bs - _ -> Pandoc nullMeta bs) + (Pandoc (setMeta "title" + (walk removeNote $ fromList xs) nullMeta) bs, + case lookup "epub:type" kvs of + Nothing -> "bodymatter" + Just x + | x `elem` frontMatterTypes -> "frontmatter" + | x `elem` backMatterTypes -> "backmatter" + | otherwise -> "bodymatter") + _ -> (Pandoc nullMeta bs, "bodymatter") + frontMatterTypes = ["prologue", "abstract", "acknowledgments", + "copyright-page", "dedication", + "foreword", "halftitle", + "introduction", "preface", + "seriespage", "titlepage"] + backMatterTypes = ["afterword", "appendix", "colophon", + "conclusion", "epigraph"] chapterEntries <- zipWithM chapToEntry [1..] chapters |