aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sisudoc/outputs/io_out/epub3.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sisudoc/outputs/io_out/epub3.d')
-rw-r--r--src/sisudoc/outputs/io_out/epub3.d11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/sisudoc/outputs/io_out/epub3.d b/src/sisudoc/outputs/io_out/epub3.d
index d149dac..1c08bab 100644
--- a/src/sisudoc/outputs/io_out/epub3.d
+++ b/src/sisudoc/outputs/io_out/epub3.d
@@ -306,6 +306,13 @@ template outputEPub3() {
static auto rgx = RgxO();
static auto rgx_xhtml = RgxXHTML();
string segment_filename;
+ /+ ↓ a segment file gets one document head, not one per heading. +/
+ bool[string] _seg_head_written;
+ string _segHead(M)(M _m, string _seg) {
+ if (_seg in _seg_head_written) { return ""; }
+ _seg_head_written[_seg] = true;
+ return xhtml_format.epub3_seg_head(_m);
+ }
string[] top_level_headings = ["","","",""];
string[string] oepbs_content_parts;
bool[string] _segment_files_seen; /+ a segment file is listed once +/
@@ -351,7 +358,7 @@ template outputEPub3() {
goto default;
default:
epubWrite.doc_parts ~= obj.tags.segment_anchor_tag_epub;
- epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc.matters);
+ epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= _segHead(doc.matters, obj.tags.segment_anchor_tag_epub);
Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= t[0];
epubWrite.doc_epub3_endnotes[obj.tags.segment_anchor_tag_epub] ~= t[1];
@@ -360,7 +367,7 @@ template outputEPub3() {
break;
case 4:
segment_filename = obj.tags.segment_anchor_tag_epub;
- epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc.matters);
+ epubWrite.doc_epub3[segment_filename] ~= _segHead(doc.matters, segment_filename);
Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];