fix: Endnotenverweise in HTML-Tabellen als HTML-Link ausgeben (QA2-04)

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 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-06 00:00:28 +02:00
commit 6be92645f4
2 changed files with 14 additions and 0 deletions

View file

@ -890,6 +890,8 @@ class Renderer:
ref_id = f"fnref-{num:03d}" + (f"-{len(refs) + 1}" if refs else "") ref_id = f"fnref-{num:03d}" + (f"-{len(refs) + 1}" if refs else "")
refs.append((self.file, ref_id)) refs.append((self.file, ref_id))
target = url_path(rel_link(self.file, self.endnotes_file)) + "#" + note.label 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'<a id="{ref_id}"></a><sup><a href="{target}">{num}</a></sup>')]
return [("r", f'<a id="{ref_id}"></a><sup>[{num}]({target})</sup>')] return [("r", f'<a id="{ref_id}"></a><sup>[{num}]({target})</sup>')]
if note not in self.chapter_notes: if note not in self.chapter_notes:
self.chapter_notes.append(note) self.chapter_notes.append(note)

View file

@ -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 'href="#fn-001"' in text and "Text[^fn-001]." in text
assert re.search(r'id="fn-001"', text), text assert re.search(r'id="fn-001"', text), text
assert run.report["output_link_check"]["broken_count"] == 0 assert run.report["output_link_check"]["broken_count"] == 0
def _html_table(text: str) -> str:
return text[text.index("<table"): text.index("</table>")]
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 '<a href="999-anmerkungen.md#fn-001">1</a>' in table