diff --git a/src/calibre/srv/render_book.py b/src/calibre/srv/render_book.py index 05d85d0920..8c04142028 100644 --- a/src/calibre/srv/render_book.py +++ b/src/calibre/srv/render_book.py @@ -154,11 +154,13 @@ def get_length(root): def toc_anchor_map(toc): ans = defaultdict(list) + seen_map = defaultdict(set) def process_node(node): name = node['dest'] - if name: + if name and node['id'] not in seen_map[name]: ans[name].append({'id':node['id'], 'frag':node['frag']}) + seen_map[name].add(node['id']) tuple(map(process_node, node['children'])) process_node(toc)