polytypo 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +33 -1
- data/lib/polytypo/data/VERSION +1 -1
- data/lib/polytypo/data/fixtures/cs.json +161 -0
- data/lib/polytypo/data/fixtures/de-CH.json +1 -1
- data/lib/polytypo/data/fixtures/de-DE.json +195 -6
- data/lib/polytypo/data/fixtures/el.json +1 -1
- data/lib/polytypo/data/fixtures/en-GB.json +12 -1
- data/lib/polytypo/data/fixtures/en-US.json +626 -1
- data/lib/polytypo/data/fixtures/es.json +193 -0
- data/lib/polytypo/data/fixtures/fi.json +1 -1
- data/lib/polytypo/data/fixtures/fr-CA.json +25 -1
- data/lib/polytypo/data/fixtures/fr.json +176 -1
- data/lib/polytypo/data/fixtures/it.json +161 -0
- data/lib/polytypo/data/fixtures/locale-resolution.json +76 -4
- data/lib/polytypo/data/fixtures/nl.json +121 -0
- data/lib/polytypo/data/fixtures/pl.json +137 -0
- data/lib/polytypo/data/fixtures/pt-BR.json +156 -0
- data/lib/polytypo/data/fixtures/pt-PT.json +156 -0
- data/lib/polytypo/data/fixtures/ru.json +23 -1
- data/lib/polytypo/data/fixtures/sv.json +1 -1
- data/lib/polytypo/data/fixtures/uk.json +153 -0
- data/lib/polytypo/data/locales/cs.json +90 -0
- data/lib/polytypo/data/locales/de-DE.json +7 -2
- data/lib/polytypo/data/locales/en-US.json +3 -3
- data/lib/polytypo/data/locales/es.json +111 -0
- data/lib/polytypo/data/locales/fr-CA.json +7 -1
- data/lib/polytypo/data/locales/fr.json +7 -1
- data/lib/polytypo/data/locales/it.json +95 -0
- data/lib/polytypo/data/locales/nl.json +84 -0
- data/lib/polytypo/data/locales/pl.json +96 -0
- data/lib/polytypo/data/locales/pt-BR.json +82 -0
- data/lib/polytypo/data/locales/pt-PT.json +84 -0
- data/lib/polytypo/data/locales/registry.json +23 -3
- data/lib/polytypo/data/locales/ru.json +2 -2
- data/lib/polytypo/data/locales/uk.json +130 -0
- data/lib/polytypo/data/rules/analyze.md +157 -0
- data/lib/polytypo/data/rules/apostrophe.md +432 -0
- data/lib/polytypo/data/rules/dashes.md +128 -37
- data/lib/polytypo/data/rules/ellipsis.md +271 -0
- data/lib/polytypo/data/rules/hyphen.md +353 -0
- data/lib/polytypo/data/rules/locale-resolution.md +239 -0
- data/lib/polytypo/data/rules/modes.md +1281 -0
- data/lib/polytypo/data/rules/nbsp.md +1157 -0
- data/lib/polytypo/data/rules/order.json +11 -11
- data/lib/polytypo/data/rules/pipeline-idempotency.md +605 -0
- data/lib/polytypo/data/rules/quotes.md +1324 -0
- data/lib/polytypo/data/rules/ranges.md +489 -0
- data/lib/polytypo/data/rules/spaces.md +649 -0
- data/lib/polytypo/data/rules/symbols.md +540 -0
- data/lib/polytypo/data/schema/fixtures.schema.json +18 -3
- data/lib/polytypo/engine/origin.rb +75 -0
- data/lib/polytypo/engine/pipeline.rb +72 -1
- data/lib/polytypo/engine/rules/dash_shared.rb +85 -3
- data/lib/polytypo/engine/rules/dashes.rb +4 -1
- data/lib/polytypo/engine/rules/nbsp.rb +43 -7
- data/lib/polytypo/engine/rules/ranges.rb +24 -20
- data/lib/polytypo/errors.rb +3 -0
- data/lib/polytypo/modes/runner.rb +17 -0
- data/lib/polytypo/modes/spans.rb +30 -2
- data/lib/polytypo/modes/yaml.rb +312 -0
- data/lib/polytypo/version.rb +1 -1
- data/lib/polytypo.rb +126 -15
- metadata +31 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"spec": "1.3.0",
|
|
3
|
+
"locale": "pt-PT",
|
|
4
|
+
"cases": [
|
|
5
|
+
{
|
|
6
|
+
"id": "pt-pt-quotes-primary",
|
|
7
|
+
"rule": "quotes",
|
|
8
|
+
"mode": "text",
|
|
9
|
+
"in": "Ele disse \"bom dia\" e saiu.",
|
|
10
|
+
"out": "Ele disse «bom dia» e saiu.",
|
|
11
|
+
"note": "quotes.primary com innerSpace \"none\". O primeiro nível é o das aspas angulares (ponto 10.4.10 do Código de Redação Interinstitucional). É a diferença central em relação a pt-BR, que usa aspas curvas duplas."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "pt-pt-quotes-nested",
|
|
15
|
+
"rule": "quotes",
|
|
16
|
+
"mode": "text",
|
|
17
|
+
"in": "Escreveu: \"Disse-me 'chego já' e desapareceu.\"",
|
|
18
|
+
"out": "Escreveu: «Disse-me “chego já” e desapareceu.»",
|
|
19
|
+
"note": "Primeiro e segundo níveis de aspas. O terceiro nível que as fontes descrevem não é exprimível no esquema, que só tem primary e secondary."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "pt-pt-dashes-parenthetical",
|
|
23
|
+
"rule": "dashes",
|
|
24
|
+
"mode": "text",
|
|
25
|
+
"in": "As condições - ordenado e subvenções - eram boas.",
|
|
26
|
+
"out": "As condições — ordenado e subvenções — eram boas.",
|
|
27
|
+
"note": "dash.parenthetical = \"em-spaced\": o travessão substitui parênteses e leva um espaço ordinário de cada lado. A largura foi verificada extraindo a camada de texto do PDF da fonte, não julgada a olho sobre a página rasterizada."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "pt-pt-ranges-hyphen-kept",
|
|
31
|
+
"rule": "ranges",
|
|
32
|
+
"mode": "text",
|
|
33
|
+
"rules": {
|
|
34
|
+
"ranges": true
|
|
35
|
+
},
|
|
36
|
+
"in": "o programa para 1996-1997",
|
|
37
|
+
"out": "o programa para 1996-1997",
|
|
38
|
+
"note": "ranges.md §2: com dash.range = \"none\" a regra não emite nada — nem sequer os U+2060 que um intervalo convertido carrega noutras locales — e o U+002D escrito pelo autor sobrevive byte a byte."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "pt-pt-ranges-slash-untouched",
|
|
42
|
+
"rule": "ranges",
|
|
43
|
+
"mode": "text",
|
|
44
|
+
"rules": {
|
|
45
|
+
"ranges": true
|
|
46
|
+
},
|
|
47
|
+
"in": "o ano letivo de 1990/1991",
|
|
48
|
+
"out": "o ano letivo de 1990/1991",
|
|
49
|
+
"note": "ranges.md §3: a barra não é um token de intervalo para esta regra. Fica fixado que o outro ramo da convenção portuguesa — período que não abrange os dois anos completos — também não é tocado."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "pt-pt-ellipsis-three-dots",
|
|
53
|
+
"rule": "ellipsis",
|
|
54
|
+
"mode": "text",
|
|
55
|
+
"in": "Espere... o quê?",
|
|
56
|
+
"out": "Espere… o quê?",
|
|
57
|
+
"note": "ellipsis.md §6: três U+002E passam a U+2026. Nada acontece antes de «?», porque beforePunctuation e narrowBeforePunctuation estão vazios — ao contrário de fr."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "pt-pt-ellipsis-not-abbreviated-after-terminal",
|
|
61
|
+
"rule": "ellipsis",
|
|
62
|
+
"mode": "text",
|
|
63
|
+
"in": "É o dianho!..",
|
|
64
|
+
"out": "É o dianho!…",
|
|
65
|
+
"note": "abbreviatedAfterTerminal = false: a forma abreviada de dois pontos que o russo usa não existe em português, pelo que «!..» é um lapso por «!…». A fonte europeia imprime exatamente «É o dianho!…»."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "pt-pt-hyphen-noop-compounds",
|
|
69
|
+
"rule": "hyphen",
|
|
70
|
+
"mode": "text",
|
|
71
|
+
"in": "Uma reunião na segunda-feira sobre o salmão-do-atlântico.",
|
|
72
|
+
"out": "Uma reunião na segunda-feira sobre o salmão-do-atlântico.",
|
|
73
|
+
"note": "hyphen.md §2: as três listas estão vazias porque o Acordo Ortográfico (Base XX) manda QUEBRAR a linha no hífen do composto e repeti-lo na linha seguinte. Um port que ligue compostos portugueses com U+2011 falha este caso."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "pt-pt-hyphen-noop-enclisis",
|
|
77
|
+
"rule": "hyphen",
|
|
78
|
+
"mode": "text",
|
|
79
|
+
"in": "far-se-á e exigem-lhe",
|
|
80
|
+
"out": "far-se-á e exigem-lhe",
|
|
81
|
+
"note": "Ênclise e mesóclise, exemplos literais do Manual de Redação da Presidência da República, que prescreve a mesma repetição do hífen na translineação."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "pt-pt-nbsp-percent",
|
|
85
|
+
"rule": "nbsp",
|
|
86
|
+
"mode": "text",
|
|
87
|
+
"in": "7 % do volume de negócios",
|
|
88
|
+
"out": "7 % do volume de negócios",
|
|
89
|
+
"note": "N5 converte um espaço já escrito. O português escreve «7 %» com espaço, ao contrário do grego, que o escreve colado."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "pt-pt-nbsp-celsius",
|
|
93
|
+
"rule": "nbsp",
|
|
94
|
+
"mode": "text",
|
|
95
|
+
"in": "a temperatura atingiu hoje os 39 °C",
|
|
96
|
+
"out": "a temperatura atingiu hoje os 39 °C",
|
|
97
|
+
"note": "Exemplo literal do ponto 10.9.1 do Código de Redação Interinstitucional."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "pt-pt-nbsp-hour-is-not-a-unit",
|
|
101
|
+
"rule": "nbsp",
|
|
102
|
+
"mode": "text",
|
|
103
|
+
"in": "eram as 18h30",
|
|
104
|
+
"out": "eram as 18h30",
|
|
105
|
+
"note": "O reparo citado: «h» escreve-se «sempre sem ponto, sem espaços» (ponto 10.9.1), pelo que está deliberadamente ausente de beforeUnits. Este caso fixa essa ausência para que ninguém a preencha por analogia."
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "pt-pt-nbsp-abbreviation",
|
|
109
|
+
"rule": "nbsp",
|
|
110
|
+
"mode": "text",
|
|
111
|
+
"in": "p. ex. isto",
|
|
112
|
+
"out": "p. ex. isto",
|
|
113
|
+
"note": "N4 liga o espaço interno da abreviatura listada «p. ex.», que o anexo A3 manda preferir a «e. g.»."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"id": "pt-pt-nbsp-before-number",
|
|
117
|
+
"rule": "nbsp",
|
|
118
|
+
"mode": "text",
|
|
119
|
+
"in": "ver p. 24",
|
|
120
|
+
"out": "ver p. 24",
|
|
121
|
+
"note": "N9: «p. 24» é o exemplo impresso. «n.º» NÃO está na lista, e por citação e não por esquecimento — a nota (3) do ponto 6.4 prescreve um «o» sobrescrito e recusa expressamente U+00BA e U+00B0."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "pt-pt-nbsp-no-space-before-colon",
|
|
125
|
+
"rule": "nbsp",
|
|
126
|
+
"mode": "text",
|
|
127
|
+
"in": "As principais cidades de Portugal são: Lisboa, Porto e Coimbra.",
|
|
128
|
+
"out": "As principais cidades de Portugal são: Lisboa, Porto e Coimbra.",
|
|
129
|
+
"note": "beforePunctuation e narrowBeforePunctuation vazios: nada é inserido antes de «:». Frase literal do ponto 10.4.4. Um port que aplique a prática francesa a todas as locales falha aqui."
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "pt-pt-spaces-brackets-and-final-stop",
|
|
133
|
+
"rule": "spaces",
|
|
134
|
+
"mode": "text",
|
|
135
|
+
"in": "O texto ( corrente ) não muda .",
|
|
136
|
+
"out": "O texto (corrente) não muda.",
|
|
137
|
+
"note": "spaces.md §3: os espaços interiores dos parênteses desaparecem e a série anterior ao ponto final reduz-se. Regra independente da locale, presente para que esta tenha um caso por cada regra canónica."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "pt-pt-symbols-copyright-and-dimensions",
|
|
141
|
+
"rule": "symbols",
|
|
142
|
+
"mode": "text",
|
|
143
|
+
"in": "Copyright (c) 2026, formato 40x60 cm",
|
|
144
|
+
"out": "Copyright © 2026, formato 40×60 cm",
|
|
145
|
+
"note": "symbols.md: «(c)» passa a U+00A9 e o «x» entre algarismos a U+00D7. O U+00A0 antes de «cm» é obra de nbsp N5, não de symbols."
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "pt-pt-apostrophe-elision",
|
|
149
|
+
"rule": "apostrophe",
|
|
150
|
+
"mode": "text",
|
|
151
|
+
"in": "pinga d'água",
|
|
152
|
+
"out": "pinga d’água",
|
|
153
|
+
"note": "U+0027 passa a U+2019. A regra não lê dados de locale; o caso certifica-a para esta locale."
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"spec": "1.
|
|
2
|
+
"spec": "1.3.0",
|
|
3
3
|
"locale": "ru",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
@@ -715,6 +715,28 @@
|
|
|
715
715
|
"in": "Он живёт в <em>Москве</em>",
|
|
716
716
|
"out": "Он живёт в <em>Москве</em>",
|
|
717
717
|
"note": "nbsp.md §3.1, §7 item 12 (spec 1.2.0); modes.md §3.3: the −1 span boundary marker is not in `nbsp`'s OPENISH, so N3's following-token guard does not accept it and the space after `в` stays U+0020. This pins the membership split itself: a port that also put the marker in OPENISH would bind here."
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"id": "ru-ranges-closed-up-percent",
|
|
721
|
+
"rule": "ranges",
|
|
722
|
+
"mode": "text",
|
|
723
|
+
"in": "35%-50%",
|
|
724
|
+
"out": "35%—50%",
|
|
725
|
+
"rules": {
|
|
726
|
+
"ranges": true
|
|
727
|
+
},
|
|
728
|
+
"note": "ranges.md §3.2a (spec 1.3.0): the suffix form in a locale whose `dash.range` is em-tight, so the same token produces U+2014 here and U+2013 in `en-US`. The closed-up walk decides candidacy; the locale still decides the glyph."
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"id": "ru-dashes-t1-closed-up-symbol-suffix",
|
|
732
|
+
"rule": "dashes",
|
|
733
|
+
"mode": "text",
|
|
734
|
+
"in": "35%-50%—b",
|
|
735
|
+
"out": "35%-50%—b",
|
|
736
|
+
"rules": {
|
|
737
|
+
"ranges": true
|
|
738
|
+
},
|
|
739
|
+
"note": "ranges.md §3.2a, via dashes.md §3.2 step 8 (spec 1.3.0): the same witness in the suffix direction and in an em-dash locale — the disturbed guard is the range's `after` rather than its `before`. Pinned separately because the two directions are separate code paths in every port. To be precise about \"before the amendment\": the drift is a property of the INTERMEDIATE state — ranges.md §3.2a's widened candidacy without T1's transparency — which never shipped. Under spec 1.2.0 this input was stable, because the token was not a range candidate at all."
|
|
718
740
|
}
|
|
719
741
|
]
|
|
720
742
|
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"spec": "1.3.0",
|
|
3
|
+
"locale": "uk",
|
|
4
|
+
"cases": [
|
|
5
|
+
{
|
|
6
|
+
"id": "uk-quotes-primary",
|
|
7
|
+
"rule": "quotes",
|
|
8
|
+
"mode": "text",
|
|
9
|
+
"in": "Він сказав: \"Це мій Кобзар\".",
|
|
10
|
+
"out": "Він сказав: «Це мій Кобзар».",
|
|
11
|
+
"note": "§ 164 п. 3 правопису: зовнішні лапки — «ялинки» U+00AB/U+00BB, innerSpace = none."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "uk-quotes-nested",
|
|
15
|
+
"rule": "quotes",
|
|
16
|
+
"mode": "text",
|
|
17
|
+
"in": "\"Це мій 'Кобзар'\", — сказав він.",
|
|
18
|
+
"out": "«Це мій “Кобзар”», — сказав він.",
|
|
19
|
+
"note": "Приклад із самого § 164 п. 3. Внутрішні лапки — U+201C/U+201D, а НЕ „…“: останню той-таки пункт відносить до рукописних текстів. Фікстура існує саме для того, щоб форму не «виправили» на російську за аналогією."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "uk-ellipsis-abbreviated-after-question",
|
|
23
|
+
"rule": "ellipsis",
|
|
24
|
+
"mode": "text",
|
|
25
|
+
"in": "а щоб селяни?...",
|
|
26
|
+
"out": "а щоб селяни?..",
|
|
27
|
+
"note": "abbreviatedAfterTerminal = true. § 162, Примітка: після знака питання ставимо ДВІ крапки. Приклад із того ж параграфа (К. Гордієнко). Українська — друга після російської локаль із цим значенням."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "uk-ellipsis-abbreviated-after-exclamation",
|
|
31
|
+
"rule": "ellipsis",
|
|
32
|
+
"mode": "text",
|
|
33
|
+
"in": "Рокочуть ріки ясноводі!...",
|
|
34
|
+
"out": "Рокочуть ріки ясноводі!..",
|
|
35
|
+
"note": "Другий приклад тієї самої Примітки (М. Рильський): після знака оклику так само дві крапки."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "uk-ellipsis-ordinary",
|
|
39
|
+
"rule": "ellipsis",
|
|
40
|
+
"mode": "text",
|
|
41
|
+
"in": "Літак... Димки...",
|
|
42
|
+
"out": "Літак… Димки…",
|
|
43
|
+
"note": "Поза постпозицією до ?/! три крапки стають U+2026, як в усіх локалях."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "uk-dashes-parenthetical",
|
|
47
|
+
"rule": "dashes",
|
|
48
|
+
"mode": "text",
|
|
49
|
+
"in": "Це - наш дім.",
|
|
50
|
+
"out": "Це — наш дім.",
|
|
51
|
+
"note": "dash.parenthetical = em-spaced: U+2014 з відбивкою. Довжина з заголовка § 161 «ТИРЕ (—)»; відбивка — з протиставлення в Примітці п. 14, і це в файлі позначено як висновок, а не як цитата."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "uk-ranges-em-tight",
|
|
55
|
+
"rule": "ranges",
|
|
56
|
+
"mode": "text",
|
|
57
|
+
"rules": {
|
|
58
|
+
"ranges": true
|
|
59
|
+
},
|
|
60
|
+
"in": "на сторінках 1-10",
|
|
61
|
+
"out": "на сторінках 1—10",
|
|
62
|
+
"note": "ranges.md §3: dash.range = em-tight дає U+2014 без відступів, загорнуте в U+2060. Приклад із § 161 I п. 14, Примітка: «на сторінках 1—10»."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "uk-hyphen-compound-preposition",
|
|
66
|
+
"rule": "hyphen",
|
|
67
|
+
"mode": "text",
|
|
68
|
+
"in": "з-під столу і будь-хто",
|
|
69
|
+
"out": "з‑під столу і будь‑хто",
|
|
70
|
+
"note": "hyphen: складений прийменник (§ 42 п. 2) і частка (§ 44 п. 3) зв'язуються через U+2011. Для ЦИХ класів нерозривність — рішення проєкту, а не норма: §§ 63—64 про них мовчать. Пор. наступний випадок, де норма пряма."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "uk-hyphen-graphic-shortening",
|
|
74
|
+
"rule": "hyphen",
|
|
75
|
+
"mode": "text",
|
|
76
|
+
"in": "вид-во та ін-т",
|
|
77
|
+
"out": "вид‑во та ін‑т",
|
|
78
|
+
"note": "Тут нерозривність САМА Є НОРМОЮ: § 64 п. 4 прямо забороняє розривати графічні скорочення, а § 62 п. 2 закриває клас переліком. Цим українська відрізняється від польської, де поділ у місці дефіса приписаний."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "uk-nbsp-units-and-year",
|
|
82
|
+
"rule": "nbsp",
|
|
83
|
+
"mode": "text",
|
|
84
|
+
"in": "150 га і 2008 р.",
|
|
85
|
+
"out": "150 га і 2008 р.",
|
|
86
|
+
"note": "N5: обидва приклади дослівні з § 64 п. 2. «р.» безпечне там, де російське «г.» не було: українське «р.» означає тільки «рік» і зв'язується вліво."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "uk-nbsp-initials-chain",
|
|
90
|
+
"rule": "nbsp",
|
|
91
|
+
"mode": "text",
|
|
92
|
+
"in": "Т. Г. Шевченко",
|
|
93
|
+
"out": "Т. Г. Шевченко",
|
|
94
|
+
"note": "initialBinding = chain, приклад із § 64 п. 1. Значення взято з того, що пункт наводить послідовність ДВОХ ініціалів і не дає прикладу одного."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "uk-nbsp-before-word",
|
|
98
|
+
"rule": "nbsp",
|
|
99
|
+
"mode": "text",
|
|
100
|
+
"in": "проф. Гончаренко",
|
|
101
|
+
"out": "проф. Гончаренко",
|
|
102
|
+
"note": "N10 beforeWord із § 64 п. 1. «п.» і «гр.» з того самого пункту свідомо НЕ внесено: «п.» — також «пункт», «гр.» — також «градус»."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "uk-nbsp-abbreviation",
|
|
106
|
+
"rule": "nbsp",
|
|
107
|
+
"mode": "text",
|
|
108
|
+
"in": "і т. д.",
|
|
109
|
+
"out": "і т. д.",
|
|
110
|
+
"note": "N4: обидва внутрішні пробіли скорочення стають U+00A0 (§ 64 п. 4). Колізії з N3 немає, бо afterShortWords для української порожній."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "uk-nbsp-short-word-inert",
|
|
114
|
+
"rule": "nbsp",
|
|
115
|
+
"mode": "text",
|
|
116
|
+
"in": "у Києві",
|
|
117
|
+
"out": "у Києві",
|
|
118
|
+
"note": "НЕГАТИВНА ФІКСТУРА, і вона тут найважливіша. afterShortWords порожній: § 64 — закритий перелік із п'яти пунктів, і правила про однобуквені прийменники в ньому немає. Випадок стоїть на сторожі, щоб список із ru.json не перенесли сюди за аналогією спорідненої мови."
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "uk-nbsp-percent",
|
|
122
|
+
"rule": "nbsp",
|
|
123
|
+
"mode": "text",
|
|
124
|
+
"in": "зростання на 5 %",
|
|
125
|
+
"out": "зростання на 5 %",
|
|
126
|
+
"note": "«%» внесено як РІШЕННЯ, а не як цитата: його немає ні в § 62, ні в § 64, ні в скороченому викладі BIPM, але відбивка відсотка є в усіх інших локалях проєкту. Див. запис sources."
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "uk-spaces-brackets-and-final-stop",
|
|
130
|
+
"rule": "spaces",
|
|
131
|
+
"mode": "text",
|
|
132
|
+
"in": "Текст ( поточний ) не змінюється .",
|
|
133
|
+
"out": "Текст (поточний) не змінюється.",
|
|
134
|
+
"note": "spaces.md §3: правило не залежить від локалі, випадок потрібен, щоб uk мала по кейсу на кожне канонічне правило."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "uk-symbols-copyright-and-dimensions",
|
|
138
|
+
"rule": "symbols",
|
|
139
|
+
"mode": "text",
|
|
140
|
+
"in": "Copyright (c) 2026, формат 40x60 см",
|
|
141
|
+
"out": "Copyright © 2026, формат 40×60 см",
|
|
142
|
+
"note": "symbols.md: «(c)» стає U+00A9, «x» між цифрами — U+00D7. U+00A0 перед «см» ставить nbsp N5."
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "uk-apostrophe-orthographic",
|
|
146
|
+
"rule": "apostrophe",
|
|
147
|
+
"mode": "text",
|
|
148
|
+
"in": "п'ять об'єктів",
|
|
149
|
+
"out": "п’ять об’єктів",
|
|
150
|
+
"note": "ВАЖЛИВИЙ ВИПАДОК для української, і перевірений на рушії, а не припущений: апостроф у «п'ять», «об'єкт» — частина орфографії слова, а не пунктуація, і правило apostrophe перетворює прямий U+0027 на U+2019 саме там, де він і має бути в друкованому тексті. Спершу цей випадок був написаний як no-op — рушій показав протилежне, і показав правильно."
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"locale": "cs",
|
|
3
|
+
"name": "Czech",
|
|
4
|
+
"quotes": {
|
|
5
|
+
"primary": {
|
|
6
|
+
"open": "„",
|
|
7
|
+
"close": "“",
|
|
8
|
+
"innerSpace": "none"
|
|
9
|
+
},
|
|
10
|
+
"secondary": {
|
|
11
|
+
"open": "‚",
|
|
12
|
+
"close": "‘",
|
|
13
|
+
"innerSpace": "none"
|
|
14
|
+
},
|
|
15
|
+
"elisionIdioms": []
|
|
16
|
+
},
|
|
17
|
+
"dash": {
|
|
18
|
+
"parenthetical": "en-spaced",
|
|
19
|
+
"range": "en-tight"
|
|
20
|
+
},
|
|
21
|
+
"ellipsis": {
|
|
22
|
+
"abbreviatedAfterTerminal": false
|
|
23
|
+
},
|
|
24
|
+
"hyphen": {
|
|
25
|
+
"prefixes": [],
|
|
26
|
+
"suffixes": [],
|
|
27
|
+
"compounds": []
|
|
28
|
+
},
|
|
29
|
+
"nbsp": {
|
|
30
|
+
"beforePunctuation": [],
|
|
31
|
+
"narrowBeforePunctuation": [],
|
|
32
|
+
"afterShortWords": ["a", "i", "k", "o", "s", "u", "v", "z"],
|
|
33
|
+
"abbreviations": ["a. s.", "s. r. o."],
|
|
34
|
+
"beforeUnits": ["%", "°C", "ha", "kg", "km", "cm", "mm", "m²", "kWh", "km/h", "str.", "hod."],
|
|
35
|
+
"beforeNumber": [],
|
|
36
|
+
"beforeWord": ["tj.", "tzv.", "tzn."],
|
|
37
|
+
"afterSymbols": ["§"],
|
|
38
|
+
"initialBinding": "single"
|
|
39
|
+
},
|
|
40
|
+
"sources": [
|
|
41
|
+
{
|
|
42
|
+
"rule": "quotes",
|
|
43
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Uvozovky»: «V češtině užíváme různé varianty uvozovek: dvojité „ “, jednoduché ‚ ‘ a boční » «»; «Jako základní se doporučují uvozovky typu 99 66, tj. dvojité „ “»; «Ostatní typy uvozovek (v první řadě jednoduché, až v druhé řadě boční) se užívají především tehdy, pokud potřebujeme do uvozeného textu vložit ještě další uvozovky»; «Uvozovky přiléhají vždy těsně k výrazům, které ohraničují (tedy „takto“)»",
|
|
44
|
+
"url": "https://prirucka.ujc.cas.cz/?id=162",
|
|
45
|
+
"note": "První stupeň: U+201E otevírací, U+201C zavírací — NIKOLI U+201D jako v polštině, a právě to je rozdíl, který se v sazbě přehlédne. Kódy nebyly odečteny z markdownové konverze stránky, která se u uvozovek ukázala jako nespolehlivá; rozhodující je vlastní označení zdroje «uvozovky typu 99 66»: první znaménko má tvar devítky u paty řádku (U+201E), druhé tvar šestky vyzdvižený nahoru (U+201C). Polský pár PWN naproti tomu označuje jako 99 99. Druhý stupeň: jednoduché uvozovky, protože zdroj je výslovně řadí «v první řadě» pro uvozovky v uvozovkách. OMEZENÁ JISTOTA, řečená naplno: označení «99 66» je ve zdroji uvedeno pouze pro dvojité uvozovky, takže kódy jednoduchých (U+201A … U+2018) vycházejí ze stejného vzorce a z vysázených glyfů, ne z doslovného tvrzení. Rozhodla by tabulka H.1 normy ČSN 01 6910:2014, která je však placená (ČSN online od 1 000 Kč/rok). ROZHODNUTÍ OPERÁTORA, 18. 9. 2026: leží-li pravidlo za placenou normou, projekt je formuluje podle převládajícího úzu a označí to jako rozhodnutí, nikoli jako citaci — stejně jako u německého «Nr.». Padne-li placená stěna, nahradí znění normy tento řádek. Q-W platí v obou případech: U+201A, U+2018 i U+2019 patří do NARROW. Ověřeno 18. 9. 2026."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"rule": "dashes",
|
|
49
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Pomlčka»: «Pomlčku oddělujeme z obou stran mezerami, komplikovanější situace je pouze tehdy, pokud toto znaménko vystupuje ve funkci výrazů a, až, od … do … nebo proti (versus)»; «pomlčka místo čárky: Tato kniha – vydaná ještě před válkou – je opravdu úžasná»; «Pomlčka (–) je dlouhá vodorovná čárka»; «Vedle krátké pomlčky (–) se v textu někdy používá také pomlčka dlouhá (—)»",
|
|
50
|
+
"url": "https://prirucka.ujc.cas.cz/?id=165",
|
|
51
|
+
"note": "Odůvodňuje dash.parenthetical = «en-spaced». Vsuvka není žádná ze čtyř vyjmenovaných výjimek, takže platí obecné pravidlo o mezerách z obou stran. DÉLKA je na rozdíl od polštiny rozhodnuta samotným zdrojem: definiční glyf stránky je krátká pomlčka U+2013 a dlouhá U+2014 je popsána jako to, co se používá «někdy» navíc. U polštiny musel o délce rozhodnout operátor, protože PWN si v korpusu protiřečil; tady stačí číst. PŘÍPUSTNÁ VARIANTA, zaznamenána: U+2014. Ověřeno 18. 9. 2026."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"rule": "ranges",
|
|
55
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Pomlčka», vyjádření rozsahu (s významem ‚až‘ či ‚od … do‘): «strana 23–26, v letech 1945–1948, 9–16 h»; ÚJČ (P. Lozan, M. Pravdová), «Otázky a odpovědi k ČSN 01 6910 (2014)», otázka 2: «norma umožňuje i psaní mezery kolem pomlčky v rozsazích a ve významu „a“ a „versus“, jestliže je alespoň jeden z výrazů kolem pomlčky víceslovný»",
|
|
56
|
+
"url": "https://prirucka.ujc.cas.cz/?id=165",
|
|
57
|
+
"note": "Odůvodňuje dash.range = «en-tight»: krátká pomlčka U+2013 bez mezer. Potvrzeno ze dvou stran: příručka sází rozsahy těsně, a dokument ÚJČ k normě popisuje mezery v rozsahu jako povolenou VÝJIMKU pro víceslovné výrazy, což těsnou sazbu předpokládá jako pravidlo. Text samotné ČSN 01 6910 čten nebyl (je placený); citován je výklad jejích vlastních zpracovatelů, což je nejsilnější veřejně dostupná náhrada. Stránka rovněž uvádí, že pomlčka vyjadřující rozsah nemá stát na konci ani na začátku řádku — požadavek, pro který locale.schema.json nemá pole. Pravidlo ranges je ve výchozím stavu vypnuté (spec 0.5.0). Ověřeno 18. 9. 2026."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"rule": "ellipsis",
|
|
61
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Tři tečky»: «jedná se totiž o jeden znak, nikoli tři samostatné tečky»; «Za třemi tečkami často následují další interpunkční znaménka, která se za tři tečky připojují bez mezery, ale nikdy se však nepřipojuje další tečka (nikoli tedy čtyři tečky vedle sebe)»",
|
|
62
|
+
"url": "https://prirucka.ujc.cas.cz/?id=166",
|
|
63
|
+
"note": "Odůvodňuje abbreviatedAfterTerminal = false. Výpustka je jeden znak U+2026 a otazník či vykřičník stojí ZA ní — ruská dvoutečková forma «?..» není v žádném konzultovaném českém zdroji předvídána. Bylo to ověřeno záměrně: ukrajinština, zkoumaná v témže průchodu, tu formu MÁ, takže analogie mezi slovanskými jazyky by tu byla svůdná a mylná. Ověřeno 18. 9. 2026."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"rule": "hyphen",
|
|
67
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Spojovník»: «píše se bez mezer mezi výrazy, které spojuje»; «Spojovník na začátku dalšího řádku neopakujeme, naznačuje-li rozdělení slova (např. žong- | -lér)»; táž příručka, «Zalomení řádků a nevhodné výrazy na jejich konci», jejíž uzavřený výčet míst, kde k zalomení dojít nemá, spojovník neuvádí",
|
|
68
|
+
"url": "https://prirucka.ujc.cas.cz/?id=164",
|
|
69
|
+
"note": "Odůvodňuje tři prázdné seznamy. Čeština spojovník na konci řádku ani nezakazuje, ani — na rozdíl od polštiny — dělení v jeho místě nepředepisuje; neexistuje uzavřený normativní seznam tvarů, jejichž spojovník se nesmí lámat. To, že jej třináctibodový výčet stránky o zalomení řádků neobsahuje, je doložená nepřítomnost, ne nenalezená citace — a je to zároveň rozdíl proti ukrajinštině, kde § 64 п. 4 takový seznam má. Ověřeno 18. 9. 2026."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"rule": "nbsp",
|
|
73
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Zalomení řádků a nevhodné výrazy na jejich konci»: k zalomení nemá dojít «ve spojení neslabičných předložek k, s, v, z s následujícím slovem, např. k mostu, s bratrem, v Plzni, z nádraží»; «ve spojení slabičných předložek o, u a spojek a, i s výrazem, který po nich následuje, např. u babičky, o páté»; «ve složených zkratkách a kódech, např. a. s., s. r. o.»; «mezi zkratkami tj., tzv., tzn. a následujícím výrazem»; «mezi zkratkou jména a příjmením»; «mezi číslem a značkou, např. 50 %, § 23»; «V textovém procesoru vkládáme tam, kde nemá dojít k zalomení řádku, místo běžné mezislovní mezery mezeru pevnou»",
|
|
74
|
+
"url": "https://prirucka.ujc.cas.cz/?id=880",
|
|
75
|
+
"note": "Pět polí z jednoho uzavřeného výčtu, který se odvolává na ČSN 01 6910. (1) afterShortWords: osm jednopísmenných výrazů, citovaných doslova. Na rozdíl od polštiny je zákaz v prameni BEZPODMÍNEČNÝ — není vázán na šířku sloupce ani na to, zda jde o titulek — takže zde nebylo co rozhodovat. (2) abbreviations: «a. s.» a «s. r. o.». Interakce s N3 ověřena a je opačná než u polského «i in.»: N3 vyžaduje, aby po jednopísmenném výrazu následovala mezera, a po «a» následuje tečka, takže N3 index nenárokuje a obě mezery dostane N4. «ČSN 01 6910» z výčtu vypuštěno: číslo normy není fakt o jazyce. (3) beforeWord: «tj.», «tzv.», «tzn.». Bod o «zkratce titulu» populován není, protože zdroj u něj žádný seznam neuvádí. (4) afterSymbols = [«§»]. Ze stejného citovaného bodu byly ZÁMĚRNĚ vynechány «*», «†» a «#»: řetězec «* 1921» je bajt po bajtu totožný s odrážkou seznamu následovanou číslicí, takže v režimu markdown by šlo o falešný zásah bez vyvažujícího přínosu. (5) initialBinding = «single»: pramen váže «zkratku jména» k příjmení a jeho vlastní příklady jsou Fr. Daneš a M. Těšitelová, tedy JEDNA zkrácená křestní jméno; «chain» by na ani jednom z nich nezabral a citované pravidlo by zůstalo nenaplněné. Expozici, kterou schéma u «single» samo pojmenovává, přijímáme na základě citace, stejně jako u fr. beforeNumber zůstává prázdné: jediným kandidátem je «strana 2», ale «strana» je víceznačné plnovýznamové slovo, nikoli zkratka — týž argument, jakým ru.json vylučuje «г.». Ověřeno 18. 9. 2026."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"rule": "nbsp",
|
|
79
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Značky, čísla a číslice»: «Značky se od číselné hodnoty oddělují mezerou, číslo a značka se umísťují na stejný řádek», «např. 10 ha = 10 hektarů, 3 kg = 3 kilogramy, 14 % = 14 procent», «100 kWh», «rychlost 50 km/h», «teplota 12–15 °C»; BIPM, The International System of Units (SI), 9th ed., concise summary: «A single space is always left between the number and the unit»",
|
|
80
|
+
"url": "https://prirucka.ujc.cas.cz/?id=785",
|
|
81
|
+
"note": "Rozdělení rolí jako v en-US, fi, sv, es, pt a pl: BIPM říká, které řetězce jsou značkami jednotek SI, ÚJČ říká, jaká je česká konvence. České znění je přitom silnější, než nbsp.md §2.1 od locale vyžaduje: uvádí nejen mezeru, ale i to, že «číslo a značka se umísťují na stejný řádek». PŘÍPUSTNÁ VARIANTA, zaznamenána: «V případě, že pomocí číslice a značky vyjadřujeme přídavné jméno, mezeru nevkládáme: 8km = 8kilometrový, 20% = 20procentní». Rozpor není třeba řešit: N5 existující mezeru pouze nahrazuje a nikdy ji nevkládá (nbsp.md §3.7), takže «14 %» dostane U+00A0 a «20%» zůstane nedotčeno. Jednoznakové značky vypuštěny, a pro češtinu z konkrétního důvodu, ne ze stylové opatrnosti: «s» je zároveň vyjmenovaná jednopísmenná předložka, takže ve větě «Přišel v 5 s bratrem» by se «5» svázala se «s». Ověřeno 18. 9. 2026."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"rule": "nbsp",
|
|
85
|
+
"cite": "Ústav pro jazyk český AV ČR, Internetová jazyková příručka, «Otazník»: «Stejně jako naprostá většina interpunkčních znamének se připojuje k předcházejícímu slovu (zkratce, značce) bez mezery, za ním následuje mezera»; táž příručka, «Tři tečky»: «tři tečky následující za slovem se připojují bez mezery»",
|
|
86
|
+
"url": "https://prirucka.ujc.cas.cz/?id=171",
|
|
87
|
+
"note": "Odůvodňuje prázdné beforePunctuation i narrowBeforePunctuation. Čeština před «:», «;», «!», «?» nestaví ani U+00A0, ani U+202F, a zdroj jim odstup výslovně upírá — je to zápor, ne mlčení. Q-P je tím splněno triviálně. Ověřeno 18. 9. 2026."
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"afterShortWords": [],
|
|
33
33
|
"abbreviations": ["z. B.", "d. h.", "u. a.", "u. Ä.", "z. T.", "i. d. R."],
|
|
34
34
|
"beforeUnits": ["%", "‰", "€", "°C", "km", "cm", "mm", "kg", "km/h", "kWh"],
|
|
35
|
-
"beforeNumber": ["S."],
|
|
35
|
+
"beforeNumber": ["Nr.", "S."],
|
|
36
36
|
"beforeWord": ["St."],
|
|
37
37
|
"afterSymbols": ["§", "§§"],
|
|
38
38
|
"initialBinding": "chain"
|
|
@@ -64,13 +64,18 @@
|
|
|
64
64
|
"rule": "nbsp",
|
|
65
65
|
"cite": "Schweizerische Bundeskanzlei, Schreibweisungen, Rz. 251: der Festabstand verhindert, dass Zusammengehöriges beim Zeilensprung auseinandergerissen wird — Beispiele „20 km“, „St. Gallen“, „Artikel 35“, „S. 17 f.“, „20. November“; Rz. 438: Entsprechendes gilt für die eingliedrige Abkürzung „St.“ für „Sankt“ in Ortsnamen („St. Gallen“, „St. Moritz“); Rz. 439: abschliessende Aufzählung der Begriffszeichen (Ziffern, %, ‰, Gedankenstrich, Schrägstrich, §, Währungszeichen, mathematische Zeichen, Einheitenzeichen)",
|
|
66
66
|
"url": "https://www.bk.admin.ch/dam/de/sd-web/YVHazXZRkqKn/schreibweisungen.pdf",
|
|
67
|
-
"note": "Wortlaut im PDF selbst geprüft. Für Deutschland regelt dieselbe Konstruktion die DIN 5008 (Schreib- und Gestaltungsregeln), die kostenpflichtig ist und deren Wortlaut hier nicht geprüft werden konnte; deshalb steht die schweizerische Weisung als überprüfbarer Beleg — dasselbe Vorgehen wie bei der Quelle zu Rz. 234 in diesem File. Die Übertragung auf de-DE ist insofern eine Ableitung, keine deutschlandspezifische Weisung. „S.“ ist mit „S. 17 f.“ wörtlich belegt und deckt die von docs/PLAN.md §7 geforderte Schreibung „S.“ + Zahl. „Nr.“
|
|
67
|
+
"note": "Wortlaut im PDF selbst geprüft. Für Deutschland regelt dieselbe Konstruktion die DIN 5008 (Schreib- und Gestaltungsregeln), die kostenpflichtig ist und deren Wortlaut hier nicht geprüft werden konnte; deshalb steht die schweizerische Weisung als überprüfbarer Beleg — dasselbe Vorgehen wie bei der Quelle zu Rz. 234 in diesem File. Die Übertragung auf de-DE ist insofern eine Ableitung, keine deutschlandspezifische Weisung. „S.“ ist mit „S. 17 f.“ wörtlich belegt und deckt die von docs/PLAN.md §7 geforderte Schreibung „S.“ + Zahl. „Nr.“ gehört nicht hierher, sondern zu den Abkürzungen: die Aufzählung der Begriffszeichen in Rz. 439 ist abschliessend und enthält „Nr.“ nicht (im Sachregister unter N stehen nur „NGO“, „Normen“, „Null“). Aus afterSymbols ist es deshalb ersatzlos gestrichen. In beforeNumber steht es seit Spec 1.3.0 — nicht als Zitat, sondern als vereinheitlichte Schreibung; die Begründung steht im nächsten Eintrag."
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
70
|
"rule": "hyphen",
|
|
71
71
|
"cite": "Schweizerische Bundeskanzlei, Schreibweisungen, Rz. 223 und 224: der Bindestrich wird als Ergänzungsstrich für einen eingesparten Wortteil verwendet („Papierproduktion und -handel“); mit dem geschützten Ergänzungsstrich wird verhindert, dass der Ergänzungsstrich am Zeilenende auf der oberen Zeile bleibt, während der zugehörige zweite Wortbestandteil auf die nächste Zeile rutscht",
|
|
72
72
|
"url": "https://www.bk.admin.ch/dam/de/sd-web/YVHazXZRkqKn/schreibweisungen.pdf",
|
|
73
73
|
"note": "Beleg dafür, dass die drei Listen leer bleiben. Das Deutsche kennt keine geschlossene Liste von Morphemen mit unteilbarem Bindestrich; die Trennung am Bindestrich ist zulässig. Der einzige belegte Fall eines geschützten Bindestrichs ist der Ergänzungsstrich (Rz. 224), und der ist offen: er betrifft jedes beliebige Zweitglied nach „und -“ und lässt sich als literale Wortliste nicht abbilden."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"rule": "nbsp",
|
|
77
|
+
"cite": "Keine frei prüfbare Normquelle für „Nr.“ + Zahl: DIN 5008:2020-03 ist kostenpflichtig und wurde nicht gelesen; Duden und das Amtliche Regelwerk 2024 sprechen keine Abstandsregel aus. Vereinheitlicht nach vorherrschendem Gebrauch (Operatorentscheid, 18.09.2026)",
|
|
78
|
+
"note": "Diese Zeile ist ausdrücklich kein Beleg, sondern eine Festlegung, und wird als solche geführt. Geprüft und ergebnislos: Duden, Rechtschreibregeln „Abkürzungen“ (D 1–D 4, nur der Abkürzungspunkt); Duden, Sprachratgeber „Worttrennung am Zeilenende“; Amtliches Regelwerk 2024, Kapitel F (§§ 84–90, nur Worttrennung) und der Kasten „Sonderzeichen“ auf S. 153, der Typografie ausdrücklich den Konventionen bzw. den DIN-, ÖNORM- und SNV-Normen zuweist, also ausserhalb des Regelwerks. Entscheiden könnte nur DIN 5008:2020-03. Der Projektentscheid dazu: liegt eine Regel hinter einer Bezahlschranke, formuliert polytypo sie nach dem verbreitetsten Gebrauch und hält sie in allen Runtimes gleich — Einheitlichkeit geht hier vor Kanontreue, und die Festlegung wird offen als solche gekennzeichnet statt als Zitat ausgegeben. Der verbreitetste Gebrauch bindet „Nr.“ an die folgende Zahl; die Sekundärquellen, die DIN 5008 referieren, sagen dasselbe. Fällt die Schranke, tritt der Wortlaut der Norm an die Stelle dieser Zeile — auch wenn er ihr widerspricht."
|
|
74
79
|
}
|
|
75
80
|
]
|
|
76
81
|
}
|
|
@@ -125,9 +125,9 @@
|
|
|
125
125
|
},
|
|
126
126
|
{
|
|
127
127
|
"rule": "nbsp",
|
|
128
|
-
"cite": "The Chicago Manual of Style
|
|
129
|
-
"url": "https://
|
|
130
|
-
"note": "`beforeNumber` and `beforeWord` are empty
|
|
128
|
+
"cite": "The Chicago Manual of Style Online, Q&A, topic “Word Division”: “we don’t include any recommendation that says you must carry an abbreviation that ends in a period over to the next line when the sentence continues beyond the abbreviation. So a line is allowed to end with an ‘a.m.’ or ‘Jr.’ or the like that occurs in the middle of a sentence.”",
|
|
129
|
+
"url": "https://www.chicagomanualofstyle.org/qanda/data/faq/topics/WordDivision/faq0007.html",
|
|
130
|
+
"note": "`beforeNumber` and `beforeWord` are empty, and Chicago does not merely omit reference abbreviations from its nonbreaking-space guidance — it states positively that no such rule exists, so `No. 5`, `p. 12` and `pp. 12–14` are refused on the source’s own words rather than on an argument from silence (issue #30). The same answer attributes the practice to typesetters rather than to Chicago: “some typesetters will use a nonbreaking space to prevent a compound like ‘St. Louis’ or ‘Dr. Smith’ from breaking at the end of a line” — which is why `beforeWord` stays empty too; the named exception is initials in a name, carried by `initialBinding`. CMOS Shop Talk, “Navigating Spaces in Manuscripts and Beyond” (15 June 2021), cited above for `initialBinding` and `beforeUnits`, introduces its four contexts with “can be helpful in the following contexts, among others”, so it must not be described as an exhaustive list."
|
|
131
131
|
}
|
|
132
132
|
]
|
|
133
133
|
}
|