feat(document): bewuste witruimte tussen alinea's via <!-- spacer --> (#2464) #2483

Merged
brenno merged 1 commit from fix/document-extra-ruimte into main 2026-10-19 18:02:11 +00:00
Owner

Samenvatting

  • <!-- spacer --> op een eigen regel = één tekstregel bewuste witruimte — HTML-commentaar dat vreemde lezers negeren, voor OciDeck een atomaire Quill-embed (zelfde patroon als <!-- toc -->)
  • Invoegen → Extra ruimte schrijft de marker; meerdere markers stapelen telbaar
  • Lezer, Pagina's en PDF tonen één regelhoogte per marker; spacers tellen niet als inhoud voor gedwongen paginabreuken (geen lege vellen)
  • Alle exports vertalen hem naar hun eigen dialect (lege alinea ODT/DOCX, &#160; EPUB, &nbsp; HTML, \vspace{\baselineskip} LaTeX, PdfSpacerBlock PDF); de .md bewaart de marker
  • Gedocumenteerd in FILE_FORMAT §14.15 + gebruikersgids

<br> op een eigen regel was de andere kandidaat en viel af: de markdown-parser verlijmt hem als inline-HTML aan de volgende alinea — niet byte-getrouw en geen eigen blok.

Testplan

  • Codec-rondreis byte-getrouw (één en meerdere markers)
  • Visuele modus accepteert de marker (geen bronterugval)
  • Editor: invoegen op cursor, atomair weg met Backspace, Undo herstelt
  • Lezer/Pagina's: regelhoogte per marker + geen leeg vel bij ---/document-begin
  • Alle exportpaden (PDF/LaTeX/ODT/DOCX/EPUB/HTML) — geen marker-lekkage
  • Golden voor de paginaweergave (eenmaal écht rood geweest)
  • make check volledig groen

Generated with Devin

## Samenvatting - `<!-- spacer -->` op een eigen regel = één tekstregel bewuste witruimte — HTML-commentaar dat vreemde lezers negeren, voor OciDeck een atomaire Quill-embed (zelfde patroon als `<!-- toc -->`) - *Invoegen → Extra ruimte* schrijft de marker; meerdere markers stapelen telbaar - Lezer, Pagina's en PDF tonen één regelhoogte per marker; spacers tellen niet als inhoud voor gedwongen paginabreuken (geen lege vellen) - Alle exports vertalen hem naar hun eigen dialect (lege alinea ODT/DOCX, `&#160;` EPUB, `&nbsp;` HTML, `\vspace{\baselineskip}` LaTeX, PdfSpacerBlock PDF); de `.md` bewaart de marker - Gedocumenteerd in FILE_FORMAT §14.15 + gebruikersgids `<br>` op een eigen regel was de andere kandidaat en viel af: de markdown-parser verlijmt hem als inline-HTML aan de volgende alinea — niet byte-getrouw en geen eigen blok. ## Testplan - [x] Codec-rondreis byte-getrouw (één en meerdere markers) - [x] Visuele modus accepteert de marker (geen bronterugval) - [x] Editor: invoegen op cursor, atomair weg met Backspace, Undo herstelt - [x] Lezer/Pagina's: regelhoogte per marker + geen leeg vel bij `---`/document-begin - [x] Alle exportpaden (PDF/LaTeX/ODT/DOCX/EPUB/HTML) — geen marker-lekkage - [x] Golden voor de paginaweergave (eenmaal écht rood geweest) - [x] `make check` volledig groen Generated with [Devin](https://devin.ai)
Een lege regel scheidt blokken maar draagt zelf niets — elke Markdown-tool
normaliseert hem weg. Voor witruimte die iets betekent (adem tussen
alinea's) is er nu een benoemde constructie: één `<!-- spacer -->`-marker
op een eigen regel is één tekstregel extra ruimte, telbaar in de bron.

De marker volgt het `<!-- toc -->`-precedent: HTML-commentaar dat elke
vreemde lezer straffeloos negeert, terwijl OciDeck hem atomair als
Quill-embed behandelt — byte-getrouwe rondreis, één Backspace haalt hem
weg, Undo zet hem terug. Een `<br>`-regel bleek geen optie: die verlijmt
de parser als inline-HTML aan de volgende alinea.

- Invoegen → Extra ruimte schrijft de marker op de cursor (30 talen)
- Lezer, Pagina's en PDF tonen één regelhoogte per marker; een spacer
  telt niet als inhoud voor gedwongen paginabreuken (geen lege vellen)
- Elke export vertaalt hem naar zijn eigen dialect: lege alinea
  (ODT/DOCX), `<p>&#160;</p>` (EPUB), `&nbsp;`-alinea (HTML),
  `\vspace{\baselineskip}` (LaTeX), PdfSpacerBlock (PDF)
- Gedocumenteerd in FILE_FORMAT §14.15 en de gebruikersgids

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 7c76334582 into main 2026-10-19 18:02:11 +00:00
Sign in to join this conversation.
No description provided.