Grammalecte  Diff

Differences From Artifact [42e8c93b4a]:

To Artifact [339e0d4e7e]:


560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
...
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
...
787
788
789
790
791
792
793

794
795
796
797
798
799
800
801
802

803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843


844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
...
872
873
874
875
876
877
878
879

880
881


882
883
884
885
886
887
888
...
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
....
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
....
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
....
2387
2388
2389
2390
2391
2392
2393











































2394
2395
2396
2397
2398
2399
2400
    ([A-Z][.][A-Z][.](?:[A-Z][.])*) +[A-ZÉÀÂÊÎÈÔ]  @@0  <<- ~1>> =\1.replace(".", "")+"."
__[s>(p_sigle2)__
    [a-zA-Z][.][a-zA-Z][.](?:[a-zA-Z][.])*
        <<- not re.search("(?i)^(?:i\\.e\\.|s\\.[tv]\\.p\\.|e\\.g\\.|a\\.k\\.a\\.|c\\.q\\.f\\.d\\.|b\\.a\\.|n\\.b\\.)$", \0) >>>
        <<- \0.__len__() == 4 ->> =\0.replace(".", "").upper() + "|" + \0[0:2] + " " + \0[2:4]
        && Sigle. Il est recommandé d’ôter les points pour les sigles. (S’il s’agit d’un prénom et d’un nom, mettez un espace.)|https://fr.wikipedia.org/wiki/Sigle#Typographie
        <<- __else__ ->> =\0.replace(".", "").upper()                                               && Sigle. Il est recommandé d’ôter les points pour les sigles.|https://fr.wikipedia.org/wiki/Sigle#Typographie
        <<- \0 != "b.a." ~>> =\0.replace(".", "_")
__[s>(p_sigle3)__
    J[.]-[A-Z][.] <<- ~>> =\0.replace(".", "").replace("-","")

# Mr et MM
__[s>(p_M_point)__
    (M[.]) (?:[A-ZÉÈÎ]\w*|l[e'’])  @@0 <<- ~1>> Mr
__[s>(p_MM_point)__
    MM[.] <<- ~>> "MM "
__[s>(p_Mr_Mgr_Mme_point)__
    M(?:r|gr|me) [A-ZÉ]([.])(?=\W+[a-zéèêâîïû]) @@$ <<- ~1>> *

# Patronyme réduit à une seule lettre
__[s](p_prénom_lettre_point_patronyme)__
................................................................................
    <<- morph(\1, ":M[12]") and (morph(\3, ":(?:M[12]|V)") or not spell(\3)) ~2>> *
__[s>(p_prénom_lettre_point)__
    ([A-ZÉÈÂÎ][\w-]+)[  ][A-ZÉÈÂ]([.]) @@0,$
    <<- morph(\1, ":M[12]") and after("^\\W+[a-zéèêîïâ]") ~2>> _

# Patronymes composés avec Le/La/Les
__[s](p_patronyme_composé_avec_le_la_les)__
    [A-ZÉÈÂÎ][\w-]+[-–—]L(?:es?|a) [A-ZÉÈÂÎ][\w-]+ <<- ~>> =\0.replace(" ", "_")

# IP
__[s](p_adresse_IP)__
    \d+[.:]\d+[.:]\d+[.:]\d+  <<- ~>> *

# Arborescence
__[s>(p_arborescence_Linux_Mac)__
................................................................................
__[i](eepi_écriture_épicène_tous_toutes)__
    tous?[.(/·•⋅–—-]te[.)/·•⋅–—-]?s
        <<- option("eepi") ->> tous et toutes|toutes et tous
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{tou.tes}} sont là.                                              ->> tous et toutes|toutes et tous



__[i](eepi_écriture_épicène_ceux_celles)__
    c[./·•⋅–—-]?eux?[./·•⋅–—-]elles
        <<- option("eepi") ->> ceux et celles|celles et ceux
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: avec {{ceux.elles}} qui viendront                                 ->> ceux et celles|celles et ceux



__[u](eepi_écriture_épicène_pluriel_eur_divers)__
    ({w_2})eurs?[.(/·•⋅–—-][tdp]?(rice|euse|se|[oe]resse)[.)/·•⋅–—-]?s  @@0,**
        <<- option("eepi") and \2 != "se" ->> \1eurs et \1\2s|\1\2s et \1eurs
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- option("eepi") and \2 == "se" ->> \1eurs et \1euses|\1euses et \1eurs
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: travaillons avec les {{instituteur.trice.s}}                          ->> instituteurs et institutrices|institutrices et instituteurs
TEST: La communauté des {{développeur·se·s}} open source                    ->> développeurs et développeuses|développeuses et développeurs


__[u](eepi_écriture_épicène_pluriel_eux_euses)__
    ({w_2})eux[.(/·•⋅–—-](?:[tdsi]?euse|se)[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") ->> \1eux et \1euses|\1euses et \1eux
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{nombreux·ses}} sont les profs qui s’indignent de cette situation.   ->> nombreux et nombreuses|nombreuses et nombreux


__[u](eepi_écriture_épicène_pluriel_if_ive)__
    ({w_2})ifs?[.(/·•⋅–—-][std]?i?ve[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") ->> \1ifs et \1ives|\1ives et \1ifs
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{inclusif.ive.s}}                                                ->> inclusifs et inclusives|inclusives et inclusifs
TEST: {{offensif.ve.s}}                                                 ->> offensifs et offensives|offensives et offensifs


__[u](eepi_écriture_épicène_pluriel_er_ère)__
    ({w_2})[eè]rs?[.(/·•⋅–—-]i?è?re[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") and not re.search("[rR]·[eE]·[sS]$", \0) ->> \1ers et \1ères|\1ères et \1ers|\1er·e·s
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: les {{conseiller.ière.s}}                                         ->> conseillers et conseillères|conseillères et conseillers|conseiller·e·s
#TEST: les {{artificièr.e.s}}                                            ->> artificiers et artificières|artificières et artificiers




__[u](eepi_écriture_épicène_pluriel_aux_ales)__
    ({w_2})aux[.(/·•⋅–—-][tnmcpbd]?a?le[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") ->> \1al·e·s|\1aux et \1ales|\1ales et \1aux
        && Écriture épicène dystypographique et imprononçable. Pour ce cas, il peut être intéressant de faire comme si le pluriel masculin était régulier, ce qui rend l’ensemble prononçable…
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{locaux·ales}}                                                   ->> local·e·s|locaux et locales|locales et locaux
TEST: LOCAL·E·S
TEST: amical·e·s


__[u](eepi_écriture_épicène_pluriel_e)__
    ({w_1}[éuitsrnldf])[-·–—.•⋅(/]([ntlf]?e)[-·–—.•⋅)/]?s  @@0,**
        <<- not (\0.endswith(".Les") or \0.endswith(".Tes")) >>>
        <<- ~>> =normalizeInclusiveWriting(\0)
        <<- option("eepi") and not \0.endswith("les") and not \0.endswith("LES") and not re.search("(?i)·[ntlf]?e·s$", \0) >>>
        <<- \1.endswith("s") or \1.endswith("S") ->> \1·\2·s|\1 et \1\2s|\1\2s et \1                && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.
        <<- __else__ ->> \1·\2·s|\1s et \1\2s|\1\2s et \1s                                          && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.

TEST: nous sommes {{déconsidéré-e-s}}.
TEST: serons-nous toujours {{perdu.e.s}}.
TEST: les illustres {{inconnu(e)s}}.
TEST: la situation des {{salarié/e/s}}.
................................................................................
TEST: la graphie “{{militant(e)s}}”.
TEST: ces militant·e·s {{acharné}}.
TEST: chez les {{immortel.le.s}}
TEST: Nous sommes {{tombé.es}} par hasard
TEST: Nous avons été {{révolté.es}} de cette novlangue politique
TEST: Pour survivre, nous sommes {{devenu.es}} des archéologues.
TEST: {{enthousiasmé.es}} par un tri collectif de noix
TEST: IMMORTEL·LE·S

TEST: Berlinois·e·s
TEST: Iranien·ne·s




__[i](eepi_écriture_épicène_singulier)__
    ({w_1}[éuitsrnldf])([-·–—.•⋅/][ntl]?e|[(][ntl]?e[)])  @@0,$
        <<- not (\0.endswith(".Le") or \0.endswith(".Ne") or \0.endswith(".De"))
            and not ((\0.endswith("-le") or \0.endswith("-Le") or \0.endswith("-LE")) and not (\1.endswith("l") or \1.endswith("L"))) >>>
        <<- ~>> =normalizeInclusiveWriting(\0)
................................................................................

TEST: je suis {{déconsidéré.e}} par ma hiérarchie.                      ->> déconsidéré·e
TEST: il faut en parler à l’{{auteur(e)}} et à son agent.               ->> auteur·e
TEST: le ou la {{patron/ne}}                                            ->> patron·ne
TEST: Totalement {{con(ne)}}                                            ->> con·ne
TEST: un ou une {{intellectuel.le}}                                     ->> intellectuel·le
TEST: {{un/e}} immortel·le                                              ->> un·e|un ou une|une ou un
TEST: INTELLECTUEL·LE
TEST: électricien·ne
TEST: Épuisé·e
TEST: un·e idiot·e


__[i](typo_écriture_invariable)__
    ({w_3})([-·–—.•⋅/]s|[(]s[)])  @@0,$
        <<- ~>> =normalizeInclusiveWriting(\0)
        <<- option("typo") and option("eepi") and not \0.endswith("·s") and not (\0.endswith("/s") and morph(\1, ";S"))
        ->> \1·s                                                                                    && Écriture invariable. Utilisez un point médian.

TEST: la ou les {{fille(s)}}                                            ->> fille·s
TEST: le ou les patron·s
TEST: combien de rad/s



!!
!!
!!!! Majuscules manquantes                                                                        !!
!!
!!
................................................................................
TEST: __ocr__ il le jura sur {{1a}} tête de sa mère
TEST: __ocr__ {{1c}} chat du voinsin est idiot
TEST: __ocr__ {{[e}} chien a faim


__[i]/conf(conf_1e_1a_1es)__
    [1[\]][ea]s?
        <<- \0.endswith("e") and (morph(word(1), ":(?:N.*:[me]:[si]|V)", ":G") or morph(word(-1), ">ne/")) ->> le       && Erreur de frappe ?
        <<- \0.endswith("a") and (morph(word(1), ":(?:N.*:[fe]:[si]|V)", ":G") or morph(word(-1), ">ne/")) ->> la       && Erreur de frappe ?
        <<- \0.endswith("es") and (morph(word(1), ":(?:N.*:[pi]|V)", ":G") or morph(word(-1), ">ne/")) ->> les          && Erreur de frappe ?

TEST: {{1e}} marginal                                           ->> le
TEST: {{1a}} venue des problèmes                                ->> la
TEST: {{1es}} enfants sont au lit                               ->> les
TEST: Je… ne {{1e}}… crois pas…


................................................................................
__[s]/num(num_lettre_O_zéro1)__  [\dO]+[O][\dO]+ <<- not option("ocr") ->> =\0.replace("O", "0")    && S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ».
__[s]/num(num_lettre_O_zéro2)__  [1-9]O <<- not option("ocr") ->> =\0.replace("O", "0")             && S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ».

TEST: année {{2O11}}                                                      ->> 2011
TEST: {{3O}} (chiffre avec un O).                                         ->> 30


!!!! Écritures épicènes invariables                                                               !!

__[i](d_eepi_écriture_épicène_pluriel)__
    ({w_1}[éuitsrn])_(?:[nt]|)e_s  @@0
        <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, ":N:A:Q:e:p")

__[i](d_eepi_écriture_épicène_singulier)__
    ({w_2}[éuitsrn])_e  @@0
        <<- morph(\1, ":[NAQ]") =>> define(\1, ":N:A:Q:e:s")


!!!! Purge des références aux notes                                                               !!

# les références aux notes
__<s>(p_exposants)__
    [¹²³⁴⁵⁶⁷⁸⁹⁰]+
        <<- ~>> *
................................................................................
        <<- ~2:0>> ␣
        <<- =>> define(\2, ":MP:e:s")

    ~^[A-ZÀÂÉÈÊÎÔ]. Airways
        <<- ~>> ␣
        <<- =>> define(\2, ":MP:e:i")













































__immunités__
    il y a
    il n’ y a
        <<- !-1>>

    à l’ arrache







|





|







 







|







 







>









>


|











|








|









|
|
|



|
|
>
>


|






|
|


|
|


|







 







|
>
|
|
>
>







 







|
|
|












<







 







|
|
|







 







<
<
<
<
<
<
<
<
<
<







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
...
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
...
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
...
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
...
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919

920
921
922
923
924
925
926
....
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
....
1606
1607
1608
1609
1610
1611
1612










1613
1614
1615
1616
1617
1618
1619
....
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
    ([A-Z][.][A-Z][.](?:[A-Z][.])*) +[A-ZÉÀÂÊÎÈÔ]  @@0  <<- ~1>> =\1.replace(".", "")+"."
__[s>(p_sigle2)__
    [a-zA-Z][.][a-zA-Z][.](?:[a-zA-Z][.])*
        <<- not re.search("(?i)^(?:i\\.e\\.|s\\.[tv]\\.p\\.|e\\.g\\.|a\\.k\\.a\\.|c\\.q\\.f\\.d\\.|b\\.a\\.|n\\.b\\.)$", \0) >>>
        <<- \0.__len__() == 4 ->> =\0.replace(".", "").upper() + "|" + \0[0:2] + " " + \0[2:4]
        && Sigle. Il est recommandé d’ôter les points pour les sigles. (S’il s’agit d’un prénom et d’un nom, mettez un espace.)|https://fr.wikipedia.org/wiki/Sigle#Typographie
        <<- __else__ ->> =\0.replace(".", "").upper()                                               && Sigle. Il est recommandé d’ôter les points pour les sigles.|https://fr.wikipedia.org/wiki/Sigle#Typographie
        <<- \0 != "b.a." ~>> =\0.replace(".", "-")
__[s>(p_sigle3)__
    J[.]-[A-Z][.] <<- ~>> =\0.replace(".", "").replace("-","")

# Mr et MM
__[s>(p_M_point)__
    (M[.]) (?:[A-ZÉÈÎ]\w*|l[ae'’])  @@0 <<- ~1>> Mr
__[s>(p_MM_point)__
    MM[.] <<- ~>> "MM "
__[s>(p_Mr_Mgr_Mme_point)__
    M(?:r|gr|me) [A-ZÉ]([.])(?=\W+[a-zéèêâîïû]) @@$ <<- ~1>> *

# Patronyme réduit à une seule lettre
__[s](p_prénom_lettre_point_patronyme)__
................................................................................
    <<- morph(\1, ":M[12]") and (morph(\3, ":(?:M[12]|V)") or not spell(\3)) ~2>> *
__[s>(p_prénom_lettre_point)__
    ([A-ZÉÈÂÎ][\w-]+)[  ][A-ZÉÈÂ]([.]) @@0,$
    <<- morph(\1, ":M[12]") and after("^\\W+[a-zéèêîïâ]") ~2>> _

# Patronymes composés avec Le/La/Les
__[s](p_patronyme_composé_avec_le_la_les)__
    [A-ZÉÈÂÎ][\w-]+[-–—]L(?:es?|a) [A-ZÉÈÂÎ][\w-]+ <<- ~>> =\0.replace(" ", "-")

# IP
__[s](p_adresse_IP)__
    \d+[.:]\d+[.:]\d+[.:]\d+  <<- ~>> *

# Arborescence
__[s>(p_arborescence_Linux_Mac)__
................................................................................
__[i](eepi_écriture_épicène_tous_toutes)__
    tous?[.(/·•⋅–—-]te[.)/·•⋅–—-]?s
        <<- option("eepi") ->> tous et toutes|toutes et tous
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{tou.tes}} sont là.                                              ->> tous et toutes|toutes et tous
TEST: {{tou·tes}} sont là.                                              ->> tous et toutes|toutes et tous


__[i](eepi_écriture_épicène_ceux_celles)__
    c[./·•⋅–—-]?eux?[./·•⋅–—-]elles
        <<- option("eepi") ->> ceux et celles|celles et ceux
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: avec {{ceux.elles}} qui viendront                                 ->> ceux et celles|celles et ceux
TEST: {{c·eux·elles}}                                                   ->> ceux et celles|celles et ceux


__[i](eepi_écriture_épicène_pluriel_eur_divers)__
    ({w_2})eurs?[.(/·•⋅–—-][tdp]?(rice|euse|se|[oe]resse)[.)/·•⋅–—-]?s  @@0,**
        <<- option("eepi") and \2 != "se" ->> \1eurs et \1\2s|\1\2s et \1eurs
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- option("eepi") and \2 == "se" ->> \1eurs et \1euses|\1euses et \1eurs
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: travaillons avec les {{instituteur.trice.s}}                          ->> instituteurs et institutrices|institutrices et instituteurs
TEST: La communauté des {{développeur·se·s}} open source                    ->> développeurs et développeuses|développeuses et développeurs


__[i](eepi_écriture_épicène_pluriel_eux_euses)__
    ({w_2})eux[.(/·•⋅–—-](?:[tdsi]?euse|se)[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") ->> \1eux et \1euses|\1euses et \1eux
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{nombreux·ses}} sont les profs qui s’indignent de cette situation.   ->> nombreux et nombreuses|nombreuses et nombreux


__[i](eepi_écriture_épicène_pluriel_if_ive)__
    ({w_2})ifs?[.(/·•⋅–—-][std]?i?ve[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") ->> \1ifs et \1ives|\1ives et \1ifs
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{inclusif.ive.s}}                                                ->> inclusifs et inclusives|inclusives et inclusifs
TEST: {{offensif.ve.s}}                                                 ->> offensifs et offensives|offensives et offensifs


__[i](eepi_écriture_épicène_pluriel_er_ère)__
    ({w_2})[eè]rs?[.(/·•⋅–—-](?:i?è?re|e)[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") and not re.search("[eE][rR]·[eE]·[sS]$", \0) ->> \1er·e·s|\1ers et \1ères|\1ères et \1ers
        && Écriture épicène dystypographique et imprononçable. À des fins de lisibilité, il est préférable d’éviter l’abus de graphies épicènes trop complexes.
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: les {{conseiller.ière.s}}                                         ->> conseiller·e·s|conseillers et conseillères|conseillères et conseillers
TEST: les {{artificièr.e.s}}                                            ->> artificier·e·s|artificiers et artificières|artificières et artificiers
TEST: les {{artificièr·e·s}}                                            ->> artificier·e·s|artificiers et artificières|artificières et artificiers
TEST: les artificier·e·s


__[i](eepi_écriture_épicène_pluriel_aux_ales)__
    ({w_2})aux[.(/·•⋅–—-][tnmcpbd]?a?le[.)/·•⋅–—-]?s  @@0
        <<- option("eepi") ->> \1al·e·s|\1aux et \1ales|\1ales et \1aux
        && Écriture épicène dystypographique et imprononçable. Pour ce cas, il peut être intéressant de faire comme si le pluriel masculin était régulier, ce qui rend l’ensemble prononçable…
        <<- ~>> =normalizeInclusiveWriting(\0)

TEST: {{locaux·ales}}                                                   ->> local·e·s|locaux et locales|locales et locaux
TEST: NOUS SOMMES LOCAL·E·S
TEST: nous sommes amical·e·s


__[i](eepi_écriture_épicène_pluriel_e)__
    ({w_1}[éuitsnldf])[-·–—.•⋅(/]([ntlf]?e)[-·–—.•⋅)/]?s  @@0,**
        <<- not (\0.endswith(".Les") or \0.endswith(".Tes")) >>>
        <<- ~>> =normalizeInclusiveWriting(\0)
        <<- option("eepi") and not \0.endswith("les") and not \0.endswith("LES") and not re.search("·[ntlfNTLF]?[eE]·[sS]$", \0) >>>
        <<- \1.endswith("s") or \1.endswith("S") ->> \1·\2·s|\1 et \1\2s|\1\2s et \1                && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.
        <<- __else__ ->> \1·\2·s|\1s et \1\2s|\1\2s et \1s                                          && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.

TEST: nous sommes {{déconsidéré-e-s}}.
TEST: serons-nous toujours {{perdu.e.s}}.
TEST: les illustres {{inconnu(e)s}}.
TEST: la situation des {{salarié/e/s}}.
................................................................................
TEST: la graphie “{{militant(e)s}}”.
TEST: ces militant·e·s {{acharné}}.
TEST: chez les {{immortel.le.s}}
TEST: Nous sommes {{tombé.es}} par hasard
TEST: Nous avons été {{révolté.es}} de cette novlangue politique
TEST: Pour survivre, nous sommes {{devenu.es}} des archéologues.
TEST: {{enthousiasmé.es}} par un tri collectif de noix
TEST: LES IMMORTEL·LE·S
TEST: les mortel·le·s
TEST: des Berlinois·e·s
TEST: les Iranien·ne·s
TEST: les chef·fe·s
TEST: nos descendant·e·s


__[i](eepi_écriture_épicène_singulier)__
    ({w_1}[éuitsrnldf])([-·–—.•⋅/][ntl]?e|[(][ntl]?e[)])  @@0,$
        <<- not (\0.endswith(".Le") or \0.endswith(".Ne") or \0.endswith(".De"))
            and not ((\0.endswith("-le") or \0.endswith("-Le") or \0.endswith("-LE")) and not (\1.endswith("l") or \1.endswith("L"))) >>>
        <<- ~>> =normalizeInclusiveWriting(\0)
................................................................................

TEST: je suis {{déconsidéré.e}} par ma hiérarchie.                      ->> déconsidéré·e
TEST: il faut en parler à l’{{auteur(e)}} et à son agent.               ->> auteur·e
TEST: le ou la {{patron/ne}}                                            ->> patron·ne
TEST: Totalement {{con(ne)}}                                            ->> con·ne
TEST: un ou une {{intellectuel.le}}                                     ->> intellectuel·le
TEST: {{un/e}} immortel·le                                              ->> un·e|un ou une|une ou un
TEST: UN OU UNE INTELLECTUEL·LE
TEST: un ou une électricien·ne
TEST: femme ou homme épuisé·e
TEST: un·e idiot·e


__[i](typo_écriture_invariable)__
    ({w_3})([-·–—.•⋅/]s|[(]s[)])  @@0,$
        <<- ~>> =normalizeInclusiveWriting(\0)
        <<- option("typo") and option("eepi") and not \0.endswith("·s") and not (\0.endswith("/s") and morph(\1, ";S"))
        ->> \1·s                                                                                    && Écriture invariable. Utilisez un point médian.

TEST: la ou les {{fille(s)}}                                            ->> fille·s
TEST: le ou les patron·s
TEST: combien de rad/s



!!
!!
!!!! Majuscules manquantes                                                                        !!
!!
!!
................................................................................
TEST: __ocr__ il le jura sur {{1a}} tête de sa mère
TEST: __ocr__ {{1c}} chat du voinsin est idiot
TEST: __ocr__ {{[e}} chien a faim


__[i]/conf(conf_1e_1a_1es)__
    [1[\]][ea]s?
        <<- \0.endswith("e") and (morph(word(1), ":(?:[NA].*:[me]:[si]|V)", ":G") or morph(word(-1), ">ne/")) ->> le       && Erreur de frappe ?
        <<- \0.endswith("a") and (morph(word(1), ":(?:[NA].*:[fe]:[si]|V)", ":G") or morph(word(-1), ">ne/")) ->> la       && Erreur de frappe ?
        <<- \0.endswith("es") and (morph(word(1), ":(?:[NA].*:[pi]|V)", ":G") or morph(word(-1), ">ne/")) ->> les          && Erreur de frappe ?

TEST: {{1e}} marginal                                           ->> le
TEST: {{1a}} venue des problèmes                                ->> la
TEST: {{1es}} enfants sont au lit                               ->> les
TEST: Je… ne {{1e}}… crois pas…


................................................................................
__[s]/num(num_lettre_O_zéro1)__  [\dO]+[O][\dO]+ <<- not option("ocr") ->> =\0.replace("O", "0")    && S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ».
__[s]/num(num_lettre_O_zéro2)__  [1-9]O <<- not option("ocr") ->> =\0.replace("O", "0")             && S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ».

TEST: année {{2O11}}                                                      ->> 2011
TEST: {{3O}} (chiffre avec un O).                                         ->> 30













!!!! Purge des références aux notes                                                               !!

# les références aux notes
__<s>(p_exposants)__
    [¹²³⁴⁵⁶⁷⁸⁹⁰]+
        <<- ~>> *
................................................................................
        <<- ~2:0>> ␣
        <<- =>> define(\2, ":MP:e:s")

    ~^[A-ZÀÂÉÈÊÎÔ]. Airways
        <<- ~>> ␣
        <<- =>> define(\2, ":MP:e:i")


__écritures_épicènes_invariables__
    [tous|tou]  ·  tes
    [tous|tou]  ·  te  ·  s
        <<- ~>> ␣

    c · [eu|eux]  ·  [elles|celles]
    [ceu|ceux]  ·  [elles|celles]
        <<- ~>> ␣

    *WORD  ·  e  ·  s
    *WORD  ·  [ce|rice|drice|price|trice]   ·  s
    *WORD  ·  [fe|ffe] ·  s
    *WORD  ·  [le|ale|bale|cale|dale|male|nale|pale|tale]  ·  s
    *WORD  ·  [ne|ane|ène|ine|nne|enne]  ·  s
    *WORD  ·  [ire|ière|ère|re]  ·  s
    *WORD  ·  [se|euse|ieuse|deuse|peuse|teuse]  ·  s
    *WORD  ·  [eresse|oresse] ·  s
    *WORD  ·  [ve|ive|dive|sive|tive]  ·  s
    *WORD  ·  [te|ate|ète|ite|tte] ·  s
    *WORD  ·  es
    *WORD  ·  [ces|rices|drices|prices|trices]
    *WORD  ·  [fes|ffes]
    *WORD  ·  [les|ales|bales|cales|dales|males|nales|pales|tales]
    *WORD  ·  [nes|anes|ènes|ines|nnes|ennes]
    *WORD  ·  [res|ires|ières|ères]
    *WORD  ·  [ses|euses|ieuses|deuses|peuses|teuses]
    *WORD  ·  [eresses|oresses]
    *WORD  ·  [ves|ives|dives|sives|tives]
    *WORD  ·  [tes|ates|ètes|ites|ttes]
        <<- ~>> ␣
        <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, ":N:A:Q:e:p")

    *WORD  ·  [e|fe|le|ne|se|te]
        <<- not value(>1, "|·|") >>>
        <<- ~>> ␣
        <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, ":N:A:Q:e:s")

    *WORD  ·  s
        <<- not value(<1, "|·|") >>>
        <<- ~>> ␣
        <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, ":N:A:Q:e:p")


__immunités__
    il y a
    il n’ y a
        <<- !-1>>

    à l’ arrache