Grammalecte  Check-in [3c68a92318]

Overview
Comment:[build][fr] bookmark update
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr | build
Files: files | file ages | folders
SHA3-256: 3c68a9231803fdd96c0f4aa827d0f33f383abc2861be196ca4f1b6c7c8314d08
User & Date: olr on 2018-06-25 08:26:56
Other Links: manifest | tags
Context
2018-06-29
09:40
[fr] apostrophe u02BC considérée incorrecte, quoique semblable à u2019 check-in: 376d39455e user: olr tags: fr, trunk
2018-06-25
08:26
[build][fr] bookmark update check-in: 3c68a92318 user: olr tags: build, fr, trunk
07:58
[fr] faux positif: en tant que président du conseil (trailing spaces automatically removed) check-in: 37fb199673 user: olr tags: fr, trunk
Changes

Modified compile_rules.py from [1ea2b6d97a] to [e584887b25].

   145    145       #### REGEX TRIGGER
   146    146       i = s.find(" <<-")
   147    147       if i == -1:
   148    148           print("# Error: no condition at line " + sLineId)
   149    149           return None
   150    150       sRegex = s[:i].strip()
   151    151       s = s[i+4:]
   152         -    
          152  +
   153    153       # JS groups positioning codes
   154    154       m = re.search("@@\\S+", sRegex)
   155    155       if m:
   156    156           tGroups = jsconv.groupsPositioningCodeToList(sRegex[m.start()+2:])
   157    157           sRegex = sRegex[:m.start()].strip()
   158    158       # JS regex
   159    159       m = re.search("<js>.+</js>i?", sRegex)
................................................................................
   251    251       else:
   252    252           sCondition = None
   253    253   
   254    254       #### iGroup / positioning
   255    255       iGroup = int(m.group(2)) if m.group(2) else 0
   256    256       if iGroup > nGroup:
   257    257           print("# Selected group > group number in regex at line " + sIdAction)
   258         -    
          258  +
   259    259       #### ACTION
   260    260       sAction = sAction[m.end():].strip()
   261    261       cAction = m.group(1)
   262    262       if cAction == "-":
   263    263           ## error
   264    264           iMsg = sAction.find(" # ")
   265    265           if iMsg == -1:
................................................................................
   283    283                   sMsg = "=m_"+sIdAction
   284    284               else:
   285    285                   for x in re.finditer(r"\\(\d+)", sMsg):
   286    286                       if int(x.group(1)) > nGroup:
   287    287                           print("# Error in groups in message at line " + sIdAction + " ("+str(nGroup)+" groups only)")
   288    288                   if re.search("[.]\\w+[(]", sMsg):
   289    289                       print("# Error in message at line " + sIdAction + ":  This message looks like code. Line should begin with =")
   290         -            
          290  +
   291    291       if sAction[0:1] == "=" or cAction == "=":
   292    292           if "define" in sAction and not re.search(r"define\(\\\d+ *, *\[.*\] *\)", sAction):
   293    293               print("# Error in action at line " + sIdAction + ": second argument for define must be a list of strings")
   294    294           sAction = prepareFunction(sAction)
   295    295           sAction = sAction.replace("m.group(i[4])", "m.group("+str(iGroup)+")")
   296    296           for x in re.finditer("group[(](\d+)[)]", sAction):
   297    297               if int(x.group(1)) > nGroup:
................................................................................
   467    467               lOpt.append(sLine)
   468    468           elif re.match("[  \t]*$", sLine):
   469    469               pass
   470    470           elif sLine.startswith("!!"):
   471    471               m = zBookmark.search(sLine)
   472    472               nExMk = len(m.group(0))
   473    473               if sLine[nExMk:].strip():
   474         -                printBookmark(nExMk-2, sLine[nExMk:].strip(), i)
          474  +                printBookmark(nExMk-2, sLine[nExMk:-3].strip(), i)
   475    475           elif sLine.startswith(("    ", "\t")):
   476    476               lRuleLine[len(lRuleLine)-1][1] += " " + sLine.strip()
   477    477           else:
   478    478               lRuleLine.append([i, sLine.strip()])
   479    479   
   480    480       # generating options files
   481    481       print("  parsing options...")

Modified gc_lang/fr/rules.grx from [61fedd664d] to [78fc0fd23f].

    45     45   
    46     46   # ERREURS COURANTES
    47     47   # http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes
    48     48   
    49     49   
    50     50   !!
    51     51   !!
    52         -!! Options
           52  +!! Options                                                                                        !!
    53     53   !!
    54     54   !!
    55     55   
    56     56   OPTGROUP/basic: typo apos, esp tab, nbsp unit, tu maj, num virg, nf chim, ocr mapos, liga
    57     57   OPTGROUP/gramm: conf sgpl gn
    58     58   OPTGROUP/verbs: infi conj ppas, imp inte vmode
    59     59   OPTGROUP/style: bs pleo, redon1 redon2, neg
................................................................................
   196    196   OPTLABEL/debug:     Debug
   197    197   OPTLABEL/idrule:    Display control rule identifier [!]|Display control rule identifier in the context menu message.
   198    198   
   199    199   
   200    200   
   201    201   !!
   202    202   !!
   203         -!! Définitions pour les regex
          203  +!! Définitions pour les regex                                                                     !!
   204    204   !!
   205    205   !!
   206    206   
   207    207   DEF: avoir          [aeo]\w*
   208    208   DEF: etre           [êeésf]\w+
   209    209   DEF: avoir_etre     [aeêésfo]\w*
   210    210   DEF: aller          (?:ai?ll|v[ao]|ir[aio])\w*
................................................................................
   238    238   !!
   239    239   !!
   240    240   !!
   241    241   !!
   242    242   !!
   243    243   !!
   244    244   !!
   245         -!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE
   246         -!!
   247         -!!
   248         -!!
   249         -!!
   250         -!!
   251         -!!
   252         -!!
   253         -!!
   254         -!!
   255         -!!
   256         -!!
   257         -!!
   258         -!!
   259         -!!
   260         -!!
   261         -!!
   262         -!!
   263         -!!
   264         -!!
   265         -!!
   266         -
   267         -
   268         -
   269         -!!
   270         -!!
   271         -!!! Espaces & tabulations
          245  +!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE                                                             !!
          246  +!!
          247  +!!
          248  +!!
          249  +!!
          250  +!!
          251  +!!
          252  +!!
          253  +!!
          254  +!!
          255  +!!
          256  +!!
          257  +!!
          258  +!!
          259  +!!
          260  +!!
          261  +!!
          262  +!!
          263  +!!
          264  +!!
          265  +!!
          266  +
          267  +
          268  +
          269  +!!
          270  +!!
          271  +!!! Espaces & tabulations                                                                         !!
   272    272   !!
   273    273   !!
   274    274   
   275    275   # Espaces surnuméraires
   276    276   # Note : les tabulations ne sont pas soulignées dans LibreOffice. Mais l’erreur est bien présente.
   277    277   __<s>/tab(tab_début_ligne)__           ^[      ]+ <<- ->> ""                   # Espace(s) en début de ligne à supprimer : utilisez les retraits de paragraphe.
   278    278   __<s>/tab(tab_fin_ligne)__             [       ]+$ <<- ->> ""                  # Espace(s) en fin de ligne à supprimer.
................................................................................
   373    373   # À partir d’ici, toute règle est susceptible de supprimer des caractères et les remplacer par des espaces ou des chaînes de longueur égale.
   374    374   #
   375    375   #
   376    376   
   377    377   
   378    378   !!!
   379    379   !!!
   380         -!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.)
          380  +!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.)    !!
   381    381   !!!
   382    382   !!!
   383    383   
   384    384   # e-mail
   385    385   __<i>(p_email)__
   386    386       \w[\w.-]*@\w[\w.-]*\w[.]\w+ <<- ~>> *
   387    387   
................................................................................
   522    522   TEST: Dossier C:\Program Files (x86)\LibreOffice
   523    523   TEST: [1] Dossier à revoir.
   524    524   
   525    525   
   526    526   
   527    527   !!!
   528    528   !!!
   529         -!!! Processeur: balises HTML et LaTeX
          529  +!!! Processeur: balises HTML et LaTeX                                                             !!
   530    530   !!!
   531    531   !!!
   532    532   
   533    533   # HTML
   534    534   __<i>/html(p_html_amp_xxx)__            &amp;[a-zA-Z]+; <<- ~>> _
   535    535   __<i>/html(p_html_lt)__                 &lt; <<- ~>> "   <"
   536    536   __<i>/html(p_html_gt)__                 &gt; <<- ~>> >
................................................................................
   550    550   TEST: __html__  des <b>{{homme}}</b>
   551    551   TEST: __html__  des [b]{{femme}}[/b]
   552    552   
   553    553   
   554    554   
   555    555   !!
   556    556   !!
   557         -!!!! Écritures épicènes dystypographiques
          557  +!!!! Écritures épicènes dystypographiques                                                         !!
   558    558   !!
   559    559   !!
   560    560   
   561    561   # (attention aux modifs: brainfuck d’intensité non négligeable)
   562    562   # La désambiguïsation est faite lors de la deuxième passe
   563    563   
   564    564   __[i](typo_écriture_épicène_tous_toutes)__
................................................................................
   649    649   
   650    650   TEST: je suis {{déconsidéré.e}} par ma hiérarchie.
   651    651   TEST: il faut en parler à l’{{auteur(e)}} et à son agent.
   652    652   
   653    653   
   654    654   !!
   655    655   !!
   656         -!!!! Majuscules manquantes
          656  +!!!! Majuscules manquantes                                                                        !!
   657    657   !!
   658    658   !!
   659    659   
   660    660   # Majuscules après un point
   661    661   __[s]/maj(majuscule_après_point)__
   662    662       ({w_2})[.] ([a-zéàèîçô]\w*)  @@0,$
   663    663       <<- not re.search("(?i)^(?:etc|[A-Z]|chap|cf|fig|hab|litt|circ|coll|r[eé]f|étym|suppl|bibl|bibliogr|cit|op|vol|déc|nov|oct|janv|juil|avr|sept)$", \1)
................................................................................
   672    672       <<- after("\w\w[.] +\w+") -1>> =\1.capitalize()                                                 # Majuscule en début de phrase, sauf éventuellement lors d’une énumération.
   673    673   
   674    674   TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui.
   675    675   
   676    676   
   677    677   !!
   678    678   !!
   679         -!!!! Virgules
          679  +!!!! Virgules                                                                                     !!
   680    680   !!
   681    681   !!
   682    682   
   683    683   # virgules manquantes
   684    684   __[i>/virg(virgule_manquante_avant_etc)__   {w_1}( etc[.])  @@$ <<- -1>> , etc.                     # Avant « etc. », il faut mettre une virgule.
   685    685   __[i>/virg(virgule_manquante_avant_car)__
   686    686       ({w_1})( car)(?= (?:j[e’]|tu|ils?|nous|vous|elles?|on|les?|l[a’]|ces?|des?|cette|[mts](?:on|a|es))\b)  @@0,$
................................................................................
   730    730   #__<i>/typo__  ({w_2}) *$   @@0
   731    731   #    <<- before("[a-zéàùèê][.] ") and not before(r"^(?:\d|\w[.])")
   732    732   #    -1>> \1.|\1…|\1 !|\1 ?|\1 :|\1 ;|\1,                                               # Il manque une ponctuation finale.
   733    733   
   734    734   
   735    735   !!
   736    736   !!
   737         -!!!! Espaces manquants
          737  +!!!! Espaces manquants                                                                            !!
   738    738   !!
   739    739   !!
   740    740   
   741    741   __<s>/typo(typo_espace_manquant_après1)__
   742    742       ({w1})[,:]({w_1})  @@0,$  <<- not \1.isdigit() -2>> " \2"                                       # Il manque un espace.
   743    743   __<s>/typo(typo_espace_manquant_après2)__
   744    744       [?!;%‰‱˚»}]({w_1})  @@$  <<- -1>> " \1"                                                       # Il manque un espace.
................................................................................
   759    759   TEST: espace.{{Manquant}}                                                   ->> " Manquant"
   760    760   TEST: qui ont refuse.{{de}} se sauver                                       ->> " de"
   761    761   TEST: pic.twitter.com/PICNAME
   762    762   
   763    763   
   764    764   !!
   765    765   !!
   766         -!!!! Points
          766  +!!!! Points                                                                                       !!
   767    767   !!
   768    768   !!
   769    769   
   770    770   # Points superflus
   771    771   __[i>/typo(typo_et_cetera)__             etc(?:[.]{3,5}|…) <<- ->> etc.                             # Un seul point après « etc. »
   772    772   
   773    773   TEST: {{etc…}}
................................................................................
   798    798   TEST: Ligne de points{{...........................}}
   799    799   TEST: Aujourd’hui, M. Camus va nous lire son texte.
   800    800   
   801    801   
   802    802   
   803    803   !!
   804    804   !!
   805         -!!!! Tirets
          805  +!!!! Tirets                                                                                       !!
   806    806   !!
   807    807   !!
   808    808   
   809    809   # Tirets, énumérations et dialogues
   810    810   __<s>/typo(typo_tiret_début_ligne)__    ^[-_][  ] <<- ->> "— |– "           # Dialogues et énumérations : un tiret cadratin ou demi-cadratin, suivi d’un espace insécable, est requis.
   811    811   __<s>/typo(typo_tiret_dans_dialogue)__  ^ *«[  ](-[  ]) @@$ <<- -1>> "— |– "
   812    812       # Dialogues : un tiret cadratin ou demi-cadratin, suivi d’un espace insécable, est requis. (Attention : à moins qu’il s’agisse d’un dialogue inclus dans un autre dialogue, cette manière d’écrire est erronée.)
................................................................................
   821    821   TEST: {{—}}Viens là.                                                        ->> "— |– "
   822    822   TEST: Cette phrase contient{{ - }}c’est certain – des tirets d’incise.      ->> " – | — "
   823    823   TEST: « {{- }}Viens ! On va en finir avec cette affaire, sale fils de pute. ->> "— |– "
   824    824   
   825    825   
   826    826   !!
   827    827   !!
   828         -!!!! Ponctuations redondantes
          828  +!!!! Ponctuations redondantes                                                                     !!
   829    829   !!
   830    830   !!
   831    831   
   832    832   # virgules et points
   833    833   __<s>/typo(typo_virgules_points)__
   834    834       ,[.,]{2,}
   835    835       <<- ->> =\0.replace(",", ".").replace("...", "…")                                               # Erreur de numérisation ? Virgules au lieu de points ?
................................................................................
   869    869   TEST: Succession : a{{;}} b.                                                ->> " ;"
   870    870   TEST: C’est assez {{: }}parlez !                                            ->> ": "
   871    871   TEST: {{» }}C’est ce qu’on croit savoir.                                    ->> "» |« "
   872    872   
   873    873   
   874    874   !!
   875    875   !!
   876         -!!!! Signes typographiques
          876  +!!!! Signes typographiques                                                                        !!
   877    877   !!
   878    878   !!
   879    879   
   880    880   __<s>/typo(typo_signe_multiplication)__
   881    881       (\d+) ?[x*] ?(\d+)  @@0,$ <<- not \0.startswith("0x") ->> \1 × \2                               # Signe de multiplication typographique.
   882    882   
   883    883   TEST: {{800 x 600}}                                                         ->> 800 × 600
................................................................................
   898    898   
   899    899   TEST: __liga__ un {{fl}}ottement                                           ->> fl
   900    900   TEST: __liga__ une belle {{fi}}gure                                        ->> fi
   901    901   
   902    902   
   903    903   !!
   904    904   !!
   905         -!!!! Apostrophes
          905  +!!!! Apostrophes                                                                                  !!
   906    906   !!
   907    907   !!
   908    908   ## Apostrophe typographique
   909    909   __[i>/apos(apostrophe_typographique)__
   910    910       ([ldsncjmç]|jusqu|lorsqu|aujourd|presqu|quelqu|puisqu|qu|prud|entr)['´‘′`](?=[\w"«]) @@0 <<- ->> \1’    # Apostrophe typographique.
   911    911   __[i>/apos(apostrophe_typographique_après_t)__
   912    912       t['´‘′`](?!ils?|elles?|on)(?=[\w"«]) <<- ->> t’                                                         # Apostrophe typographique.
................................................................................
   952    952   TEST: Il {{s }}était dit qu’il ne le ferait pas.                                ->> s’
   953    953   TEST: Je {{m }}étais imaginé que je pourrais pas retrouver cet objet.           ->> m’
   954    954   TEST: Je {{n }}ai pas retrouvé l’ambiance de mes années de lycée.               ->> n’
   955    955   
   956    956   
   957    957   !!
   958    958   !!
   959         -!!!! Guillemets typographiques
          959  +!!!! Guillemets typographiques                                                                    !!
   960    960   !!
   961    961   !!
   962    962   
   963    963   __<s>/typo(typo_guillemets_typographiques_doubles_ouvrants)__
   964    964       "(?=\w)
   965    965       <<- not before(r"[a-zA-Zéïîùàâäôö]$") ->> « |“                                                  # Guillemets typographiques ouvrants.
   966    966   __<s>/typo(typo_guillemets_typographiques_doubles_fermants)__
................................................................................
   994    994   TEST: Le {{'}}grand’ homme.                                                 ->> “|‘|‹
   995    995   TEST: Le ‘grand{{'}} homme.                                                 ->> ”|’|›
   996    996   TEST: J’en ai '''marre''' (syntaxe wiki).
   997    997   
   998    998   
   999    999   !!
  1000   1000   !!
  1001         -!!!! Élisions
         1001  +!!!! Élisions                                                                                     !!
  1002   1002   !!
  1003   1003   !!
  1004   1004   
  1005   1005   __[i]/typo(typo_élision_déterminants)__
  1006   1006       (l[ea] |de )([aâeéêiîoôu]\w+)  @@0,$
  1007   1007       <<- not re.search("(?i)^(?:onz[ei]|énième|iourte|ouistiti|ouate|one-?step|ouf|Ouagadougou|I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and not \2.isupper() and not morph(\2, ":G", False)
  1008   1008       -1>> =\1[0]+"’"                                         # Élision de l’article devant un mot commençant par une voyelle.|http://fr.wikipedia.org/wiki/Élision
................................................................................
  1046   1046       -1>> cet                                                # Euphonie : « ce » devient « cet » devant un mot commençant par une voyelle.
  1047   1047   
  1048   1048   TEST: {{ce}} animal est dangereux
  1049   1049   
  1050   1050   
  1051   1051   !!
  1052   1052   !!
  1053         -!!!! Divers
         1053  +!!!! Divers                                                                                       !!
  1054   1054   !!
  1055   1055   !!
  1056   1056   
  1057   1057   ## NF (memo: don’t use flag i)
  1058   1058   __[s]/nf(nf_norme_française)__
  1059   1059       [nN][fF][  -]?(?:c|C|e|E|p|P|q|Q|s|S|x|X|z|Z|[eE][nN](?:[  -][iI][sS][oO]|))[  -]?[0-9]+(?:[/ ‑-][0-9]+|)
  1060   1060       <<- not re.search("^NF (?:C|E|P|Q|S|X|Z|EN(?: ISO|)) [0-9]+(?:‑[0-9]+|)", \0)
................................................................................
  1069   1069       <<- ->> =\0.replace("2", "₂").replace("3", "₃").replace("4", "₄")                               # Typographie des composés chimiques. [!]
  1070   1070   
  1071   1071   TEST: __chim__ les molécules {{CaCO3}} et {{H2O}}…
  1072   1072   
  1073   1073   
  1074   1074   !!
  1075   1075   !!
  1076         -!!!! Cohérence des guillemets
         1076  +!!!! Cohérence des guillemets                                                                     !!
  1077   1077   !!
  1078   1078   !!
  1079   1079   
  1080   1080   __<s>/typo(typo_cohérence_guillemets_chevrons_ouvrants)__
  1081   1081       («)[^»“]+?(”)  @@0,$
  1082   1082       <<- not before(r"\w$") -1>> “                                                                   # Guillemet ouvrant différent du guillemet fermant (”).
  1083   1083       <<- not after(r"^\w") -2>> " »"                                                                 # Guillemet fermant différent du guillemet ouvrant («).
................................................................................
  1127   1127   TEST: « Je suis là.
  1128   1128   TEST: — Oui, nous t’avons vu arriver. »
  1129   1129   TEST: « J’en suis “malade”. »
  1130   1130   
  1131   1131   
  1132   1132   !!
  1133   1133   !!
  1134         -!!!! Espaces insécables avant unités de mesure
         1134  +!!!! Espaces insécables avant unités de mesure                                                    !!
  1135   1135   !!
  1136   1136   !!
  1137   1137   
  1138   1138   __[s]/unit(unit_nbsp_avant_unités1)__
  1139   1139       ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![’'])  @@0,0
  1140   1140       <<- -1>> "\2 "
  1141   1141       # Avec une unité de mesure, mettez un espace insécable.
................................................................................
  1165   1165   TEST: 1998 s’annonce grandiose.
  1166   1166   TEST: il y en a 3,43 milliards.
  1167   1167   TEST: je veux 200 euros.
  1168   1168   
  1169   1169   
  1170   1170   !!
  1171   1171   !!
  1172         -!!!! Grands nombres
         1172  +!!!! Grands nombres                                                                               !!
  1173   1173   !!
  1174   1174   !!
  1175   1175   
  1176   1176   __[s]/num(num_grand_nombre_soudé)__
  1177   1177       \d\d\d\d+
  1178   1178       <<- not before("NF[  -]?(C|E|P|Q|X|Z|EN(?:[  -]ISO|)) *$") >>>
  1179   1179       <<- \0.__len__() > 4 ->> =formatNumber(\0)                                                      # Formatage des grands nombres.
................................................................................
  1214   1214       <<- ~>> =\0.replace(" ", "_")
  1215   1215   
  1216   1216   TEST: Il a perdu {{20 000}} euros à la Bourse en un seul mois.
  1217   1217   
  1218   1218   
  1219   1219   !!
  1220   1220   !!
  1221         -!!!! Dates
         1221  +!!!! Dates                                                                                        !!
  1222   1222   !!
  1223   1223   !!
  1224   1224   __[i]/date(date_nombres)__
  1225   1225       (?<!\d[ /.-])(\d\d?)[ /.-](\d\d?)[ /.-](\d\d\d+)(?![ /.-]\d)  @@0,w,$
  1226   1226       <<- not checkDate(\1, \2, \3) and not before(r"(?i)\bversions? +$") ->> _                       # Cette date est invalide.
  1227   1227       <<- ~>> =\0.replace(".", "-").replace(" ", "-").replace("\/", "-")
  1228   1228   
................................................................................
  1231   1231   TEST: le {{32.03.2018}}
  1232   1232   TEST: le {{81/01/2012}}
  1233   1233   TEST: 12-12-2012
  1234   1234   
  1235   1235   
  1236   1236   !!
  1237   1237   !!
  1238         -!!!! Redondances
         1238  +!!!! Redondances                                                                                  !!
  1239   1239   !!
  1240   1240   !!
  1241   1241   __[i]/redon1(redondances_paragraphe)__
  1242   1242       ({w_4})[  ,.;!?:].*[  ](\1)  @@0,$
  1243   1243       <<- not morph(\1, ":(?:G|V0)|>(?:t(?:antôt|emps|rès)|loin|souvent|parfois|quelquefois|côte|petit|même) ", False) and not \1[0].isupper()
  1244   1244       -2>> _                                                      # Dans ce paragraphe, répétition de « \1 » (à gauche).
  1245   1245       <<- __also__ -1>> _                                         # Dans ce paragraphe, répétition de « \1 » (à droite).
................................................................................
  1248   1248   TEST: __redon1__ Car parfois il y en a. Mais parfois il n’y en a pas.
  1249   1249   
  1250   1250   
  1251   1251   
  1252   1252   
  1253   1253   !!!
  1254   1254   !!!
  1255         -!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases
         1255  +!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases                          !!
  1256   1256   !!!
  1257   1257   !!!
  1258   1258   
  1259   1259   # Trait d’union conditionnel (u00AD)
  1260   1260   __<i>(p_trait_union_conditionnel1)__    \w+‑\w+‑\w+ <<- ~>> =\0.replace("‑", "")
  1261   1261   __<i>(p_trait_union_conditionnel2)__    \w+‑\w+ <<- ~>> =\0.replace("‑", "")
  1262   1262   
................................................................................
  1286   1286   !!
  1287   1287   !!
  1288   1288   !!
  1289   1289   !!
  1290   1290   !!
  1291   1291   !!
  1292   1292   !!
  1293         -!! PASSE 1: PHRASE PAR PHRASE
         1293  +!! PASSE 1: PHRASE PAR PHRASE                                                                     !!
  1294   1294   !!
  1295   1295   !!
  1296   1296   !!
  1297   1297   !!
  1298   1298   !!
  1299   1299   !!
  1300   1300   !!
................................................................................
  1312   1312   !!
  1313   1313   !!
  1314   1314   
  1315   1315   [++]
  1316   1316   
  1317   1317   
  1318   1318   
  1319         -!!!! Doublons (casse identique)
         1319  +!!!! Doublons (casse identique)                                                                   !!
  1320   1320   
  1321   1321   __[s](doublon)__
  1322   1322       ({w1}) {1,3}\1  @@0
  1323   1323       <<- not re.search("(?i)^([nv]ous|faire|en|la|lui|donnant|œuvre|h[éoa]|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|[0-9]+)$", \1)
  1324   1324           and not (re.search("^(?:est|une?)$", \1) and before("[’']$"))
  1325   1325           and not (\1 == "mieux" and before("(?i)qui +$"))
  1326   1326       ->> \1   # Doublon.
  1327   1327   
  1328   1328   TEST: Il y a un {{doublon doublon}}.
  1329   1329   
  1330   1330   
  1331         -!!!! Nombres: typographie
         1331  +!!!! Nombres: typographie                                                                         !!
  1332   1332   
  1333   1333   #(\d\d\d\d)-(\d\d\d\d)   <<- ->> \1–\2                              # Ne pas séparer deux dates par un trait d’union, mais par un tiret demi-cadratin.
  1334   1334   
  1335   1335   __[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 ».
  1336   1336   __[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 ».
  1337   1337   
  1338   1338   TEST: année {{2O11}}                                                      ->> 2011
................................................................................
  1376   1376   TEST: le {{IInd}} siècle                        ->> IIᵈ
  1377   1377   TEST: le {{VIième}} siècle                      ->> VIᵉ
  1378   1378   TEST: Le {{XXIème}} siècle.                     ->> XXIᵉ
  1379   1379   TEST: le {{XXè}} siècle.                        ->> XXᵉ
  1380   1380   
  1381   1381   
  1382   1382   
  1383         -!!!! Écritures épicènes invariables
         1383  +!!!! Écritures épicènes invariables                                                               !!
  1384   1384   
  1385   1385   __[i](d_typo_écriture_épicène_pluriel)__
  1386   1386       ({w_1}[éuitsrn])_(?:[nt]|)e_s  @@0
  1387   1387       <<- morphex(\1, ":[NAQ]", ":G") =>> define(\1, [":N:A:Q:e:p"])
  1388   1388   
  1389   1389   __[i](d_typo_écriture_épicène_singulier)__
  1390   1390       ({w_2}[éuitsrn])_e  @@0
  1391   1391       <<- morph(\1, ":[NAQ]", False) =>> define(\1, [":N:A:Q:e:s"])
  1392   1392   
  1393   1393   
  1394         -!!!! Dates
         1394  +!!!! Dates                                                                                        !!
  1395   1395   
  1396   1396   __[i]/date(date_jour_mois_année)__
  1397   1397       (\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d\d+)  @@0,w,$
  1398   1398       <<- not checkDateWithString(\1, \2, \3) ->> _                                                   # Cette date est invalide.
  1399   1399   
  1400   1400   TEST: {{29 février 2011}}
  1401   1401   
................................................................................
  1429   1429   
  1430   1430   TEST: le {{30 février}}
  1431   1431   
  1432   1432   
  1433   1433   
  1434   1434   !!!
  1435   1435   !!!
  1436         -!!! Processeur: épuration des signes inutiles et quelques simplifications
         1436  +!!! Processeur: épuration des signes inutiles et quelques simplifications                         !!
  1437   1437   !!!
  1438   1438   !!!
  1439   1439   
  1440   1440   # fin de phrase
  1441   1441   __<s>(p_fin_de_phrase)__        [.?!:;…][ .?!… »”")]*$  <<- ~>> *
  1442   1442   
  1443   1443   # début de phrase
................................................................................
  1499   1499   
  1500   1500   
  1501   1501   TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics.
  1502   1502   
  1503   1503   
  1504   1504   !!
  1505   1505   !!
  1506         -!!!! Traits d’union
         1506  +!!!! Traits d’union                                                                               !!
  1507   1507   !!
  1508   1508   !!
  1509   1509   
  1510   1510   __<i]/tu(tu_t_euphonique_incorrect)__
  1511   1511       ([-–—− ]t(?:[’' ][-–—−]?|[-–—−][’' ]?))(ils?|elles?|on|tu)  @@0,$
  1512   1512       <<- re.search("(?i)^(?:ils|elles|tu)$", \2) -1>> -      # Le “t” euphonique n’est pas nécessaire avec “\2”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513
  1513   1513       <<- __else__ and \1 != "-t-" and \1 != "-T-" -1>> -t-   # Pour le “t” euphonique, il faut deux traits d’union. Pas d’apostrophe. Pas d’espace.
................................................................................
  1911   1911       lors que?
  1912   1912       <<- not before(r"(?i)\bd[eè]s +$") ->> =\0.replace(" ", "")                                     # Attachez les deux mots.|https://fr.wiktionary.org/wiki/lorsque
  1913   1913   
  1914   1914   TEST: Elle y arriva {{lors qu}}’elle trouva l’astuce permettant l’ouverture de la porte.
  1915   1915   TEST: Dès lors qu’on sait comment s’y prendre, aucune raison de faillir.
  1916   1916   
  1917   1917   
  1918         -!!!! Virgules
         1918  +!!!! Virgules                                                                                     !!
  1919   1919   
  1920   1920   # Dialogues
  1921   1921   __[u]/virg(virgule_dialogue_après_nom_propre)__
  1922   1922       ([A-ZÉÈ][\w-]+) (\w+-(?:moi|toi|l(?:ui|a|e(?:ur|s|))|nous|vous|je|tu|ils|elles))  @@0,$
  1923   1923       <<- morphex(\1, ":M", ":G") and not morph(\2, ":N", False) and isStart()
  1924   1924       -1>> \1,                                                                        # Dialogue ? Ajoutez une virgule pour mettre en incise la personne à qui s’adresse la réplique.
  1925   1925   
................................................................................
  1948   1948   
  1949   1949   TEST: Tu vas les {{donner}} Rachel.
  1950   1950   TEST: Il va la {{tuer}} Paul.
  1951   1951   TEST: Cependant les promesses n’engagent que ceux qui les croient, comme aimait à le dire Jacques Chirac.
  1952   1952   
  1953   1953   
  1954   1954   
  1955         -!!!! Apostrophe manquante (2)
         1955  +!!!! Apostrophe manquante (2)                                                                     !!
  1956   1956   
  1957   1957   __<s>/typo(typo_apostrophe_manquante_audace2)__
  1958   1958       ^ *([LDSNCJMTÇ] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ]  @@*
  1959   1959       <<- option("mapos") -1>> =\1[:-1]+"’"                                                           # Il manque peut-être une apostrophe.
  1960   1960   
  1961   1961   TEST: __mapos__ {{L }}opinion des gens, elle s’en moquait.
  1962   1962   
  1963   1963   
  1964   1964   
  1965         -!!!! A / À: accentuation la préposition en début de phrase
         1965  +!!!! A / À: accentuation la préposition en début de phrase                                        !!
  1966   1966   
  1967   1967   __<s]/typo(typo_À_début_phrase1)__
  1968   1968       ^ *(A) (?!t[’-](?:ils?|elles?|on))({w_2})  @@*,$
  1969   1969       <<- morphex(\2, ":[GNAY]", ":(?:Q|3s)|>(?:priori|post[eé]riori|contrario|capella|fortiori) ")
  1970   1970           or (\2 == "bientôt" and isEnd())
  1971   1971       -1>> À                                                                                          # S’il s’agit de la préposition « à », il faut accentuer la majuscule.
  1972   1972   __<s>/typo(typo_À_début_phrase2)__
................................................................................
  1980   1980   TEST: — {{A}} t’emmener loin de tout ceci.
  1981   1981   TEST: {{A}} bientôt, mon ami.
  1982   1982   TEST: A bientôt fini son devoir.
  1983   1983   TEST: A priori, nul ne peut y parvenir sans une aide extérieure.
  1984   1984   TEST: A devient notre meilleure chance d’y parvenir.
  1985   1985   
  1986   1986   
  1987         -!!!! Accentuation des majuscules
         1987  +!!!! Accentuation des majuscules                                                                  !!
  1988   1988   
  1989   1989   __[u]/maj(maj_accents)__
  1990   1990       E(?:tat|glise|co(?:le|nomie)|quipe|lectri(?:cité|que)|gal(?:ité|ement)|té)s? @@1
  1991   1991       <<- ->> ="É"+\0[1:]                                                                            # Accentuez les majuscules.
  1992   1992       <<- ~>> ="É"+\0[1:]
  1993   1993   
  1994   1994   TEST: Le budget de l’{{Etat}}.
  1995   1995   
  1996   1996   
  1997   1997   
  1998   1998   !!!
  1999   1999   !!!
  2000         -!!! Désambiguïsation
         2000  +!!! Désambiguïsation                                                                              !!
  2001   2001   !!!
  2002   2002   !!!
  2003   2003   
  2004   2004   # mots grammaticaux
  2005   2005   __[i](d_dans)__
  2006   2006       dans
  2007   2007       <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes ", False, False) =>> select(\0, ":R")
................................................................................
  2100   2100   TEST: elle finit par être très fière de son fils.
  2101   2101   TEST: en tant que président du conseil
  2102   2102   
  2103   2103   
  2104   2104   
  2105   2105   !!
  2106   2106   !!
  2107         -!!!! OCR
         2107  +!!!! OCR                                                                                          !!
  2108   2108   !!
  2109   2109   !!
  2110   2110   
  2111   2111   # ?
  2112   2112   __<s]/ocr(ocr_point_interrogation)__
  2113   2113       [  ]7
  2114   2114       <<- after0("^(?: +[A-ZÉÈÂ(]|…|[.][.]+| *$)") ->> " ?"                                           # Erreur de numérisation ?
................................................................................
  2753   2753   TEST: __ocr__ trouve {{l£}} temps
  2754   2754   TEST: __ocr__ elle s’{{avance*}} sur le seuil
  2755   2755   TEST: __ocr__ par beaucoup d’argent ? {{{Il}} débouche le Jack Daniels
  2756   2756   
  2757   2757   
  2758   2758   !!
  2759   2759   !!
  2760         -!!!! Incohérences de base
         2760  +!!!! Incohérences de base                                                                         !!
  2761   2761   !!
  2762   2762   !!
  2763   2763   
  2764   2764   ### double négation
  2765   2765   __[i](double_négation)__
  2766   2766       pas (personne|aucune?|jamais)  @@4
  2767   2767       <<- not morph(word(-1), ":D:[me]" ,False, False) ->> \1|pas, \1
................................................................................
  2815   2815   
  2816   2816   TEST: je ne sais {{des}} {{ses}} choses.
  2817   2817   
  2818   2818   
  2819   2819   
  2820   2820   !!
  2821   2821   !!
  2822         -!!!! Style
         2822  +!!!! Style                                                                                        !!
  2823   2823   !!
  2824   2824   !!
  2825   2825   
  2826   2826   #__bs__  Mr <<- ->> M.                          # M. est l’usage courant pour “Monsieur”. « Mr » est l’abréviation ancienne, française.
  2827   2827   
  2828   2828   # à / en
  2829   2829   __[i]/bs(bs_en_à_ville)__
................................................................................
  2926   2926   #Se rappelle de l’amour
  2927   2927   
  2928   2928   #enjoindre à qqn de faire qqch
  2929   2929   
  2930   2930   
  2931   2931   !!
  2932   2932   !!
  2933         -!!!! Pléonasmes
         2933  +!!!! Pléonasmes                                                                                   !!
  2934   2934   !!
  2935   2935   !!
  2936   2936   
  2937   2937   __[i]/pleo(pleo_abolir)__               (abol\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">abolir ", False) ->> \1         # Pléonasme.
  2938   2938   __[i]/pleo(pleo_acculer)__              (accul\w+) aux? pieds? du mur @@0 <<- morph(\1, ">acculer ", False) ->> \1                                          # Pléonasme.
  2939   2939   __[i]/pleo(pleo_achever)__              (ach[eè]v\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">achever ", False) ->> \1    # Pléonasme.
  2940   2940   __[i]/pleo(pleo_en_cours)__             actuellement en cours <<- not after(r" +de?\b") ->> en cours                                            # Pléonasme.
................................................................................
  3102   3102   TEST: {{ta}} aimée                                            ->> ton
  3103   3103   TEST: {{ma}} obligée                                          ->> mon
  3104   3104   TEST: Ce couple va donner à la France sa très importante collection qui rejoindra le musée d’Orsay
  3105   3105   
  3106   3106   
  3107   3107   !!
  3108   3108   !!
  3109         -!!!! Confusions
         3109  +!!!! Confusions                                                                                   !!
  3110   3110   !!
  3111   3111   !!
  3112   3112   
  3113   3113   __[s>/conf(conf_ne_n)__     [nN]e n’                        <<- ->> ne m’|n’                        # Incohérence. Double négation.
  3114   3114   __[s>/conf(conf_pronoms1)__ [mtMT]e ([nmst](?:’|e )) @@$    <<- ->> \1                              # Incohérence.
  3115   3115   __[s>/conf(conf_pronoms2)__ [sS]e ([mst](?:’|e )) @@$       <<- ->> \1                              # Incohérence.
  3116   3116   __[s>/conf(conf_de_d)__     [dD][eu] d’(?![A-ZÉÂÔÈ])        <<- ->> d’                              # Incohérence.
................................................................................
  4486   4486   TEST: car elles pénètrent dans les poumons voire le système sanguin.
  4487   4487   TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants.
  4488   4488   
  4489   4489   
  4490   4490   
  4491   4491   !!
  4492   4492   !!
  4493         -!!!! Pronoms + incohérences
         4493  +!!!! Pronoms + incohérences                                                                       !!
  4494   4494   !!
  4495   4495   !!
  4496   4496   __[i](p_m_enfin)__      m’enfin <<- ~>> *
  4497   4497   
  4498   4498   __[i]/conf(conf_j_y_en_qqch)__
  4499   4499       (j’(?:en +|y +|))({w_1})  @@0,$
  4500   4500       <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])")
................................................................................
  4558   4558   TEST: C’que j’comprends, c’est qu’il y a des limites à ce qu’on peut supporter.
  4559   4559   TEST: la tentation pour certains médias de ne tout simplement pas rémunérer notre travail si celui-ci n’est finalement pas publié.
  4560   4560   TEST: Ne parfois pas être celui qui sabote l’ambiance.
  4561   4561   
  4562   4562   
  4563   4563   !!
  4564   4564   !!
  4565         -!!!! Formes verbales sans sujet
         4565  +!!!! Formes verbales sans sujet                                                                   !!
  4566   4566   !!
  4567   4567   !!
  4568   4568   
  4569   4569   ## Incohérences avec formes verbales 1sg et 2sg sans sujet
  4570   4570   __[i](p_notre_père_qui_es_au_cieux)__   notre père (qui est? aux cieux) @@11 <<- ~1>> *
  4571   4571   
  4572   4572   __[i]/conj(conj_xxxai_sans_sujet)!3__
................................................................................
  4637   4637   TEST: Mon épouse et moi-même avons toujours dit
  4638   4638   TEST: que vous ou moi ignorions à peu près tout du boson de Higgs n’a pas du tout le même sens
  4639   4639   
  4640   4640   
  4641   4641   
  4642   4642   !!
  4643   4643   !!
  4644         -!!!! Locutions invariables
         4644  +!!!! Locutions invariables                                                                        !!
  4645   4645   !!
  4646   4646   !!
  4647   4647   
  4648   4648   ## plus que prévu / mois que prévu
  4649   4649   __[i]/sgpl(sgpl_que_prévu1)__   (plus|moins|autant) +que (prévu(?:es?|s)) @@0,$ <<- -2>> prévu                          # Invariable. Implicitement, \1 que ce qui était prévu.
  4650   4650   __[i]/sgpl(sgpl_que_prévu2)__   (plus|moins|aussi) +({w_2}) +que (prévu(?:es?|s)) @@0,w,$ <<- -3>> prévu                # Invariable. Implicitement, \1 \2 que ce qui était prévu.
  4651   4651   __[i]/sgpl(sgpl_que_prévu3)__   (plus|moins|autant) +d(?:e |’)({w_2}) +que (prévu(?:es?|s)) @@0,w,$ <<- -3>> prévu      # Invariable. Implicitement, \1 \2 que ce qui était prévu.
................................................................................
  4661   4661   TEST: il y en a moins que {{prévues}}                         ->> prévu
  4662   4662   TEST: comme {{convenus}}                                      ->> convenu
  4663   4663   
  4664   4664   
  4665   4665   
  4666   4666   !!
  4667   4667   !!
  4668         -!!!! Tout, tous, toute, toutes
         4668  +!!!! Tout, tous, toute, toutes                                                                    !!
  4669   4669   !!
  4670   4670   !!
  4671   4671   
  4672   4672   __[i](p_fais_les_tous)__
  4673   4673       fai(?:tes|sons|s)-(?:les|[nv]ous) (tou(?:te|)s) @@$ <<- ~1>> *
  4674   4674   __[i](p_tout_débuts_petits)__
  4675   4675       (tout) (?:débuts|petits) @@0 <<- before(r"\b(aux|[ldmtsc]es|[nv]os|leurs) +$") ~1>> *
................................................................................
  4764   4764   TEST: aux tout débuts, il y eut bien des erreurs
  4765   4765   TEST: comment les inégalités sociales impactent la santé des tout petits
  4766   4766   
  4767   4767   
  4768   4768   
  4769   4769   !!
  4770   4770   !!
  4771         -!!!! Adverbes de négation
         4771  +!!!! Adverbes de négation                                                                         !!
  4772   4772   !!
  4773   4773   !!
  4774   4774   
  4775   4775   __[i]/neg(ne_manquant1)__
  4776   4776       (?:je|tu|ils?|on|elles?) ([bcdfgjklmnpqrstvwxz][\w-]*) (pas|rien|jamais|guère)  @@w,$
  4777   4777       <<- morph(\1, ":[123][sp]", False) and not (re.search("(?i)^(?:jamais|rien)$", \2) and before(r"\b(?:que?|plus|moins) "))
  4778   4778       -1>> ne \1                                                                                      # Ne … \2 : il manque l’adverbe de négation.
................................................................................
  4798   4798   TEST: __neg__ On {{en}} a pas.
  4799   4799   TEST: __neg__ Il {{y}} a jamais d’eau.
  4800   4800   
  4801   4801   
  4802   4802   
  4803   4803   !!
  4804   4804   !!
  4805         -!!!! Infinitif
         4805  +!!!! Infinitif                                                                                    !!
  4806   4806   !!
  4807   4807   !!
  4808   4808   
  4809   4809   __[i](p_ne_plus_pas_jamais_beaucoup_trop_rien)__
  4810   4810       ne (?:pas|plus|jamais) +(beaucoup|trop|rien)  @@$ <<- ~1>> *
  4811   4811   
  4812   4812   __[i]/infi(infi_ne)__
................................................................................
  4843   4843   TEST: Non, ne {{manger}} pas ça.
  4844   4844   TEST: Ne {{donner}} jamais à manger ces saloperies au chat.         ->> donnez
  4845   4845   
  4846   4846   
  4847   4847   
  4848   4848   !!!
  4849   4849   !!!
  4850         -!!! Processeur: épuration des adverbes, locutions adverbiales, interjections et expressions usuelles
         4850  +!!! Processeur: épuration des adverbes, locutions adverbiales, interjections et expressions usuelles  !!
  4851   4851   !!!
  4852   4852   !!!
  4853   4853   
  4854   4854   # Dates
  4855   4855   __[s](p_date)__
  4856   4856       (?:[dD]epuis le|[lL]e|[dD]u|[aA]u|[jJ]usqu au|[àÀ] compter du) (?:1(?:er|ᵉʳ)|\d\d?) (?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)(?: \d+| dernier| prochain|) <<- ~>> *
  4857   4857   __[i](p_en_l_an_de_grâce_année)__
................................................................................
  5898   5898   
  5899   5899   
  5900   5900   #
  5901   5901   # //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
  5902   5902   #
  5903   5903   
  5904   5904   
  5905         -!!!! Redondances dans la phrase
         5905  +!!!! Redondances dans la phrase                                                                   !!
  5906   5906   
  5907   5907   __[i]/redon2(redondances_phrase)__
  5908   5908       ({w_4})[ ,].* (\1)  @@0,$
  5909   5909       <<- not morph(\1, ":(?:G|V0)|>même ", False) -2>> _             # Dans cette phrase, répétition de « \1 » (à gauche).
  5910   5910       <<- __also__ -1>> _                                             # Dans cette phrase, répétition de « \1 » (à droite).
  5911   5911   
  5912   5912   TEST: __redon2__ Quelle {{imposture}}, c’est d’un ennui, c’est une {{imposture}}.
................................................................................
  5915   5915   TEST: __redon2__ De loin en loin, elle passe.
  5916   5916   TEST: __redon2__ Les mêmes causes produisent/produisant les mêmes effets. (répétition)
  5917   5917   
  5918   5918   
  5919   5919   
  5920   5920   !!
  5921   5921   !!
  5922         -!!!! Groupe nominal (1)
         5922  +!!!! Groupe nominal (1)                                                                           !!
  5923   5923   !!
  5924   5924   !!
  5925   5925   
  5926   5926   #### 1 mot
  5927   5927   
  5928   5928   ## Usage impropre
  5929   5929   
................................................................................
  6495   6495   
  6496   6496   TEST: ils trouvent ça de plus en plus {{idiots}}              ->> idiot
  6497   6497   
  6498   6498   
  6499   6499   
  6500   6500   !!
  6501   6501   !!
  6502         -!!!! Groupe nominal (2)
         6502  +!!!! Groupe nominal (2)                                                                           !!
  6503   6503   !!
  6504   6504   !!
  6505   6505   
  6506   6506   ## Sans article
  6507   6507   
  6508   6508   __[i]/gn(gn_2m_accord)__
  6509   6509       ^ *({w_2}) +({w_2})  @@*,$
................................................................................
  7012   7012   TEST: Les couleurs rouge, jaune et verte ne doivent pas être utilisées
  7013   7013   TEST: des passeports américain, canadien, néerlandais, allemand et britannique.
  7014   7014   
  7015   7015   
  7016   7016   
  7017   7017   !!
  7018   7018   !!
  7019         -!!!! Groupe nominal (3)
         7019  +!!!! Groupe nominal (3)                                                                           !!
  7020   7020   !!
  7021   7021   !!
  7022   7022   
  7023   7023   ## nombre
  7024   7024   
  7025   7025   __[i]/gn(gn_3m)__
  7026   7026       ^ *({w_2}) +({w_2}) +({w_3})  @@*,w,$
................................................................................
  7066   7066   
  7067   7067   TEST: ces petites sottes {{déjantée}}
  7068   7068   
  7069   7069   
  7070   7070   
  7071   7071   !!
  7072   7072   !!
  7073         -!!!! Groupe nominal: Accords avec de / des / du
         7073  +!!!! Groupe nominal: Accords avec de / des / du                                                   !!
  7074   7074   !!
  7075   7075   !!
  7076   7076   
  7077   7077   __[i]/gn(gn_devinette1)__
  7078   7078       (?:[lmts]a|une|cette) +{w_2} +d(?:e (?:[lmts]a|cette)|’une) +(?!des )({w_2}) +({w_2})  @@w,$
  7079   7079       <<- morphex(\2, ":[NAQ].*:(?:m|f:p)", ":(?:G|P|[fe]:[is]|V0|3[sp])") and not apposition(\1, \2)
  7080   7080       -2>> =suggFemSing(@, True)                                                              # Accord erroné : « \2 » devrait être au féminin singulier.
................................................................................
  7128   7128   
  7129   7129   TEST: {{de telles sorte}}
  7130   7130   
  7131   7131   
  7132   7132   
  7133   7133   !!
  7134   7134   !!
  7135         -!!!! Singuliers & Pluriels
         7135  +!!!! Singuliers & Pluriels                                                                        !!
  7136   7136   !!
  7137   7137   !!
  7138   7138   
  7139   7139   #### Prépositions
  7140   7140   
  7141   7141   # Similaires à prépositions : http://www.synapse-fr.com/manuels/PP_ATTENDU.htm
  7142   7142   # attendu, compris, non-compris, y compris, entendu, excepté, ôté, ouï, passé, supposé, vu
................................................................................
  7526   7526   TEST: Son point de {{vus}} prévaudra toujours, faites-vous à cette idée ou dégagez.
  7527   7527   TEST: de mon point de {{vues}}
  7528   7528   
  7529   7529   
  7530   7530   
  7531   7531   !!
  7532   7532   !!
  7533         -!!!! Confusions
         7533  +!!!! Confusions                                                                                   !!
  7534   7534   !!
  7535   7535   !!
  7536   7536   
  7537   7537   # à / a
  7538   7538   __[i]/conf(conf_suite_à)__
  7539   7539       suite (a) ({w1}) @@w,$
  7540   7540       <<- morph(\2, ":D|>[ld] ", False) and isStart() -1>> à          # Confusion : “a” est une forme conjuguée du verbe “avoir”. Pour la préposition, écrivez “à”.
................................................................................
  8971   8971   
  8972   8972   
  8973   8973   # nouveau / nouvel
  8974   8974   # TODO
  8975   8975   
  8976   8976   
  8977   8977   
  8978         -!!!! Mots composés
         8978  +!!!! Mots composés                                                                                !!
  8979   8979   
  8980   8980   __[i]/mc(mc_mot_composé)__
  8981   8981       ({w2})-({w2})  @@0,$
  8982   8982       <<- not \1.isdigit() and not \2.isdigit()
  8983   8983           and not morph(\0, ":", False) and not morph(\2, ":G", False) and spell(\1+\2)
  8984   8984       ->> \1\2                                                                                        # Vous pouvez ôter le trait d’union.
  8985   8985       <<- \2 != "là" and not re.search("(?i)^(?:ex|mi|quasi|semi|non|demi|pro|anti|multi|pseudo|proto|extra)$", \1)
................................................................................
  8989   8989   
  8990   8990   TEST: __mc__ des {{portes-avions}}.
  8991   8991   
  8992   8992   
  8993   8993   
  8994   8994   !!
  8995   8995   !!
  8996         -!!!! Casse: majuscules et minuscules
         8996  +!!!! Casse: majuscules et minuscules                                                              !!
  8997   8997   !!
  8998   8998   !!
  8999   8999   
  9000   9000   # Les jours
  9001   9001   __[s]/maj(maj_jours_semaine)__
  9002   9002       (?:Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche)
  9003   9003       <<- before(r"[\w,] +$") ->> =\0.lower()
................................................................................
  9159   9159   !!
  9160   9160   !!
  9161   9161   !!
  9162   9162   !!
  9163   9163   !!
  9164   9164   !!
  9165   9165   !!
  9166         -!!! Conjugaisons
         9166  +!!! Conjugaisons                                                                                  !!
  9167   9167   !!
  9168   9168   !!
  9169   9169   !!
  9170   9170   !!
  9171   9171   !!
  9172   9172   !!
  9173   9173   !!
................................................................................
  9174   9174   !!
  9175   9175   !!
  9176   9176   !!
  9177   9177   
  9178   9178   
  9179   9179   !!
  9180   9180   !!
  9181         -!!!! Infinitif
         9181  +!!!! Infinitif                                                                                    !!
  9182   9182   !!
  9183   9183   !!
  9184   9184   
  9185   9185   __[i]/infi(infi_à_en)__
  9186   9186       à en ({w_2}) @@5
  9187   9187       <<- morphex(\1, ":V", ":Y") -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.
  9188   9188   
................................................................................
  9330   9330   
  9331   9331   TEST: nous {{épuisants}} à la tâche pour des clopinettes, nous défaillîmes.
  9332   9332   
  9333   9333   
  9334   9334   
  9335   9335   !!!
  9336   9336   !!!
  9337         -!!! Processeur: simplification des substantifs
         9337  +!!! Processeur: simplification des substantifs                                                    !!
  9338   9338   !!!
  9339   9339   !!!
  9340   9340   
  9341   9341   ### @ : we remove @ we introduced after le/la/les in some cases
  9342   9342   __<s>(p_arobase)__      @ <<- ~>> *
  9343   9343   
  9344   9344   ### Avant les verbes (ôter seulement les COI!)
................................................................................
  9456   9456   TEST: Je me doute bien que vous avez trouvé la réponse.
  9457   9457   TEST: Nous nous doutons bien qu’il y a une entourloupe derrière cette affaire.
  9458   9458   TEST: Notre but n’était pas de devenir célèbres.
  9459   9459   TEST: sans qu’on ait à le lui ordonner
  9460   9460   
  9461   9461   
  9462   9462   
  9463         -!!!! OCR
         9463  +!!!! OCR                                                                                          !!
  9464   9464   
  9465   9465   # Participes passés
  9466   9466   __[i]/ocr(ocr_être_participes_passés)__
  9467   9467       ({etre}) +({w_2}es?) @@0,$
  9468   9468       <<- morph(\1, ":V0e", False) >>>
  9469   9469       <<- \2.endswith("e") and morphex(\2, ":V1.*:Ip.*:[13]s", ":(?:[GM]|A)") and not before(r"(?i)\belle +(?:ne +|n’|)$")
  9470   9470       -2>> =suggVerbPpas(\2, ":m:s")                                                                  # Erreur de numérisation ?
................................................................................
  9494   9494   TEST: __ocr__ elle avait envie de s’en sortir enfin.
  9495   9495   TEST: __ocr__ la longueur de la circonférence étant égale à…
  9496   9496   # TEST: __ocr__ vous êtes {{presses}} de monter à bord de ce train-ci.
  9497   9497   # Fonctionne avec nous serons, mais pas nous sommes (bug de JavaScript?)
  9498   9498   
  9499   9499   
  9500   9500   
  9501         -!!!! Confusions
         9501  +!!!! Confusions                                                                                   !!
  9502   9502   
  9503   9503   ## guerre / guère
  9504   9504   __[i]/conf(conf_ne_pronom_pronom_verbe_guère)__
  9505   9505       ne (?:[mts]e|la|les?|[nv]ous|lui|leur) (?:la |les? |lui |leur |l’|)\w{w_2} (?:plus |)(guerre)  @@$
  9506   9506       <<- -1>> guère                                                                                  # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez :
  9507   9507   
  9508   9508   TEST: tout ceci ne me rapporte {{guerre}}
................................................................................
  9555   9555       ({aller}) +de (soi[tes])  @@0,$
  9556   9556       <<- morph(\1, ">aller", False) and not after(" soit ") -2>> soi                                 # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi
  9557   9557   
  9558   9558   TEST: cela ne va pas de {{soit}}.
  9559   9559   
  9560   9560   
  9561   9561   
  9562         -!!!! Adverbes après verbe
         9562  +!!!! Adverbes après verbe                                                                         !!
  9563   9563   
  9564   9564   # fort
  9565   9565   __[i]/sgpl(sgpl_verbe_fort)__
  9566   9566       ({w_2}) +(forts)  @@0,$
  9567   9567       <<- morphex(\1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre) .*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter) ")
  9568   9568           and not morph(word(1), ":A.*:[me]:[pi]", False)
  9569   9569       -2>> fort                                               # Confusion probable. S’il s’agit ici de l’adverbe “fort” (équivalent de “fortement”), écrivez-le au singulier.
................................................................................
  9589   9589   TEST: Il a de grands biens.
  9590   9590   TEST: Ce sont des biens de peu de valeur.
  9591   9591   
  9592   9592   
  9593   9593   
  9594   9594   !!
  9595   9595   !!
  9596         -!!!! Infinitif
         9596  +!!!! Infinitif                                                                                    !!
  9597   9597   !!
  9598   9598   !!
  9599   9599   
  9600   9600   __[i]/infi(infi_d_en_y)__
  9601   9601       d’(?:en|y) +({w_2})  @@$
  9602   9602       <<- morphex(\1, ":V", ":Y") -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.
  9603   9603   
................................................................................
  9702   9702   
  9703   9703   TEST: lui {{mangée}} beaucoup.
  9704   9704   
  9705   9705   
  9706   9706   
  9707   9707   !!
  9708   9708   !!
  9709         -!!!! Usage pronominal avec “avoir” au lieu d’“être”
         9709  +!!!! Usage pronominal avec “avoir” au lieu d’“être”                                               !!
  9710   9710   !!
  9711   9711   !!
  9712   9712   
  9713   9713   __[i]/conj(conj_se_conf_être_avoir)__
  9714   9714       (s’)(?:en +|y+ |)({avoir})  @@0,$
  9715   9715       <<- morph(\2, ">avoir ", False) >>>
  9716   9716       <<- morph(\2, ":3p", False) -2>> sont|étaient|seront|seraient                                   # Confusion. Sous sa forme pronominale, un verbe s’emploie avec l’auxilaire “être”, non “avoir”.
................................................................................
  9744   9744   TEST: {{nous}} nous {{avons}} donné le temps
  9745   9745   TEST: {{vous}} vous {{avez}} perdu toute notion de décence.
  9746   9746   
  9747   9747   
  9748   9748   
  9749   9749   !!
  9750   9750   !!
  9751         -!!!! Participes passés: se +être +verbe
         9751  +!!!! Participes passés: se +être +verbe                                                           !!
  9752   9752   !!
  9753   9753   !!
  9754   9754   
  9755   9755   __[i]/ppas(ppas_je_me_être_verbe)__
  9756   9756       je +(?:ne +|)m(?:e +|’(?:y +|))(?:s[uo]i[st]|étai[st]|fu(?:sses?|s|t)|serai[st]?) +({w_3}) @@$
  9757   9757       <<- morphex(\1, ":Q.*:p", ":(?:G|Q.*:[si])") and ( morph(\1, ":V[123]_.__p_e_") or (isRealEnd() and not before(r"\b[qQ]ue? +$")) )
  9758   9758       -1>> =suggVerbPpas(\1, ":m:s")                                                                  # Si ce participe passé se rapporte bien à “je”, il devrait être au singulier.
................................................................................
  9837   9837   TEST: des soins que je m’étais donnés.
  9838   9838   TEST: Si t’es pas contente, t’achètes pas.
  9839   9839   
  9840   9840   
  9841   9841   
  9842   9842   !!
  9843   9843   !!
  9844         -!!!! Participes passés: se +laisser +adjectif
         9844  +!!!! Participes passés: se +laisser +adjectif                                                     !!
  9845   9845   !!
  9846   9846   !!
  9847   9847   
  9848   9848   __[i]/ppas(ppas_me_te_laisser_adj)__
  9849   9849       ([mt]e|l[ae]) +(laiss\w*) +({w_3})  @@0,w,$
  9850   9850       <<- morph(\2, ">laisser ", False) and  morphex(\3, ":[AQ].*:p", ":(?:[YG]|[AQ].*:[is])")
  9851   9851       -3>> =suggSing(@)                                                                               # Accord avec « \1 » : « \3 » devrait être au singulier.
................................................................................
  9870   9870   TEST: tu nous laisses indifférentes.
  9871   9871   TEST: ils nous laisseront étourdis.
  9872   9872   TEST: nous laisserons étourdi cet homme.
  9873   9873   
  9874   9874   
  9875   9875   !!
  9876   9876   !!
  9877         -!!!! Participes passés: être, avoir été, sembler (+être via pp), devenir, rester, (re)devenir, paraître + participe passé / adj
         9877  +!!!! Participes passés: être, avoir été, sembler (+être via pp), devenir, rester, (re)devenir, paraître + participe passé / adj   !!
  9878   9878   !!
  9879   9879   !!
  9880   9880   
  9881   9881   __[i]/ppas(ppas_je_verbe)__
  9882   9882       j(?:e +|’(?:y +|en +|))(?:ne +|n’|)((?:s[oue]|étai|fus|dev|re(?:dev|st)|par)\w*|a(?:ie?|vais|urais?) +été|eus(?:se|) +été) +({w_2})  @@w,$
  9883   9883       <<- (morph(\1, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \1.endswith(" été")) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
  9884   9884       -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.
................................................................................
 10050  10050   TEST: Leur passe-temps, ça a été faire n’importe quoi.
 10051  10051   TEST: Ne pas ressortir le livre le plus remarqué de la collaboration aurait été faire acte de censure.
 10052  10052   TEST: Partir aurait été assurer sa survie.
 10053  10053   
 10054  10054   
 10055  10055   !!
 10056  10056   !!
 10057         -!!!! Participes passés: pouvoir/sembler/paraître/vouloir/devoir/croire/déclarer/penser/dire/affirmer + être/avoir été
        10057  +!!!! Participes passés: pouvoir/sembler/paraître/vouloir/devoir/croire/déclarer/penser/dire/affirmer + être/avoir été  !!
 10058  10058   !!
 10059  10059   !!
 10060  10060   
 10061  10061   __[i](p_risque_d_être)__
 10062  10062       risqu\w+ +(d’)être @@* <<- ~1>> *
 10063  10063   
 10064  10064   __[i]/ppas(ppas_je_verbe_être)__
................................................................................
 10162  10162   TEST: elles doivent être {{fâché}}
 10163  10163   TEST: elles doivent avoir été {{attaqué}}
 10164  10164   TEST: elles peuvent avoir été {{trompé}}
 10165  10165   TEST: elles souhaitent être plus {{considérée}}
 10166  10166   
 10167  10167   
 10168  10168   
 10169         -!!!! Participes passés: accord en nombre avec la conjugaison de « être »
        10169  +!!!! Participes passés: accord en nombre avec la conjugaison de « être »                          !!
 10170  10170   
 10171  10171   ## Contrôle de l’
 10172  10172   __[i]/ppas(ppas_être_accord_singulier)__
 10173  10173       ({w_2}) +(?:qui +|)(?:ne +|n’|)(?:est|était|f[uû]t|sera(?:it|)|a(?:vait|ura|urait|it|) +été|e[uû]t +été) +({w_2})  @@0,$
 10174  10174       <<- morphex(\2, ":[NAQ].*:p", ":[GMWYsi]") and not morph(\1, ":G", False)
 10175  10175       -2>> =suggSing(@)                                                        # Accord avec « être » : « \2 » devrait être au singulier.
 10176  10176   
 10177  10177   __[i]/ppas(ppas_être_accord_pluriel)__
 10178  10178       ({w_2}) +(?:qui +|)(?:ne +|n’|)(?:sont|étaient|fu(?:r|ss)ent|ser(?:ont|aient)|soient|ont +été|a(?:vaient|uront|uraient|ient) +été|eu(?:r|ss)ent +été) +({w_2})  @@0,$
 10179  10179       <<- not re.search("(?i)^légion$", \2) and morphex(\2, ":[NAQ].*:s", ":[GWYpi]") and not morph(\1, ":G", False)
 10180  10180       -2>> =suggPlur(@)                                                        # Accord avec « être » : « \2 » devrait être au pluriel.
 10181  10181   
 10182  10182   
 10183         -!!!! Participes passés: accord en genre avec le substantif précédent
        10183  +!!!! Participes passés: accord en genre avec le substantif précédent                              !!
 10184  10184   
 10185  10185   __[i]/ppas(ppas_sujet_être_accord_genre)__
 10186  10186       (?<![dD]’)(une? |les? |la |l’|ce(?:s|t|tte|) |[mts](?:on|a|es) |[nv]os |leurs? ) *({w_2}) +(?:qui +|)(?:ne +|n’|)(?:est|étai(?:en|)t|f[uû]t|sera(?:i(?:en|)t|)|soi(?:en|)t|s(?:er|)ont|fu(?:r|ss)ent) +({w_2})  @@0,w,$
 10187  10187       <<- not re.search("(?i)^légion$", \3)
 10188  10188           and ((morphex(\3, ":[AQ].*:f", ":[GWme]") and morphex(\2, ":m", ":[Gfe]")) or (morphex(\3, ":[AQ].*:m", ":[GWfe]") and morphex(\2, ":f", ":[Gme]")))
 10189  10189           and not ( morph(\3, ":p", False) and morph(\2, ":s", False) )
 10190  10190           and not morph(word(-1), ":(?:R|P|Q|Y|[123][sp])", False, False) and not before(r"\b(?:et|ou|de) +$")
................................................................................
 10217  10217   TEST: Martine n’est pas {{marié}}.
 10218  10218   TEST: Martine est très {{intelligent}}.
 10219  10219   TEST: Martine n’est pas très {{intelligent}}.
 10220  10220   TEST: Pierre est {{dominée}} par son adversaire.
 10221  10221   
 10222  10222   
 10223  10223   
 10224         -!!!! Accords avec l’adjectif précédant le pronom
        10224  +!!!! Accords avec l’adjectif précédant le pronom                                                  !!
 10225  10225   
 10226  10226   __[i]/ppas(ppas_adj_accord_je_tu)__
 10227  10227       ^ *({w_2}s),? (je?|tu)  @@*,$
 10228  10228       <<- morphex(\1, ":A.*:p", ":(?:G|E|M1|W|s|i)")
 10229  10229       -1>> =suggSing(@)                                                       # Si cet adjectif se réfère au pronom « \2 », l’adjectif devrait être au singulier (et accordé en genre).
 10230  10230   
 10231  10231   TEST: {{Découragés}}, je suis parti.
................................................................................
 10277  10277   TEST: Elles se sont {{rendues}} compte
 10278  10278   TEST: La puissance publique s’en est-elle rendu compte ?
 10279  10279   
 10280  10280   
 10281  10281   
 10282  10282   !!
 10283  10283   !!
 10284         -!!!! Inversion verbe/sujet
        10284  +!!!! Inversion verbe/sujet                                                                        !!
 10285  10285   !!
 10286  10286   !!
 10287  10287   __[i]/ppas(ppas_inversion_être_je)__
 10288  10288       (?:s[ou]is|étais|fus(?:sé|)|serais?)-je +({w_2})  @@$
 10289  10289       <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:p)", ":[GWsi]")
 10290  10290       -1>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \1 » devrait être au singulier.
 10291  10291   __[i]/ppas(ppas_inversion_être_tu)__
................................................................................
 10347  10347   
 10348  10348   TEST: après avoir mis à jour sont {{profile}}.
 10349  10349   
 10350  10350   
 10351  10351   
 10352  10352   !!
 10353  10353   !!
 10354         -!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj
        10354  +!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj  !!
 10355  10355   !!
 10356  10356   !!
 10357  10357   
 10358  10358   __[i]/ppas(ppas_je_me_verbe)__
 10359  10359       je +(?:ne +|)me +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@w,$
 10360  10360       <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
 10361  10361       -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.
................................................................................
 10491  10491   TEST: mais les considérer uniquement ainsi fait perdre la signification politique de leur geste.
 10492  10492   TEST: nous considérer ainsi fait le lit de la haine…
 10493  10493   
 10494  10494   
 10495  10495   
 10496  10496   !!
 10497  10497   !!
 10498         -!!!! Avoir + participes passés
        10498  +!!!! Avoir + participes passés                                                                    !!
 10499  10499   !!
 10500  10500   !!
 10501  10501   
 10502  10502   #__[i]/conj__  fait(s|e|es) ({w1}) <<- morph(\2, ":V") and not morph(\2, ":Y")
 10503  10503   #   ->> fait \1                      # Le participe passé de faire reste au masculin singulier s’il est suivi par un verbe à l’infinitif.
 10504  10504   
 10505  10505   __[i](p_les_avoir_fait_vinfi)__
................................................................................
 10644  10644   TEST: c’est vous qui m’avez {{convertit}}.
 10645  10645   TEST: parce que t’as envie que je le fasse
 10646  10646   
 10647  10647   
 10648  10648   
 10649  10649   !!
 10650  10650   !!
 10651         -!!!! COD précédant que
        10651  +!!!! COD précédant que                                                                            !!
 10652  10652   !!
 10653  10653   !!
 10654  10654   
 10655  10655   __[i]/ppas(ppas_det_plur_COD_que_avoir)__
 10656  10656       ([ldmtsc]es) +({w_2}) +que? +(?:j’|tu |ils? |[nv]ous |elles? |on ) *(?:ne +|n’|)({avoir}) +({w_2}[éiust]e?)(?! [mts]’)  @@0,w,w,$
 10657  10657       <<- morph(\3, ":V0a", False)
 10658  10658           and not ((re.search("^(?:décidé|essayé|tenté|oublié)$", \4) and after(" +d(?:e |’)")) or (re.search("^réussi$", \4) and after(" +à")))
................................................................................
 10717  10717       <<- __also__ and \1 == "a" and \2.endswith("r") and not before(r"(?i)\b(?:[mtn]’|il +|on +|elle +)$")
 10718  10718       -1>> à                                                                                          # Confusion probable : “a” est une conjugaison du verbe avoir. Pour la préposition, écrivez :
 10719  10719   
 10720  10720   TEST: Avoir {{marcher}} toute la journée m’a épuisée.
 10721  10721   
 10722  10722   
 10723  10723   
 10724         -!!!! du / dû
        10724  +!!!! du / dû                                                                                      !!
 10725  10725   
 10726  10726   __[i]/ppas(ppas_avoir_dû_vinfi)__
 10727  10727       ({avoir}) +(due?s?) +(?:[mts]’|)({w_2})  @@0,w,$
 10728  10728       <<- morph(\1, ":V0a", False) and (morph(\3, ":Y") or re.search("^(?:[mtsn]e|[nv]ous|leur|lui)$", \3))
 10729  10729       -2>> dû                                                                                         # Participe passé de devoir : « dû ».
 10730  10730   
 10731  10731   __[i]/ppas(ppas_avoir_pronom_du_vinfi)__
................................................................................
 10761  10761   TEST: Ont-ils {{signer}} le contrat ?
 10762  10762   TEST: Ai-je déjà {{signez}} le contrat ?
 10763  10763   TEST: A-t-il déjà {{signer}} le contrat ?
 10764  10764   
 10765  10765   
 10766  10766   !!
 10767  10767   !!
 10768         -!!!! Participes passés avec formes interrogatives
        10768  +!!!! Participes passés avec formes interrogatives                                                 !!
 10769  10769   !!
 10770  10770   !!
 10771  10771   
 10772  10772   __[i]/ppas(ppas_avoir_pronom1)__
 10773  10773       (?<![ltm]’)({avoir})[- ](?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|on) +({w2})  @@0,$
 10774  10774       <<- morph(\1, ":V0a", False) and morphex(\2, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \2 != "prise"
 10775  10775           and not morph(word(-1), ">(?:les|[nv]ous|en)|:[NAQ].*:[fp]", False) and not before(r"(?i)\b(?:quel(?:le|)s?|combien) ")
................................................................................
 10845  10845   TEST: se {{considérez}} comme un génie…
 10846  10846   TEST: se {{rencontrerons}} demain grands et petits.
 10847  10847   TEST: se {{crois}} élu par Dieu…
 10848  10848   TEST: avec ceux se trouvant sur leur chemin
 10849  10849   
 10850  10850   
 10851  10851   
 10852         -!!!! Confusions ou/où
        10852  +!!!! Confusions ou/où                                                                             !!
 10853  10853   
 10854  10854   __[i]/conf(conf_det_nom_où_pronom)__
 10855  10855       ^ *(?:l(?:es? +|a +|’)|[nv]o(?:s|tre) +|ce(?:t|tte|s|) +|[mts](?:es|on|a) +|des +)({w_2}) +(ou) +(?:je|tu|ils?|elles? +> +\w+|[nv]ous +> +\w+)  @@w,w
 10856  10856       <<- morphex(\1, ":[NAQ]", ":G")
 10857  10857       -2>> où                                                                         # Confusion probable. Pour évoquer un lieu ou un moment, écrivez :|http://fr.wiktionary.org/wiki/o%C3%B9
 10858  10858   
 10859  10859   TEST: L’hôtel {{ou}} ils sont allés l’été dernier.
 10860  10860   
 10861  10861   
 10862  10862   
 10863  10863   
 10864  10864   !!!
 10865  10865   !!!
 10866         -!!! Processeur avant impératif
        10866  +!!! Processeur avant impératif                                                                    !!
 10867  10867   !!!
 10868  10868   !!!
 10869  10869   
 10870  10870   __<i>(p_n_importe_qui_quoi)__       n(’)importe quo?i @@1 <<- ~1>> `
 10871  10871   
 10872  10872   
 10873  10873   __<i](p_premier_ne_pro_per_obj1)__
................................................................................
 10904  10904   TEST: Ne manquer de rien.
 10905  10905   TEST: Ne jamais miser sur ces tocards.
 10906  10906   TEST: Ne m’en rien laisser.
 10907  10907   
 10908  10908   
 10909  10909   !!
 10910  10910   !!
 10911         -!!!! Impératif !
        10911  +!!!! Impératif !                                                                                  !!
 10912  10912   !!
 10913  10913   !!
 10914  10914   
 10915  10915   # Confusions
 10916  10916   __[i]/imp(imp_confusion_2e_pers_pluriel)__
 10917  10917       ({w_2}(?:er|ai[st]|ée?s?)) (moi|l(?:es?|a|eur|ui)|nous|vous)  @@0,$
 10918  10918       <<- morph(\1, ":V", False) and isStart() >>>
................................................................................
 11036  11036   TEST: {{Vas}} au diable !
 11037  11037   TEST: {{Écartes}} de moi cette coupe.
 11038  11038   TEST: explique-{{leurs}} de quoi il est question.
 11039  11039   
 11040  11040   
 11041  11041   !!
 11042  11042   !!
 11043         -!!!! Impératif: traits d’union manquants
        11043  +!!!! Impératif: traits d’union manquants                                                          !!
 11044  11044   !!
 11045  11045   !!
 11046  11046   
 11047  11047   __[i]/imp(imp_union_moi_toi)__
 11048  11048       (?<!’)({w_2}) ([mt]oi)(?! même)  @@0,$
 11049  11049       <<- morphex(\1, ":E", ":[GM]")
 11050  11050       ->> \1-\2
................................................................................
 11157  11157   TEST: {{vas y}}, ce n’est pas dangereux
 11158  11158   TEST: {{convenez en}}, c’est une belle affaire malgré son prix élevé
 11159  11159   
 11160  11160   
 11161  11161   
 11162  11162   !!!
 11163  11163   !!!
 11164         -!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.
        11164  +!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.  !!
 11165  11165   !!!
 11166  11166   !!!
 11167  11167   
 11168  11168   # Brainfuck (ici, prudence !)
 11169  11169   __[i](p_pro_per_obj01)__
 11170  11170       (ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y)) +({w_1})  @@0,$
 11171  11171       <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
................................................................................
 11305  11305       <<- __also__ ~1>> *
 11306  11306   # Fin du Brainfuck
 11307  11307   
 11308  11308   
 11309  11309   
 11310  11310   !!
 11311  11311   !!
 11312         -!!!! Confusions
        11312  +!!!! Confusions                                                                                   !!
 11313  11313   !!
 11314  11314   !!
 11315  11315   
 11316  11316   #### CONFUSION a / à
 11317  11317   __[i]/conf(conf_pronom_verbe_à)__
 11318  11318       ^ *(?:je|tu|ils?|on|elles?) +({w_2}) +(a)  @@w,$
 11319  11319       <<- morph(\1, ":V", False) and \2 != "A"
................................................................................
 11381  11381   TEST: Veillez à éviter de faire des fautes.
 11382  11382   TEST: Veillez votre mari qui est malade.
 11383  11383   
 11384  11384   
 11385  11385   
 11386  11386   !!
 11387  11387   !!
 11388         -!!!! Infinitif
        11388  +!!!! Infinitif                                                                                    !!
 11389  11389   !!
 11390  11390   !!
 11391  11391   
 11392  11392   __[i]/infi(infi_comment_où)__
 11393  11393       (?:comment|où) +({w_2}(?:ée?s?|ez))  @@$
 11394  11394       <<- morphex(\1, ":V", ":M") and not (\1.endswith("ez") and after(" +vous"))
 11395  11395       -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.
................................................................................
 11485  11485   TEST: ils sont {{tromper}} par tous ces hypocrites.
 11486  11486   TEST: Jeûner n’est pas seulement cesser de manger.
 11487  11487   TEST: Ne pas aimer n’est pas oublier l’autre.
 11488  11488   
 11489  11489   
 11490  11490   !!
 11491  11491   !!
 11492         -!!!! Conjugaison
        11492  +!!!! Conjugaison                                                                                  !!
 11493  11493   !!
 11494  11494   !!
 11495  11495   
 11496  11496   ## 1sg
 11497  11497   __[i]/conj(conj_j)__
 11498  11498       j’({w_1})  @@2
 11499  11499       <<- morphex(\1, ":V", ":1s|>(?:en|y) ") >>>
................................................................................
 12037  12037       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 12038  12038   
 12039  12039   TEST: Des hommes {{arrive}}.
 12040  12040   TEST: Des femmes ne {{demande}} rien.
 12041  12041   TEST: des femmes qui {{conduise}} la marche du monde.
 12042  12042   
 12043  12043   
 12044         -!!!! Quel(le) que soit / quel(le)s que soient
        12044  +!!!! Quel(le) que soit / quel(le)s que soient                                                     !!
 12045  12045   
 12046  12046   # singulier
 12047  12047   __[i]/conj(conj_quel_quelle_que_3sg1)__
 12048  12048       quel(?:le|)s? que ([sf]\w+) +(?:l[ea]|ce(?:t|tte|)|[mts](?:a|on)|[nv]otre|leur)  @@w
 12049  12049       <<- morphex(\1, ":V0e", ":3s")
 12050  12050       -1>> =suggVerb(@, ":3s")                                                             # Conjugaison erronée. Mettez “être” à la 3ᵉ personne du singulier.
 12051  12051   
................................................................................
 12114  12114   TEST: Samantha et Eva {{viennes}} demain.
 12115  12115   TEST: Samantha et Eva leur {{décrive}} une leçon.
 12116  12116   
 12117  12117   
 12118  12118   
 12119  12119   !!
 12120  12120   !!
 12121         -!!!! Inversion verbe sujet
        12121  +!!!! Inversion verbe sujet                                                                        !!
 12122  12122   !!
 12123  12123   !!
 12124  12124   
 12125  12125   __[i]/conj(conj_que_où_comment_verbe_sujet_sing)__
 12126  12126       (?:que?|où|comment|combien|dont|quand|pourquoi) +({w1}) (l(?:e(?:ur | )|a |’)|[mts](?:on|a) |ce(?:t|tte|) |[nv]otre |du ) *(?!plupart|majorité)({w1})  @@w,w,$
 12127  12127       <<- morphex(\1, ":(?:[12]s|3p)", ":(?:3s|G|W|3p!)") and not after("^ +(?:et|ou) (?:l(?:es? |a |’|eurs? )|[mts](?:a|on|es) |ce(?:tte|ts|) |[nv]o(?:s|tre) |d(?:u|es) )")
 12128  12128       -1>> =suggVerb(@, ":3s")                                                        # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du singulier.
................................................................................
 12193  12193   TEST: {{puisse}} les hommes enfin comprendre leurs erreurs.                         ->> puissent
 12194  12194   TEST: {{puisses}} notre ennemi trembler de peur devant notre courage.               ->> puisse
 12195  12195   
 12196  12196   
 12197  12197   
 12198  12198   !!
 12199  12199   !!
 12200         -!!!! Formes interrogatives ?
        12200  +!!!! Formes interrogatives ?                                                                      !!
 12201  12201   !!
 12202  12202   !!
 12203  12203   
 12204  12204   __[i]/inte(inte_union_xxxe_je)__
 12205  12205       (?<![jJ]’)({w_2}[éèe]) je  @@0
 12206  12206       <<- morphex(\1, ":V.*:1[sŝś]", ":[GNW]") and not before(r"(?i)\bje +$") and morphex(word(1), ":", ":(?:Oo|X|1s)", True)
 12207  12207       ->> =\1[:-1]+"é-je"                                                                             # Forme interrogative ? Mettez un trait d’union.
................................................................................
 12323  12323       -1>> =suggSimil(\1, ":3p", False)                                                               # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel.
 12324  12324   
 12325  12325   TEST: {{attaquant}}-ils                                     ->> attaquent
 12326  12326   TEST: {{prendrons}}-elles un verre avec moi ?
 12327  12327   
 12328  12328   
 12329  12329   
 12330         -!!!! Verbe auxiliaire
        12330  +!!!! Verbe auxiliaire                                                                             !!
 12331  12331   
 12332  12332   __[i]/conf(conf_avoir_sujet_participe_passé)__
 12333  12333       ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas})  @@0,$
 12334  12334       <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _  # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.
 12335  12335   __[i]/conf(conf_sujet_avoir_participe_passé)__
 12336  12336       (?:j’|je |tu |ils? |elles? |on ) *({avoir}) +({ppas})  @@*,$
 12337  12337       <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _  # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.
................................................................................
 12341  12341   TEST: Avais-je partie liée avec lui ?
 12342  12342   TEST: il {{avait}} parti.
 12343  12343   
 12344  12344   
 12345  12345   
 12346  12346   !!
 12347  12347   !!
 12348         -!!!! Modes verbaux
        12348  +!!!! Modes verbaux                                                                                !!
 12349  12349   !!
 12350  12350   !!
 12351  12351   
 12352  12352   # conditionnel / futur
 12353  12353   
 12354  12354   __[i]/vmode(vmode_j_aimerais_vinfi)__
 12355  12355       j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai|désirerai|adorerai) +({w_1})  @@w,$
................................................................................
 12506  12506   !!
 12507  12507   !!
 12508  12508   !!
 12509  12509   !!
 12510  12510   !!
 12511  12511   !!
 12512  12512   !!
 12513         -!! TESTS: Faux positifs potentiels
        12513  +!! TESTS: Faux positifs potentiels                                                                !!
 12514  12514   !!
 12515  12515   !!
 12516  12516   !!
 12517  12517   !!
 12518  12518   !!
 12519  12519   !!
 12520  12520   !!
................................................................................
 12529  12529   !!
 12530  12530   !!
 12531  12531   !!
 12532  12532   !!
 12533  12533   !!
 12534  12534   !!
 12535  12535   
 12536         -!!! À trier
        12536  +!!! À trier                                                                                       !!
 12537  12537   TEST: L’homme sur le bateau de Patrick {{viens}} de temps en temps {{mangé}} chez moi.
 12538  12538   TEST: Ces marchands {{passe}} leur temps à se quereller.
 12539  12539   TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.
 12540  12540   TEST: Ils sont de manière si étonnante et si admirable {{arrivé}} à ce résultat…
 12541  12541   TEST: Les tests grand public de Jean-Paul {{montre}} des résultats surprenants.
 12542  12542   TEST: Ils ont à plusieurs reprises {{perdus}} leur sang-froid.
 12543  12543   TEST: Ces attaques à main armée {{donne}} la chair de poule.
................................................................................
 12568  12568   TODO: Des copains plus vieux que moi qui fumaient.
 12569  12569   TODO: Des copains plus vieux que toi qui fumaient.
 12570  12570   TODO: André Juin était un sculpteur français.
 12571  12571   TODO: La bataille de Monte Cassino révèle le génie militaire du général Juin.
 12572  12572   TODO: Les côtes sont dans leur ensemble extrêmement découpées.
 12573  12573   
 12574  12574   
 12575         -!!! Indécidable
        12575  +!!! Indécidable                                                                                   !!
 12576  12576   TEST: Du sable fin grippe les rouages (accord avec ce qui précède).
 12577  12577   TEST: Du monde noir sortent les envahisseurs (accord avec ce qui suit).
 12578  12578   
 12579         -!!! Autres tests
        12579  +!!! Autres tests                                                                                  !!
 12580  12580   TEST: Ça a l’air de t’aller.
 12581  12581   TEST: Et je m’en sors.
 12582  12582   TEST: C’est à chacun d’entre nous de suivre le modèle d’Amos.
 12583  12583   TEST: C’est toi qui voulais y aller.
 12584  12584   TEST: je ne suis qu’une joueuse en robe de soirée.
 12585  12585   TEST: Tu ne fais qu’aggraver les choses.
 12586  12586   TEST: Que veut-il ? Vous parler du boulot.
................................................................................
 12637  12637   TEST: Enfin, les thèmes de la nouvelle réforme ont été longuement débattus.
 12638  12638   TEST: Le moral des ménages au plus haut depuis 2007
 12639  12639   TEST: Ce qu’ils nous ont fait
 12640  12640   TEST: Comment vous expliquez ça ?
 12641  12641   TEST: Comment vous expliquer ça ?
 12642  12642   
 12643  12643   
 12644         -!!! Tests historiques
        12644  +!!! Tests historiques                                                                             !!
 12645  12645   
 12646  12646   ## Version 0.5.14
 12647  12647   TEST: par le léger tissu de rayonne qui les protégeait en ce moment.
 12648  12648   
 12649  12649   ## Version 0.5.11
 12650  12650   TEST: Un moteur à cylindrée fixe
 12651  12651   
................................................................................
 13413  13413   TEST: Je soussigné Pierre Dupont déclare avoir pris connaissance des conditions de ce contrat.
 13414  13414   TEST: J’ai mille cent timbres.
 13415  13415   TEST: À qui mieux mieux, à qui mieux mieux
 13416  13416   TEST: L’est est loin, la gare de l’est aussi.
 13417  13417   
 13418  13418   
 13419  13419   
 13420         -!!! Tests repris de LanguageTool
        13420  +!!! Tests repris de LanguageTool                                                                  !!
 13421  13421   ## NOTE : ces textes contiennent parfois des erreurs (corrigées quand repérées par le correcteur)
 13422  13422   
 13423  13423   TEST: Au voisinage du zéro absolu de température.
 13424  13424   TEST: La couronne périphérique alterne falaises abruptes et plages.
 13425  13425   TEST: Henri VIII rencontre François Iᵉʳ.
 13426  13426   TEST: à ce jour.
 13427  13427   TEST: avoir un bel avenir
................................................................................
 15478  15478   TEST: Le 29 février 2008.
 15479  15479   TEST: Le 29 février 2012.
 15480  15480   TEST: Le 29 février 2016.
 15481  15481   TEST: Le 29 février 2020.
 15482  15482   TEST: Le 29-février-2004
 15483  15483   
 15484  15484   
 15485         -!!! Le Horla, de Guy de Maupassant
        15485  +!!! Le Horla, de Guy de Maupassant                                                                !!
 15486  15486   # Nouvelle intégrale (228 lignes)
 15487  15487   # Certains points diffèrent du texte original tiré de Wikisource :
 15488  15488   # — les paragraphes sont souvent scindés pour des raisons pratiques.
 15489  15489   # — les virgules avant les points de suspension ont été supprimées
 15490  15490   # — moyen âge -> Moyen Âge
 15491  15491   TEST: Le Horla — Guy de Maupassant
 15492  15492   TODO: 8 mai. — Quelle journée admirable ! J’ai passé toute la matinée {{étendu}} sur l’herbe, devant ma maison, sous l’énorme platane qui la couvre, l’abrite et l’ombrage tout entière.
................................................................................
 15850  15850   TEST: Pourquoi ce corps transparent, ce corps inconnaissable, ce corps d’Esprit, s’il devait craindre, lui aussi, les maux, les blessures, les infirmités, la destruction prématurée ?
 15851  15851   TEST: La destruction prématurée ? toute l’épouvante humaine vient d’elle !
 15852  15852   TEST: Après l’homme le Horla. — Après celui qui peut mourir tous les jours, à toutes les heures, à toutes les minutes, par tous les accidents, est venu celui qui ne doit mourir qu’à son jour, à son heure, à sa minute, parce qu’il a touché la limite de son existence !
 15853  15853   TEST: Non… non… sans aucun doute, sans aucun doute… il n’est pas mort… Alors… alors… il va donc falloir que je me tue, moi !…
 15854  15854   # FIN DU HORLA
 15855  15855   
 15856  15856   
 15857         -!!! Double assassinat dans la rue morgue, d’Edgar Poe
        15857  +!!! Double assassinat dans la rue morgue, d’Edgar Poe                                                                 !!
 15858  15858   # Texte tiré de Wikisource
 15859  15859   # Les paragraphes ont été découpés pour réduire la longueur des tests.
 15860  15860   TEST: DOUBLE ASSASSINAT DANS LA RUE MORGUE — Edgar Poe
 15861  15861   TEST: Quelle chanson chantaient les sirènes ? quel nom Achille avait-il pris, quand il se cachait parmi les femmes ? – Questions embarrassantes, il est vrai, mais qui ne sont pas situées au-delà de toute conjecture.
 15862  15862   TEST: Sir Thomas Browne.
 15863  15863   TODO: Les facultés de l’esprit qu’on définit par le terme {{analytiques}} sont en elles-mêmes fort peu susceptibles d’analyse.
 15864  15864   TEST: Nous ne les apprécions que par leurs résultats. Ce que nous en savons, entre autres choses, c’est qu’elles sont pour celui qui les possède à un degré extraordinaire une source de jouissances des plus vives.
................................................................................
 16394  16394   TEST: Néanmoins, qu’il n’ait pas pu débrouiller ce mystère, il n’y a nullement lieu de s’en étonner, et cela est moins singulier qu’il ne le croit ; car, en vérité, notre ami le préfet est un peu trop fin pour être profond. Sa science n’a pas de base.
 16395  16395   TEST: Elle est tout en tête et n’a pas de corps, comme les portraits de la déesse Laverna, – ou, si vous aimez mieux, tout en tête et en épaules, comme une morue.
 16396  16396   TEST: Mais, après tout, c’est un brave homme. Je l’adore particulièrement pour un merveilleux genre de cant auquel il doit sa réputation de génie.
 16397  16397   TEST: Je veux parler de sa manie de nier ce qui est, et d’expliquer ce qui n’est pas[2].
 16398  16398   # FIN DU DOUBLE ASSASSINAT DANS LA RUE MORGUE
 16399  16399   
 16400  16400   
 16401         -!!! Vers Dorés, de Pythagore
        16401  +!!! Vers Dorés, de Pythagore                                                                      !!
 16402  16402   # Origine?
 16403  16403   TEST: Aux dieux, suivant les lois, rends de justes hommages ;
 16404  16404   TEST: Respecte le serment, les héros et les sages ;
 16405  16405   TEST: Honore tes parents, tes rois, tes bienfaiteurs ;
 16406  16406   TEST: Choisi parmi tes amis les hommes les meilleurs.
 16407  16407   TEST: Sois obligeant et doux, sois facile en affaires.
 16408  16408   TEST: Ne hais pas ton ami pour des fautes légères ;
................................................................................
 16494  16494   TEST: XXX. Mais abstiens-toi des aliments que je t’ai défendus. Apprends à discerner ce qui est nécessaire dans la purification et la délivrance de l’âme. Examine tout ; donne à ta raison la première place et, content de te laisser conduire, abandonne-lui les rênes.
 16495  16495   TEST: XXXI. Ainsi, quand tu auras quitté les dépouilles mortelles, tu monteras dans l’air libre ; tu deviendras un dieu immortel et la mort n’aura plus d’empire sur toi.
 16496  16496   TEST: Fin des vers dorés de Pythagore
 16497  16497   TEST: Note : Chez les Pythagoriciens, la monade ou l’unité représente Dieu-même, parce qu’elle n’est engendrée par aucun nombre, qu’elle les engendre tous, qu’elle est simple et sans aucune composition. La dyade, ou le nombre deux, est l’image de la nature créée, parce qu’elle est le premier produit de l’unité, parce qu’elle est inspirée, parce qu’ayant des parties elle peut se décomposer et se défendre. La monade et la dyade réunies forment le ternaire, et représentent l’immensité de tout ce qui existe, l’être immuable et la matière altérable et changeante. J’ignore par quelle propriété le quaternaire, le nombre quatre, est encore un emblème de la divinité.
 16498  16498   # FIN DES VERS DORÉS DE PYTHAGORE
 16499  16499   
 16500  16500   
 16501         -!!! Épître du feu philosophique, de Jean Pontanus
        16501  +!!! Épître du feu philosophique, de Jean Pontanus                                                 !!
 16502  16502   # Les paragraphes ont été découpés et ne correspondent pas à ceux du texte.
 16503  16503   TEST: Épître du Feu Philosophique
 16504  16504   TEST: Lettre concernant la pierre dite philosophale
 16505  16505   TEST: Jean Pontanus
 16506  16506   TEST: in Theatrum Chimicum, 1614, t. III
 16507  16507   TEST: « Nous affirmons, au contraire, — et l’on peut avoir foi en notre sincérité, — qu’il sera impossible d’obtenir le moindre succès dans l’Œuvre si l’on a pas une connaissance parfaite de ce qu’est le Vase des Philosophes ni de quelle manière il faut le fabriquer. Pontanus avoue qu’avant de connaître ce vaisseau secret il avait recommencé, sans succès, plus de deux cents fois le même travail, quoiqu’il besognât sur les matières propres et convenables, et selon la méthode régulière. L’artiste doit faire lui-même son vaisseau ; c’est une maxime de l’art. N’entreprenez rien, en conséquence, tant que vous n’aurez pas reçu toute la lumière sur cette coquille de l’œuf qualifiée secretum secretorum chez les maîtres du Moyen Âge. »
 16508  16508   TEST: — Fulcanelli, Le Mystère des Cathédrales, p. 204-205
................................................................................
 16540  16540   TEST: Et moyennant notre feu, la médecine se multipliera si elle est conjointe à la matière crue, non seulement en quantité mais aussi en vertu.
 16541  16541   TEST: Recherche donc de toutes les forces de ton esprit ce feu, et tu parviendras au but que tu t’es proposé ; car c’est lui qui fait tout l’œuvre, et il est la clef de tous les Philosophes, laquelle ils n’ont jamais révélée dans leurs livres.
 16542  16542   TEST: Si tu penses bien profondément aux propriétés du feu ci-dessus, tu la connaîtras, mais non autrement.
 16543  16543   TEST: Donc, touché d’un mouvement de pitié, j’ai écrit ceci ; mais, et afin que je me satisfasse, le feu n’est point transmué avec la matière, comme je l’ai dit ci-dessus.
 16544  16544   TEST: J’ai bien voulu le dire et en avertir les prudents de ces choses, pour qu’ils ne dépensent pas inutilement leur argent, mais qu’ils sachent auparavant ce qu’ils doivent chercher, et, par ce moyen, parviendront à la vérité de l’Art ; non pas autrement. À Dieu.
 16545  16545   # FIN DE L’ÉPÎTRE DU FEU PHILOSOPHIQUE
 16546  16546   
 16547         -!!! Le Misanthrope, de Molière
        16547  +!!! Le Misanthrope, de Molière                                                                    !!
 16548  16548   TEST: LE MISANTHROPE (1666)
 16549  16549   TEST: de Molière
 16550  16550   TEST: Texte établi par Charles Louandre, Charpentier, 1910 (2, pp. 170-239).
 16551  16551   TEST: PERSONNAGES
 16552  16552   TEST: Alceste, amant de Célimène,
 16553  16553   TEST: Philinte, ami d’Alceste,
 16554  16554   TEST: Oronte, amant de Célimène,