epub: add auto generated orphan documents to spine with linear=no

This commit is contained in:
Yoshiki Shibukawa 2016-08-25 23:35:18 +09:00
parent acd4d9f2ba
commit 0d3f2e06cb
2 changed files with 16 additions and 0 deletions

View File

@ -9,6 +9,7 @@ Bugs fixed
* #2882: Fall back to a GET request on 403 status in linkcheck
* #2902: jsdump.loads fails to load search index if keywords starts with
underscore
* #2900: Fix epub content.opf: add auto generated orphan files to spine.
Release 1.4.6 (released Aug 20, 2016)
=====================================

View File

@ -123,6 +123,9 @@ FILE_TEMPLATE = u'''\
SPINE_TEMPLATE = u'''\
<itemref idref="%(idref)s" />'''
NO_LINEAR_SPINE_TEMPLATE = u'''\
<itemref idref="%(idref)s" linear="no" />'''
GUIDE_TEMPLATE = u'''\
<reference type="%(type)s" title="%(title)s" href="%(uri)s" />'''
@ -202,6 +205,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
coverpage_name = COVERPAGE_NAME
file_template = FILE_TEMPLATE
spine_template = SPINE_TEMPLATE
no_linear_spine_template = NO_LINEAR_SPINE_TEMPLATE
guide_template = GUIDE_TEMPLATE
toctree_template = TOCTREE_TEMPLATE
doctype = DOCTYPE
@ -584,6 +588,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
# spine
spine = []
spinefiles = set()
for item in self.refnodes:
if '#' in item['refuri']:
continue
@ -592,14 +597,23 @@ class EpubBuilder(StandaloneHTMLBuilder):
spine.append(self.spine_template % {
'idref': self.esc(self.make_id(item['refuri']))
})
spinefiles.add(item['refuri'])
for info in self.domain_indices:
spine.append(self.spine_template % {
'idref': self.esc(self.make_id(info[0] + self.out_suffix))
})
spinefiles.add(info[0] + self.out_suffix)
if self.get_builder_config('use_index', 'epub'):
spine.append(self.spine_template % {
'idref': self.esc(self.make_id('genindex' + self.out_suffix))
})
spinefiles.add('genindex' + self.out_suffix)
# add auto generated files
for name in self.files:
if name not in spinefiles and name.endswith(self.out_suffix):
spine.append(self.no_linear_spine_template % {
'idref': self.esc(self.make_id(name))
})
# add the optional cover
content_tmpl = self.content_template
@ -626,6 +640,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
ctx = {'image': self.esc(image), 'title': self.config.project}
self.handle_page(
path.splitext(self.coverpage_name)[0], ctx, html_tmpl)
spinefiles.add(self.coverpage_name)
guide = []
auto_add_cover = True