From 6be92645f4d2c737a3572dfb26ad3121f19177cb Mon Sep 17 00:00:00 2001 From: dschlueter Date: Tue, 6 Oct 2026 00:00:28 +0200 Subject: [PATCH] fix: Endnotenverweise in HTML-Tabellen als HTML-Link ausgeben (QA2-04) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mit --footnotes end-of-book wurde ein Verweis innerhalb einer als HTML erhaltenen Tabelle als Markdown-Link [n](…) geschrieben. In einem HTML-Block rendert Markdown nicht; der Verweis erschien als Rohtext. Co-Authored-By: Claude Opus 5.5 --- epub2md/html_converter.py | 2 ++ tests/test_qa_regressions.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/epub2md/html_converter.py b/epub2md/html_converter.py index 910402a..d7210e5 100644 --- a/epub2md/html_converter.py +++ b/epub2md/html_converter.py @@ -890,6 +890,8 @@ class Renderer: ref_id = f"fnref-{num:03d}" + (f"-{len(refs) + 1}" if refs else "") refs.append((self.file, ref_id)) target = url_path(rel_link(self.file, self.endnotes_file)) + "#" + note.label + if self.in_table_html: # Markdown is not rendered inside an HTML block + return [("r", f'{num}')] return [("r", f'[{num}]({target})')] if note not in self.chapter_notes: self.chapter_notes.append(note) diff --git a/tests/test_qa_regressions.py b/tests/test_qa_regressions.py index dfcbac0..12d82aa 100644 --- a/tests/test_qa_regressions.py +++ b/tests/test_qa_regressions.py @@ -74,3 +74,15 @@ def test_note_referenced_from_html_table_and_text_has_target(convert): assert 'href="#fn-001"' in text and "Text[^fn-001]." in text assert re.search(r'id="fn-001"', text), text assert run.report["output_link_check"]["broken_count"] == 0 + + +def _html_table(text: str) -> str: + return text[text.index("")] + + +def test_end_of_book_reference_inside_html_table_is_html(convert): + """QA2-04: a Markdown link inside an HTML block is not rendered (shows up as literal text).""" + run = convert(Book(docs=[Doc("c.xhtml", NOTE_IN_HTML_TABLE)]), "--footnotes", "end-of-book") + table = _html_table(run.chapter("001")) + assert "](" not in table, table + assert '1' in table