Four export-correctness fixes intermingled across the Typst and EPUB
renderers:
- H7: neutralize newlines in escaped text and apply leading-marker
escaping (= - + / and N.) to the first text node of every block
(paragraph, heading, list item, blockquote) and figure captions, even
when that run carries a mark, so author text can never inject Typst
markup or phantom headings/TOC entries.
- H9: render lists recursively so nested lists survive and multi-
paragraph list items keep their paragraph breaks (Typst functional
list()/enum(); EPUB nested <ul>/<ol> and multiple <p> in <li>).
- H10: render strike, underline and inline code marks in both exporters
(Typst #strike/#underline/#raw; EPUB <s>/<u>/<code> with css).
- H8b: normalize +-bearing image subtypes so an imported svg+xml cover
becomes cover.svg with the correct media type.
Validated the generated Typst constructs compile with typst 0.15.
Claude-Session: https://claude.ai/code/session_01RzTWrLiy4zGuw2hZSQGamk