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:
parent
def1d8b5c0
commit
6be92645f4
2 changed files with 14 additions and 0 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue