feat(export): snijtekens in de LaTeX/PDF-export, alleen waar ze echt gezet worden #1530

Merged
brenno merged 4 commits from feat/snijtekens-latex into main 2026-08-17 15:05:29 +00:00
Owner

Sluit #1510.

De voorgeschiedenis

De schakelaar heeft kort bestaan en is er vóór het landen weer uitgehaald (#1505), omdat de bewaker vaststelde dat géén enkel uitvoerpad hem waarmaakte: marks: crop cross kent geen browser, en het LaTeX-pad vergrootte wel het vel maar zette geen tekens. Een vergroot vel zónder tekens is voor een drukker erger dan geen afloop.

Zijn opdracht was: haal hem weg of maak hem waar. Dit is het tweede.

Wat er nu gebeurt

articlePreamble schrijft \usepackage[width=…mm,height=…mm,cam,center]{crop} — de tekens komen rond het snijformaat te staan op het grotere vel, wat een drukker nodig heeft om te weten waar hij snijdt. De maten komen uit de gekozen paginamaat, dus A5 met afloop krijgt tekens op 148 × 210.

Drie begrenzingen, alle drie bewust:

De vlag staat in AppSettings, niet in PageMargins. Die laatste reist sinds #1525 mee in het .md, en voor snijtekens bestaat geen vocabulaire dat een andere lezer uitvoert — hem daar zetten zou een privé-dialect via de achterdeur introduceren. Ze zijn bovendien een keuze per drukgang, geen eigenschap van de tekst.

Het pakket komt alleen in de preamble bij een expliciete keuze én een afloop. Wie geen snijtekens vraagt krijgt geen extra TeX-afhankelijkheid; wie ze wél vraagt accepteert er één die de interface bij naam noemt. Zonder afloop wijzen ze nergens naar, dus dan blijven ze weg.

De interfacetekst zegt het bereik: alleen LaTeX/PDF, alleen met afloop, vereist het crop-pakket, en een browser-afdruk van de HTML-export zet ze niet. Dat hoort de gebruiker te lezen, niet alleen de programmeur in een commentaar. De HTML-export belooft nog steeds niets, en test/marp_html_continuous_test.dart pint dat vast.

Onderweg

De vijf regels van de nieuwe instelling duwden settings_provider.dart over zijn plafond. In plaats van de basislijn op te rekken staat het lezen van de documentmodus-voorkeuren nu in hetzelfde part als het schrijven — hetzelfde patroon als _loadCockpitSettings ernaast.

De vertalingen van Snijtekens bleken nog in de historie te staan (uit de commit waarin de weessleutel is opgeruimd) en zijn ongewijzigd hersteld; de afloopterm is per taal consistent met de bestaande afloop-strings.

Tests

test/latex_crop_marks_test.dart: geen pakket zonder de schakelaar, geen pakket zonder afloop, en mét beide de juiste snijmaat — plus de controle dat het vel via geometry wél groter is.

Poorten

make check groen (9587 tests, dekking 86,9%). make check-secrets groen, make sast groen (0 findings).

Sluit #1510. ## De voorgeschiedenis De schakelaar heeft kort bestaan en is er vóór het landen weer uitgehaald (#1505), omdat de bewaker vaststelde dat géén enkel uitvoerpad hem waarmaakte: `marks: crop cross` kent geen browser, en het LaTeX-pad vergrootte wel het vel maar zette geen tekens. Een vergroot vel zónder tekens is voor een drukker erger dan geen afloop. Zijn opdracht was: *haal hem weg of maak hem waar*. Dit is het tweede. ## Wat er nu gebeurt `articlePreamble` schrijft `\usepackage[width=…mm,height=…mm,cam,center]{crop}` — de tekens komen rond het **snijformaat** te staan op het grotere vel, wat een drukker nodig heeft om te weten waar hij snijdt. De maten komen uit de gekozen paginamaat, dus A5 met afloop krijgt tekens op 148 × 210. Drie begrenzingen, alle drie bewust: **De vlag staat in `AppSettings`, niet in `PageMargins`.** Die laatste reist sinds #1525 mee in het `.md`, en voor snijtekens bestaat geen vocabulaire dat een andere lezer uitvoert — hem daar zetten zou een privé-dialect via de achterdeur introduceren. Ze zijn bovendien een keuze per drukgang, geen eigenschap van de tekst. **Het pakket komt alleen in de preamble bij een expliciete keuze én een afloop.** Wie geen snijtekens vraagt krijgt geen extra TeX-afhankelijkheid; wie ze wél vraagt accepteert er één die de interface bij naam noemt. Zonder afloop wijzen ze nergens naar, dus dan blijven ze weg. **De interfacetekst zegt het bereik**: alleen LaTeX/PDF, alleen met afloop, vereist het `crop`-pakket, en een browser-afdruk van de HTML-export zet ze niet. Dat hoort de gebruiker te lezen, niet alleen de programmeur in een commentaar. De HTML-export belooft nog steeds niets, en `test/marp_html_continuous_test.dart` pint dat vast. ## Onderweg De vijf regels van de nieuwe instelling duwden `settings_provider.dart` over zijn plafond. In plaats van de basislijn op te rekken staat het *lezen* van de documentmodus-voorkeuren nu in hetzelfde `part` als het *schrijven* — hetzelfde patroon als `_loadCockpitSettings` ernaast. De vertalingen van `Snijtekens` bleken nog in de historie te staan (uit de commit waarin de weessleutel is opgeruimd) en zijn ongewijzigd hersteld; de afloopterm is per taal consistent met de bestaande afloop-strings. ## Tests `test/latex_crop_marks_test.dart`: geen pakket zonder de schakelaar, geen pakket zonder afloop, en mét beide de juiste snijmaat — plus de controle dat het vel via `geometry` wél groter is. ## Poorten `make check` groen (9587 tests, dekking 86,9%). `make check-secrets` groen, `make sast` groen (0 findings).
De schakelaar heeft eerder kort bestaan en is er toen uitgehaald omdat
geen enkel uitvoerpad hem waarmaakte (#1505). Hij komt nu terug voor het
pad dat het wél kan: LaTeX zet met het crop-pakket echte snijtekens rond
het snijformaat op het grotere vel.

Drie keuzes die eruit volgen:

De vlag staat in AppSettings en niet in PageMargins. Die laatste reist
sinds #1525 mee in het `.md`, en voor snijtekens bestaat geen vocabulaire
dat een andere lezer uitvoert. Ze zijn bovendien een keuze per drukgang,
geen eigenschap van de tekst.

Het pakket komt alleen in de preamble wanneer de gebruiker de tekens zelf
aanzet én er afloop is. Wie ze niet vraagt krijgt geen extra
afhankelijkheid; wie ze wel vraagt accepteert er één die de interface
noemt. Zonder afloop wijzen ze nergens naar, dus dan blijven ze weg.

De interface zegt waar het werkt en waar niet: alleen LaTeX/PDF, vereist
het crop-pakket, en een browser-afdruk van de HTML-export zet ze niet —
geen browser kent `marks` uit CSS Paged Media. Dat verschil hoort in de
tekst die de gebruiker leest, niet alleen in een code-commentaar.

Sluit #1510.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
De snijtekens-instelling voegde vijf regels aan SettingsNotifier toe en
duwde het bestand én de klasse over hun plafond. In plaats van de basislijn
op te rekken staat het lezen nu waar het schrijven al stond: een top-level
_readDocumentSettings in het documentstijl-part, die alle zeven
documentmodus-voorkeuren als record teruggeeft.

Zelfde patroon als _loadCockpitSettings hiernaast, zelfde sleutels,
zelfde standaardwaarden — alleen niet meer meegeteld in de klasse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
feat(l10n): snijtekens-schakelaar en zijn drie voorbehouden in 31 talen
Some checks failed
scans / scans (pull_request) Successful in 4m53s
static-gate / static-gate (pull_request) Failing after 6m28s
e0091511df
De schakelaar 'Snijtekens' en de uitleg eronder waren de laatste
hardgecodeerde d()-strings van deze tak. De sleutel 'Snijtekens' bestond
eerder al en is in 056bd665 als weessleutel opgeruimd; de vertalingen van
toen zijn ongewijzigd hergebruikt, zodat de drukkersvakterm per taal
dezelfde blijft als voor de terugtrekking.

De uitleg draagt bewust alle drie de voorbehouden: alleen het
LaTeX/PDF-pad, alleen met afloop, en het crop-pakket moet in de
TeX-installatie zitten. De pakketnaam crop blijft onvertaald. Per taal
volgt de afloopterm de bestaande vertaling van 'Afloop voor de drukker
(mm)' (Anschnitt, fond perdu, spadávka, utfall…), zodat de twee regels
in het instellingenpaneel hetzelfde woord gebruiken.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
fix(l10n): dubbele sleutel na de rebase op de Klingon-correctie
All checks were successful
scans / scans (pull_request) Successful in 2m44s
static-gate / static-gate (pull_request) Successful in 5m37s
09aa17f454
Deze tak en #1528 raakten allebei tlh.dart. Git voegde beide kanten in
dezelfde map samen zonder conflict te melden, waardoor
'Deze paginaopmaak staat in dit document' er twee keer in stond — één keer
met de gecorrigeerde documentterm (ghItlh) en één keer met de oude (nav).

De verouderde regel is weg. Dat lokaal groen was en CI niet, komt doordat
de dubbele sleutel pas na de rebase ontstond: analyze ziet hem wel, maar
mijn laatste volledige poortronde lag ervóór.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
brenno merged commit c2c9af399e into main 2026-08-17 15:05:29 +00:00
Sign in to join this conversation.
No description provided.