Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1119,14 +1119,17 @@ TEST: Mouais{{, ;}} TEST: Vraiment, bof {{;;}} on ne sait guère qu’en penser. TEST: Raisons {{:.}} trop, c’est trop. -#__> ℃ && Typographie. Utilisez le signe des degrés approprié. +!! +!! +!!!! Espaces insécables !! +!! +!! -# Espaces insécables __/nbsp(nbsp_ajout_avant_double_ponctuation)__ \b[?!;] <<- sCountry != "CA" ->> =" "+\0 && Il manque un espace insécable. __/nbsp(nbsp_avant_double_ponctuation)__ " ([?!;])" @@1 <<- ->> " \1" && Il manque un espace insécable. __/nbsp(nbsp_avant_deux_points)__ @@ -1151,10 +1154,52 @@ TEST: Voyelles:{{a}}. ->> " a" TEST: Succession : a{{;}} b. ->> " ;" TEST: C’est assez {{: }}parlez ! ->> ": " TEST: {{» }}C’est ce qu’on croit savoir. ->> "» |« " + +__[s]/unit(unit_nbsp_avant_unités1)__ + ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)([kcmµn]?(?:[slgJKVΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|px|MHz|°C|℃)(?![’']) @@0,0,$ + <<- option("num") ->> =formatNumber(\2) + " " + \3 && Avec une unité de mesure, mettez un espace insécable. + <<- __else__ ->> "\2 \3" && Avec une unité de mesure, mettez un espace insécable. + +__[s]/unit(unit_nbsp_avant_unités2)__ + ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])) ?)([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*) @@0,0,$ + <<- morph(\3, ";S", ":[VCR]") or mbUnit(\3) or not spell(\3) >>> + <<- option("num") ->> =formatNumber(\2) + " " + \3 && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. + <<- __else__ ->> "\2 \3" && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. + +__[s]/unit(unit_nbsp_avant_unités3)__ + ((\d+) )([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)(?![’']) @@0,0,$ + <<- (\2.__len__() > 4 and not spell(\3)) or morph(\3, ";S", ":[VCR]") or mbUnit(\3) >>> + <<- option("num") ->> =formatNumber(\2) + " " + \3 && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. + <<- __else__ ->> "\2 \3" && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. + +TEST: Ça a duré {{3µs}} ->> 3 µs +TEST: Ça a duré {{3,5 µs}} ->> 3,5 µs +TEST: il y en a {{3 m²}} ->> 3 m² +TEST: il a fait {{10%}} ->> 10 % +TEST: Ça coûte {{13,4¥}}. ->> 13,4 ¥ +TEST: il mesure {{30,3 cm}} ->> 30,3 cm +TEST: il est monté à {{18 %}} ->> 18 % +TEST: une température de {{22,4 °C}} ->> 22,4 °C +TEST: il en veut {{18kg}} ->> 18 kg +TEST: il me le propose pour {{243 gCO2/kWh}} ->> 243 gCO2/kWh +TEST: il me le propose pour {{243,4 gCO2/kWh}} ->> 243,4 gCO2/kWh +TEST: en l’an 2000 Urgondorletroll eut une idée +TEST: 1998 s’annonce grandiose. +TEST: il y en a 3,43 milliards. +TEST: je veux 200 euros. + + +__[s]/nbsp(nbsp_math)__ + (?:cos|sin|tan|cotan)²? [2-9]?[a-zA-Zα-ωΑ-Ω] + <<- ->> =\0.replace(" ", " ")+"|"+\0.replace(" ", "(")+")" && Mettez un espace insécable ou, plus strictement, des parenthèses. + +TEST: {{cos ω}} ->> cos ω|cos(ω) +TEST: {{sin γ}} ->> sin γ|sin(γ) + !! !! !!!! Tirets !! !! @@ -1212,10 +1257,12 @@ __/liga(ligatures_typographiques)__ [fiflffffifflſtst] <<- ->> =undoLigature(\0) && Suppression de la ligature typographique. TEST: __liga__ un {{fl}}ottement ->> fl TEST: __liga__ une belle {{fi}}gure ->> fi + +#__> ℃ && Typographie. Utilisez le signe des degrés approprié. !! !! !!!! Divers !! @@ -1287,50 +1334,10 @@ TEST: « Je suis là. TEST: — Oui, nous t’avons vu arriver. » TEST: « J’en suis “malade”. » - -!! -!! -!!!! Espaces insécables avant unités de mesure !! -!! -!! - -__[s]/unit(unit_nbsp_avant_unités1)__ - ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)([kcmµn]?(?:[slgJKVΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|px|MHz|°C|℃)(?![’']) @@0,0,$ - <<- option("num") ->> =formatNumber(\2) + " " + \3 && Avec une unité de mesure, mettez un espace insécable. - <<- __else__ ->> "\2 \3" && Avec une unité de mesure, mettez un espace insécable. - -__[s]/unit(unit_nbsp_avant_unités2)__ - ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])) ?)([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*) @@0,0,$ - <<- morph(\3, ";S", ":[VCR]") or mbUnit(\3) or not spell(\3) >>> - <<- option("num") ->> =formatNumber(\2) + " " + \3 && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. - <<- __else__ ->> "\2 \3" && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. - -__[s]/unit(unit_nbsp_avant_unités3)__ - ((\d+) )([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)(?![’']) @@0,0,$ - <<- (\2.__len__() > 4 and not spell(\3)) or morph(\3, ";S", ":[VCR]") or mbUnit(\3) >>> - <<- option("num") ->> =formatNumber(\2) + " " + \3 && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. - <<- __else__ ->> "\2 \3" && Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. - -TEST: Ça a duré {{3µs}} ->> 3 µs -TEST: Ça a duré {{3,5 µs}} ->> 3,5 µs -TEST: il y en a {{3 m²}} ->> 3 m² -TEST: il a fait {{10%}} ->> 10 % -TEST: Ça coûte {{13,4¥}}. ->> 13,4 ¥ -TEST: il mesure {{30,3 cm}} ->> 30,3 cm -TEST: il est monté à {{18 %}} ->> 18 % -TEST: une température de {{22,4 °C}} ->> 22,4 °C -TEST: il en veut {{18kg}} ->> 18 kg -TEST: il me le propose pour {{243 gCO2/kWh}} ->> 243 gCO2/kWh -TEST: il me le propose pour {{243,4 gCO2/kWh}} ->> 243,4 gCO2/kWh -TEST: en l’an 2000 Urgondorletroll eut une idée -TEST: 1998 s’annonce grandiose. -TEST: il y en a 3,43 milliards. -TEST: je veux 200 euros. - !! !! !!!! Grands nombres !! !!