fix(documentmodus): de pagina-weergave honoreert de geforceerde pagina-einden #1518
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1518
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/geforceerde-paginaeinden"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sluit #1514.
Wat er mis was
Het formaat kent al twee pagina-einden die niets met hoogte te maken hebben, en de export honoreert ze allebei (FILE_FORMAT.md §14.6):
---in de body ís een pagina-einde —.document hr{page-break-after:always}in de print-CSS,\newpagein LaTeX;H1op een vers vel beginnen.De pagina-weergave uit #1505 verdeelde puur op hoogte en liet een
---gewoon als streepje doorlopen. Het scherm dat laat zien wat op welke bladzijde komt, zei dus iets anders dan de druk — precies wat die stand hoort te voorkomen.Gevonden bij het uitwerken van het front-matter-ontwerp (#1511), door de eigen formaatdocumentatie te lezen.
De oplossing
documentPageOffsetskent eenforcedBreakBefore-verzameling;DocumentMarkdownView.forcedPageBreaks()wijst de blokken aan (soortrule, plusH1wanneer de instelling aanstaat);PagedDocumentViewgeeft ze door. Een breuk bovenaan een vers vel wordt overgeslagen — anders opent een document dat met een---of een kop begint met een leeg vel.De parameter heeft een standaardwaarde, dus bestaande aanroepers merken niets.
Nog niet in de schrijfstand
De streepjeslijnen tijdens het typen doen dit nog niet. Daar is de blokindeling die van Quill en niet die van de weergave, dus de koppeling tussen beide lijsten moet eerst kloppen — anders staat de lijn op het verkeerde blok. Dat staat als open punt in #1514 in plaats van half gebouwd in de code.
Onderweg
DocumentMarkdownViewtikte tegen het klasseplafond (die telt over allepart-bestanden samen, dus een splitsing helpt daar niet). De vijf regelclassificatie-helpers (_fenceMarker,_headingLevel,_isHorizontalRule,_listItem,_isParagraphLine) zijn daarom top-level functies geworden in het part dat de ontleedde bouwstenen al bevat — ze horen bij het ontleden, niet bij de weergave.Tests
test/document_forced_page_breaks_test.dart: welke blokken een vers vel beginnen (een---wel, eenH1alleen met de instelling, het eerste blok nooit, een tussenkop niet), plus end-to-end dat twee korte alinea's met een---ertussen écht twee vellen opleveren. Uitbreidingen intest/document_pagination_test.dartvoor de verdeler zelf, inclusief twee breuken achter elkaar.Poorten
make checkgroen (9551 tests, dekking 86,9%).make check-secretsgroen,make sastgroen (0 findings).