Wikilivres frwikibooks https://fr.wikibooks.org/wiki/Accueil MediaWiki 1.47.0-wmf.19 first-letter Média Spécial Discussion Utilisateur Discussion utilisateur Wikilivres Discussion Wikilivres Fichier Discussion fichier MediaWiki Discussion MediaWiki Modèle Discussion modèle Aide Discussion aide Catégorie Discussion catégorie Transwiki Discussion Transwiki Wikijunior Discussion Wikijunior TimedText TimedText talk Module Discussion module Event Event talk Enseignement de l'anglais/Proposition infinitive exercices 0 3223 772217 772177 2026-09-14T22:39:59Z JackPotte 5426 Bravo mais il faut laisser le questionnaire sans le fusionner avec le paragraphe "Correction" pour les autres. Annulation de la modification [[Special:Diff/772177|772177]] de [[Special:Contributions/~2026-49659-06|~2026-49659-06]] ([[User talk:~2026-49659-06|discussion]]) 772217 wikitext text/x-wiki Voir [[Image:Wikibooks-page.gif]] [[Enseignement de l'anglais/Proposition infinitive|le cours]]. __NOTOC__ == Exercice 1 == Choisissez la forme appropriée pour une proposition infinitive :<br />I want ... the piano. # she learns # that she learnt # I want her to learn the piano <br /> He persuaded .... so early. # I don't eat # me not to eat # me don't eat == Exercice 2 == Formez des phrases avec les éléments proposés : # would like / you / to / I / me / help # them / to / be / she / late / hates # sleep / she / waits for / to / him # want / I / them / understand / to / me == Exercice 3 == Traduisez les phrases suivantes : # Dis à ton frère de s'asseoir. # J'aimerais que tu achètes cette jupe. # Ils lui conseillent de faire du sport. # Elle nous dit de ne pas être intolérant. == Correction == ==== Exercice 1 ==== I want her to learn the piano.<br />He persuaded me not to eat so early. ==== Exercice 2 ==== # I would like you to help me. # She hates them to be late. # She waits for him to sleep. # I want them to understand me. ==== Exercice 3 ==== # Tell your brother to sit down. # I'd like you to buy this skirt. # They advise him to do sport. # She tells us not to be intolerant. Retour [[Enseignement de l'anglais]] [[Catégorie:Enseignement de l'anglais (livre)|Proposition infinitive exercices]] 2udgbksz54fzf5lz9y5ntleusnudktk Livre de cuisine/Flan au potimarron 0 16564 772207 372257 2026-09-14T17:51:11Z Cdang 1202 /* Ingrédients */ potimarron : ingrédient 772207 wikitext text/x-wiki {{SansGluten}} {{Livre de cuisine}} == Ingrédients == * 1 kg de {{i|potimarron}} * 500 g de {{i|lait de soja}} * {{i|sucre}} roux ou complet * 4 {{i|'=oui|œuf}}s == Préparation == *Laver le potimarron et le faire cuire à la vapeur à feu doux. *Mélanger 1/2 du potimarron aux œufs, verser le sucre et le lait. *Verser le 1/2 potimarron restant, couper en cube à la préparation. *Faire cuire au four 25 minutes, servir. [[Catégorie:Desserts|Flan au potimarron]] [[Catégorie:Recettes végétariennes|Flan au potimarron]] 2a46hjnm5148jq3wnlkah34o3r7c31w Livre de cuisine/Chả giò 0 23142 772215 569286 2026-09-14T19:15:34Z Cdang 1202 wikif 772215 wikitext text/x-wiki {{livre de cuisine}} Le '''chả giò''' (vocabulaire du Sud) , appelé [[Livre de cuisine/Nems|nem]] (vocabulaire du Nord) en occident (et particulièrement en France), est une galette (ou crêpe) de [[riz]] frite fourrée avec une duxelle (c'est-à-dire une farce à base d'ingrédients hachés ou coupés menu). Les Vietnamiens du Sud les appellent « chả giò » mais les Vietnamiens du Centre les appellent « cuốn ram ». La langue vietnamienne étant très factuelle, le nom de ce [[cuisine vietnamienne|plat vietnamien]] célèbre (bien que sous un nom d'emprunt) signifie « friture de [[wiktionary:fr:duxelles|duxelles]] ». == Recette == Chả giò cua (au crabe) === Ingrédients === Il vous faut pour environ 6 rouleaux : * de la chair de {{i|crabe}} : environ 300 g, * des {{i|vermicelle de riz|vermicelles}} chinois : environ 50 g, * un demi-{{i|concombre}}, * un {{i|oignon|'=o}}, * deux blancs d'{{i|œuf|'=o}}, * sel et {{i|poivre}}. Pour les rouleaux : * des {{i|galette de riz|galettes de riz}} de diamètre d'environ 15 cm, * de l'{{i|huile végétale|'=o}} pour friture Pour la sauce : * du {{i|nuoc mam}} (sauce de poisson) * un {{i|citron}} (vert si possible) * du {{i|sucre}} * un {{i|piment}} frais (optionnel) Pour l'accompagnement : * une {{i|laitue}} fraîche * de la {{i|coriandre}} en branches vendue dans les boutiques chinoises, vietnamiennes ou arabes * de la {{i|menthe}} en branches (-idem-) * un {{i|vin blanc}} ou {{i|vin|rosé}}. === Matériel === * un grand bol de préparation * une paire de ciseaux de cuisine ou un grand couteau à découper * une planche à découper * une sauteuse * un petit bol pour la sauce === Préparation === On préparera la sauce avant la cuisson des cylindres : * Dans une tasse, mélanger un volume de « [[nuoc-mam]] » pour trois volumes d'eau. * Y faire fondre un volume de sucre pour adoucir le goût, et compléter avec un volume citron. * On peut ajouter des feuilles de coriandre frais ou de persil coupées. * On peut éventuellement ajouter de l'ail pilé au mortier et des carottes râpées. Laver et égoutter la salade et les feuilles de coriandre et de menthe. Si la menthe est séchée, l'humecter à l'avance, et l'égoutter dans un ravier. Préparer les rouleaux : * Mettre les vermicelles dans l'eau froide pour les ramollir. * Couper l'oignon et le demi-concombre en tranches puis en fines lanières sur la planche à découper et les hacher dans l'autre sens. * Égoutter les vermicelles, les découper en filaments de moins d'1 cm aux ciseaux ou avec un grand couteau à découper. * Dans un grand bol, mélanger les vermicelles avec l'oignon finement coupé, le concombre, les blancs d'œuf et la chair de crabe pour former une farce. * Saler et poivrer la farce selon votre goût (on pourra mouliner un mélange aux 5 baies plus finement parfumées, ou du poivre de Si Chuan). * Mouiller légèrement les galettes de riz pour les ramollir. * Farcir chaque galette d'une noix de duxelle au milieu, replier la galette des deux côtés vers le centre, puis enrouler la galette tout pour former un petit cylindre fermé. Réserver au frais sur une assiette. Juste avant de servir : * Verser un fond d'huile dans la sauteuse avec un feu vif au début, puis moyen après. * Y faire frire les cylindres de « chã giò cua » jusqu'à ce qu'ils soient bien dorés et légèrement croquants. * Sortir et égoutter les cylindres sur du papier absorbant pour en ôter l'excès d'huile. * Ne pas réutiliser l'huile. == Service == À table : * Servir les « chả giò cua » encore chauds ou tièdes. * Les rouler dans une feuille de salade, avec une feuille de coriandre et de la menthe. * Tremper le tout dans de la sauce au nuoc mam. Une bouteille de Côte de Provence rosé ou un vin de Loire blanc ou rosé accommode très bien ce plat. [[Catégorie:Cuisine vietnamienne]] 870vtwug2i2619w5keuwglcscpxjdrh Livre de cuisine/Tarte à la citrouille et aux épices 0 28231 772209 569204 2026-09-14T17:53:45Z Cdang 1202 ingrédients 772209 wikitext text/x-wiki {{Livre de cuisine}} {{Boîte cuisine| photo=[[Image:Recette Tarte citrouille etape 3.jpg|200px]]| contenu= [[Image:Recette Tarte citrouille etape 1.jpg|200px|center]] * Dans une terrine mélanger tous les ingrédients de la garniture, puis les passer au mixeur (ou utiliser un robot). [[Image:Recette Tarte citrouille etape 2.jpg|200px]] * Préparer une pâte brisée avec une cuillère à café de cannelle en poudre, la précuire et y verser la garniture. Mettre au four à 180°C pendant 40 à 45 minutes, jusqu'à ce que la garniture ait pris. [[Image:Recette Tarte citrouille etape 3.jpg|200px]] * Une fois le gâteau tiède, décorez avec de la crème fraîche à l'aide d'une poche à douilles. |}} La '''tarte à la citrouille et aux épices''' peut aussi se préparer avec un {{i|potimarron}}, ou avec toute {{i|courge}} plutôt sucrée et qui ne contient pas trop d'eau. Pour un grand plat (30 cm). == Ingrédients == * un fond [[Livre de cuisine/Pâte brisée|pâte brisée]], préparée avec une cuillère à café de {{i|cannelle}} === Pour la garniture === * 800 g de purée de {{i|citrouille}} (selon la courge utilisée, le poids de purée obtenu vaut entre la moitié et les deux tiers du {{i|fruit}} entier) * 3 dl de [[w:Crème fraîche|crème fraîche]] * 175 g de [[w:Sucre|sucre roux]] * 3 [[w:Œuf|œufs]] * 2 cuillères de sirop d'érable * un peu d'extrait de {{i|vanille}} * 1/2 cuillère de cannelle en poudre * 1/2 cuillère de gingembre * 1/4 cuillère de {{i|muscade}} rapée === Pour la décoration === * crème fraîche == Préparation == * Préparer une pâte brisée en y ajoutant une cuillère à café de cannelle en poudre (300 g de {{i|farine}} et 150 g de {{i|beurre}} pour un plat de 30 cm). La précuire à 200 °C. * Mélanger les ingrédients de la garniture et les mixer. * Verser le mélange dans le fond de tarte et mettre au four à 180°C pendant 40 à 45 min jusqu'à ce que la garniture ait pris. * Une fois la tarte tiède, décorer avec de la crème fraîche à l'aide d'une poche à douilles. [[Catégorie:Pâtisseries]] [[Catégorie:Recettes végétariennes]] dv36fwg4e3bhgivtkpgv1w3hjck1sko Livre de cuisine/Nems 0 29343 772214 601210 2026-09-14T19:11:41Z Cdang 1202 /* Présentation générale */ Livre de cuisine/Chả giò 772214 wikitext text/x-wiki {{livre de cuisine}} == Présentation générale == Les nems ou pâtés impériaux sont d'origine vietnamienne. Ils consistent en une farce enveloppée dans une galette de riz frit dans l'huile. Le Nem se déguste chaud, enveloppé dans une feuille de {{i|salade}} additionnée d'une ou deux feuilles de menthe et de {{i|carotte}}s râpées provenant de la sauce. Le Nem se tient avec les doigts, on le trempe à souhait dans la sauce. Dans le sud du Vietnam, ils sont appelés ''chả giò''. {{voir|[[../Chả giò]]}} == Ingrédients == [[Image:Spring rolls 001.jpg|right|thumb|300px|Nems traditionnels ]] * 500 g de porc (rouelle de préférence) * 2 {{i|'=oui|oignon}}s * 2 œufs * vermicelles cristal de type cheveux d'ange ({{i|vermicelle de soja}}) * 5 carottes * germes de {{i|pousse de soja|soja}} * 20 cl de Hua Tao Chew (vin chinois), à défaut du whisky * Le jus d'un {{i|citron}} * sel * {{i|poivre}} * Une poignée de champignons noirs * Galettes de {{i|riz}} == Préparation == ===La farce=== # Laisser tremper les champignons noirs dans l'eau jusqu'à ce qu'ils soient bien gonflés et tendres (20 minutes environ) # Procéder de même avec le vermicelle (une petite poignée) # Hacher le {{i|porc}} # Hacher finement les oignons (mais pas en purée) # Hacher le vermicelle # Hacher les champignons noirs # Râper les carottes (conserver un peu de carottes râpées pour la sauce) # Mélanger le tout au hachis de porc # Incorporer les 2 œufs, le sel, le poivre et le verre d'alcool ===La confection des Nems=== # Mettre la galette à tremper dans de l'eau tiède dans laquelle on aura ajouté le jus de citron (ou à défaut du vinaigre) # Sortir la galette après l'avoir retournée 2 à 3 fois dans l'eau # Poser la galette sur une serviette propre étalée sur la table puis la farcir d'une bonne cuillerée à café de préparation hachée. # Rabattre les extrémités sur la farce puis rouler comme pour confectionner un cigare # Cuire à la friture ===La {{i|sauce}} d'accompagnement=== # Dans un bol, mélanger le sucre, le {{i|vinaigre}} et le {{i|nuoc mam}} # Ajouter de l'eau et des carottes râpées ou des germes de soja, bien mélanger === Boisson === * Bière vietnamienne == Variante == Il existe aussi des nems au {{i|poulet}} et au crabe. == Note == [[Catégorie:Fritures|Nems]] [[Catégorie:Cuisine d'Asie|Nems]] [[Catégorie:Cuisine vietnamienne|Nems]] d2y33302c4zazmibpsk9kusvv1vvkxu 772216 772214 2026-09-14T19:17:01Z Cdang 1202 /* Variante */ végé 772216 wikitext text/x-wiki {{livre de cuisine}} == Présentation générale == Les nems ou pâtés impériaux sont d'origine vietnamienne. Ils consistent en une farce enveloppée dans une galette de riz frit dans l'huile. Le Nem se déguste chaud, enveloppé dans une feuille de {{i|salade}} additionnée d'une ou deux feuilles de menthe et de {{i|carotte}}s râpées provenant de la sauce. Le Nem se tient avec les doigts, on le trempe à souhait dans la sauce. Dans le sud du Vietnam, ils sont appelés ''chả giò''. {{voir|[[../Chả giò]]}} == Ingrédients == [[Image:Spring rolls 001.jpg|right|thumb|300px|Nems traditionnels ]] * 500 g de porc (rouelle de préférence) * 2 {{i|'=oui|oignon}}s * 2 œufs * vermicelles cristal de type cheveux d'ange ({{i|vermicelle de soja}}) * 5 carottes * germes de {{i|pousse de soja|soja}} * 20 cl de Hua Tao Chew (vin chinois), à défaut du whisky * Le jus d'un {{i|citron}} * sel * {{i|poivre}} * Une poignée de champignons noirs * Galettes de {{i|riz}} == Préparation == ===La farce=== # Laisser tremper les champignons noirs dans l'eau jusqu'à ce qu'ils soient bien gonflés et tendres (20 minutes environ) # Procéder de même avec le vermicelle (une petite poignée) # Hacher le {{i|porc}} # Hacher finement les oignons (mais pas en purée) # Hacher le vermicelle # Hacher les champignons noirs # Râper les carottes (conserver un peu de carottes râpées pour la sauce) # Mélanger le tout au hachis de porc # Incorporer les 2 œufs, le sel, le poivre et le verre d'alcool ===La confection des Nems=== # Mettre la galette à tremper dans de l'eau tiède dans laquelle on aura ajouté le jus de citron (ou à défaut du vinaigre) # Sortir la galette après l'avoir retournée 2 à 3 fois dans l'eau # Poser la galette sur une serviette propre étalée sur la table puis la farcir d'une bonne cuillerée à café de préparation hachée. # Rabattre les extrémités sur la farce puis rouler comme pour confectionner un cigare # Cuire à la friture ===La {{i|sauce}} d'accompagnement=== # Dans un bol, mélanger le sucre, le {{i|vinaigre}} et le {{i|nuoc mam}} # Ajouter de l'eau et des carottes râpées ou des germes de soja, bien mélanger === Boisson === * Bière vietnamienne == Variante == Il existe aussi des nems au {{i|poulet}}, au crabe et végétariens. == Note == [[Catégorie:Fritures|Nems]] [[Catégorie:Cuisine d'Asie|Nems]] [[Catégorie:Cuisine vietnamienne|Nems]] my86trb3uxjlpdhw99ikhe0qdgz79c0 Discussion utilisateur:Lionel Scheepmans 3 42849 772213 766757 2026-09-14T18:36:19Z Xhungab 23827 772213 wikitext text/x-wiki Je vous écoute {{sourire}} Bonjour, Lionel Scheepmans, et [[Wikilivres:Bienvenue|bienvenue]] sur Wikilivres. En cas de besoin, voici quelques pages qui devraient vous être utiles si vous n'êtes pas familiers des [[w:Wiki|wikis]] : *[[Aide:Comment modifier une page|Comment modifier une page]] *[[Aide:Accueil|Sommaire des pages d'aide]] *[[Wikilivres:Conventions typographiques|Conventions typographiques]] *[[Wikilivres:Règles|Règles et recommandations]] *[[Wikilivres:Bac à sable|Le bac à sable pour essayer la syntaxe wiki]] Pour signer vos messages en page de discussion (on ne [[Wikilivres:Règles#Rédaction collective|signe pas]] les livres) utilisez quatre tildes (<nowiki>~~~~</nowiki>); cela produira automatiquement votre nom et la date de publication. Si vous avez besoin d'aide, demandez à la communauté au [[Wikilivres:Le Bistro|Bistro]] ou sur ma propre page de discussion, ou bien consultez la [[Wikilivres:Foire aux questions|FAQ]] . Bonne continuation. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) == Copie-Coller == Bonjour, il faut éviter ce type de transfert, il serait plutôt préférable de demande une [[Spécial:Import|importation]] à un administrateur. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) :Bonjour[[Utilisateur:FrankyLeRoutier|Franky]] et merci pour ton message d'accueil. Malheureusement, je ne comprends pas ce que tu veux dire dans ton deuxième message ci-dessus ? Peux-tu être plus explicite ? Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 10 décembre 2014 à 14:17 (CET) ::Rebonjour Lionel, par exemple si un des auteurs de cette [[Clefs pour mieux comprendre le monde et participer à son évolution|page]] effectue un copie-coller de son contenu sur Wikiversité sans faire l'importation des [[:w:Aide:Historique|historiques]], il ne respectera pas les droits des contributeurs puisque l'article source sera supprimés. Amicalement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 11 décembre 2014 à 05:22 (CET) :::Oui effectivement [[Utilisateur:FrankyLeRoutier|Franky]], je comprends mieux ta remarque. Je pensais que tu faisait allusion au copier coller d'un livre au départ d'un fichier de son ordinateur vers une page wiki comme ce fut le cas du texte en question. J'étais déjà en train de rêver à un outils d'importation accessible uniquement par les administrateurs et qui permettrait d'importer directement la mise en page d'un PDF par exemple. Ce n'étais qu'un rêve malheureusement. :::Donc oui, je prends bonne note qu'il faudra contacter un bibliothécaire si jamais le déplacement du texte s'avérait nécessaire. Je pense l'avoir déjà fait au sujet d'un modèle ou l'autre. Merci pour ta remarque et bonne journée à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 11 décembre 2014 à 09:10 (CET) ::::Bonjour Lionel, pour l'importation externe aux projets de la fondation, il y a cette page ; [[:s:Aide:Créer un fichier DjVu]] sur Wikisource. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 15 décembre 2014 à 01:56 (CET) == Édition d'historique == Bonjour, j'apprécie sincèrement ta présence sur le bistro, mais est-ce que tu vois sur ton navigateur [//fr.wikibooks.org/w/index.php?title=Wikilivres:Le_Bistro/2015&action=edit&oldid=460231 le bandeau rouge "Vous êtes en train de modifier une ancienne version de cette page"]. Je me pose la question car sur la Wikiversité tu avais aussi blanchi de cette façon les éditions postérieures à celle que tu regardais. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 21:05 (CET) :Oups désolé [[Utilisateur:JackPotte|JackPotte]]. Non je ne me souviens pas d'avoir vu apparaître ce bandeau dans mon navigateur Firerfox. Mais ma mémoire n'est pas fiable :/ . J'avoue que [[v:Wikiversité:La_salle_café/février_2015#Pas_de_notifications|j'ai des problèmes avec l'organisation des bistros]]. Faudrait que je comprenne un jour le pourquoi du comment. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 21:38 (CET) ::J'utilise aussi [[Firefox]] en habillage Monobook. D'ailleurs j'avais publié un "best of" des modules testés sur [[Firefox/Extensions]]. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 22:20 (CET) :::J'aime pas Monobook. C'est pas très joli et puis comme c'est pas le skin par défaut, c'est la meilleurs façon de ne pas voir les bug visible au grand publique. Merci pour le lien et bonne soirée, [[Utilisateur:JackPotte|JackPotte]], [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 22:48 (CET) == Matthius == Je te remercie pour tes messages sur la page de discussion WP de Matthius. Mais par contre, attention : "''Personne n'est censé venir y intervenir sans votre demande''" rétablit, de facto, le droit d'auteur. Et d'ailleurs comment peux-tu être aussi sûr que le déblocage se fera demain ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:25 (CEST) :Par ce que l'administrateur qui l'a bloqué m'a donné son aval. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 26 mai 2023 à 19:37 (CEST) ::Ne trouves-tu pas sage d'attendre l'avis d'au moins un autre administrateur ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:56 (CEST) :::Pas moins sage que le blocage qui s'est fait sous l'avis d'un seul administrateur. Ici, nous sommes deux sur trois actifs pour le moment. Et même trois comme je viens de le découvrir. As-tu quelque chose de personnelle contre cet utilisateur [[Utilisateur:Fourmidable|Fourmidable]] ? Ne trouves-tu pas que chacun a le droit à une seconde chance ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 17:51 (CEST) ::::Il y a urgence à bloquer un contributeur quand celui-ci parasite les débats avec des modifications non constructives comme des blanchiments de pages et des tentatives d'enfouir les discussions. Par contre, il n'y a aucune urgence à le débloquer : nous pouvons prendre le temps d'en discuter tranquillement. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 27 mai 2023 à 20:23 (CEST) :::::Je n'ai pas été contre le premier blocage. Et tu ne réponds pas à mes questions. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:29 (CEST) ::::::Et au fait [[Utilisateur:Fourmidable|Fourmidable]], t'es pas en examen toi ? T'en es où dans tes études ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:38 (CEST) :::::::J'ai répété maintes fois que je n'avais rien contre ce contributeur en dehors de Wikilivres, c'est très bien qu'il diffuse ses idées. On peut lui donner une seconde chance sur Wikilivres mais il faut qu'il montre de son côté un peu de bonne foi, ce que j'ai toujours du mal à voir chez lui. Souvent, ses propos sont incohérents : ex. : [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204511533 je ne vois pas de prise de position] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204524525 Ils prennent position effectivement] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204568649 Je pense que ce livrel est neutre]. Honnêtement, je ne sais pas à quoi il joue. De mon côté : licence finie, je vais peut-être passer un ou deux rattrapages pour faire le plein de points et ainsi espérer une mention. Je suis encore pour un mois au conservatoire, dont l'année se termine à la toute fin juin, voire début juillet pour les concerts. Du 9 au 31 juillet, je serai tout seul en cure thermale, nous pourrons faire plus facilement des visios (le reste de l'année je vis chez mes parents et ceux-ci sont assez hostiles à mes activités sur les wikis, c'est aussi pour ça que j'ai du mal à me rendre disponible). Je me prépare à un master Didactique des langues, à Paris, Lyon ou Montpellier. {{Sourire}} [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 28 mai 2023 à 19:23 (CEST) ::::::::Chouette programme ! Et bravo déjà pour le parcours effectué. Concernant Matthius, J'espère que le temps nous aidera à mieux le comprendre. Les sujet qu'il traite sont fondamentaux et pas si loin de mes propres intérêts. Raisons pour laquelle je m'y investi. J'espère qu'il aura intégré les règles de savoir-vivre. À suivre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 mai 2023 à 12:55 (CEST) :::::::::Honnêtement, je ne vois toujours pas comment on pourrait transformer ces ouvrages pour les rendre réellement utiles et valables. Mais si tu te sens inspiré, NHP à faire une proposition. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 30 mai 2023 à 11:20 (CEST) ::::::::::Le mot utilité me fait penser à l'utilitarisme, une autre philosophie politique critiquée en sciences sociales [[w:Revue_du_MAUSS|Revue du MAUSS]]. Quoi qu'il arrive, le travail de réécriture sera profitable pour l'auteur et intéressant pour moi. Il est possible qu'en fin de compte les livres ne soient pas comme tu voudrais qu'il le soit, et ce sera à la communauté d'en déterminer leurs validités pour l'espace principale. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 30 mai 2023 à 12:15 (CEST) : J'ai revu [https://archive.org/download/WikiBooks/Economie-petits%20Wikibooks.odt l'économie pour les petits]. Je pense qu'il est neutre même si je ne suis pas centriste. C'était le plus neutre des livrels qui ont été enlevés de Wikibooks. Pour l'instant, c'est le seul livrel qui pourrait être remis sur wikibooks. En plus il est court. Pourrez-vous m'aider à le remettre sur wikibooks ?--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 30 janvier 2024 à 05:51 (CET) ::Bonjour [[Utilisateur:Matthius|Matthius]]. Content de voir que tu consacres toujours du temps dans ta participation au projet Wikiversité. Je ne vois pas comment t'aider à replacer ton travail dans l'espace principale de Wikilivres si ce n'est en t'encourageant à le faire. Idéalement, il faudrait que ta nouvelle version du livre apparaisse sur [[Utilisateur:Matthius/Économie Petits|cette page où l'on a déplacé l'ancienne jugée inadéquate]] grâce à la fonction « diff » il sera ainsi facile de voir toutes les modifications que apportées à l'ouvrage. Par la suite, tu peux laisser un message au bistro pour informer la communauté des changements et de ton intention de replacer l'ouvrage dans l'espace principale. Suite aux discussions, on pourra alors faire les démarches nécessaires. N'oublie pas de signer tes messages, cela facilite les échanges. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> :::Bonjour Lionel, j'espère que tu n'es plus trop fâché contre moi ^^', et je te remercie encore pour ton suivi. J'ai donné ma critique sur le Bistro. Bien à vous deux, --[[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 5 février 2024 à 07:27 (CET) :::Salut @[[Utilisateur:Fourmidable|Fourmidable]]. Non je ne suis pas fâche. J'étais juste un peu irrité par ta façon de t'exprimé durant une période ou je te sentais particulièrement actif dans la sélection des contenus dans les projets wikimédia. Comme je suis plutôt en faveur de l'inclusion et l'encourragement er l'inclusion, avec certaines limites que j'ai déjà exprimé avec mes votes en faveur de certaines "suppression". Un terme inadéqua puisque rien n'est supprimé des serveurs en vérité, mais juste retirer de l'espace visible pas internaute. Raison pour laquelle, je préfère déplacer le contenu vers l'espace utilisateur de l'auteur en prenant soin d'empêcher le référencement pas les moteurs de recherches, alors qu'il me semble que les espace utilisateur ne le sont pas. :::Mais donc, contend.de reprendre contact avec toi Hérison. J'espère que tout se passe bien dans ta vie et tes études ! Bien à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 5 février 2024 à 11:11 (CET) Je propose mes livrels à la recréation. Je pense que Fourmidable n'est pas habitué à lire l'économie réelle. Je lui ai montré que valeur et monnaie sont liés et que la finance comme entité humaine c'est utilisé. Fourmidable n'agit plus maintenant.--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 26 avril 2024 à 10:40 (CEST) Cela fait 7 mois que mes livrels sont proposés à la publication dans wikibooks. Je comprends que vous vouliez garder les contributeurs à wikibooks, puisque vous êtes dorénavant le seul à participer à wikibooks pour mes livrels. Jacques Cheminade fait peur à Jackpotte. Pourtant Cheminade dit que ceux qui ont le plus peur de lui ne l'écoutent pas. Fourmidable est lui mandaté pour supprimer, pas pour restaurer. Sinon il aurait négocié avec moi une modification des livrels que j'ai finalement pu réaliser grâce à vous. Que pensez-vous faire ? --[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 7 décembre 2024 à 21:30 (CET) :Bonsoir @[[Utilisateur:Matthius|Matthius]]. Je n'ai pas de réponse à votre question. Si vous voulez restaurer vos livres, il suffit de les déplacer dans l'espace principale en les renomant. On verra par la suite les réaction des quelques membres de notre communauté. Cette discussion dure depuis longtemps et pour le dire franchement, j'y ai déjà consacré beaucoup de temps que je ne suis pas prête à consacrer aujourd'hui. Il y a un moment ou, en tant que bénévole, on se fatigue de faire la médiation entre deux personnes qui n'arrive pas à s'entendre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 01:56 (CET) :::Je vais les déplacer mais ça risque de réveiller quelqu'un. Ceci écrit, les livrels ont été neutralisés. Y a-t-il un moyen de garder l'historique ? ::::Quand on dit dêplacer, en réalité On change le nom de la page et rien d'autre pour qu'elle figure dans ce ca dans l'espaxe de nom principalr et plus dans l'espace de nom utilisateur. Une page renomée garde tout son historique. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 10:50 (CET) :Pour ceux qui m'ont défendu : [http://web.archive.org/web/20260517193237/https://www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50 www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50]--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 17 mai 2026 à 21:37 (CEST) == Pages orphelines == Bonjour, Il semble que tu as perdu quelques pages dans les pages orphelines. Pourrais tu les garder sur ta Page d’utilisateur pour les sortir des pages orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 18 février 2026 à 13:19 (CET) :@[[Utilisateur:Xhungab|Xhungab]]. Si tu n'indiques pas la personne à qui tu adresses ton message, tu risques de rester sans réponse. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:13 (CET) ::L'idéal est de la notifier en la faisant apparaitre en bleu grâce au menu de l'éditeur visuel qui affiche un petit bonhomme avec un + en haut à sa gauche. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:16 (CET) :::Oups. Oublie les messages précésent. Je croyais qu'on était dans le bistro... [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:24 (CET) * [[Le mouvement Wikimedia/Préface|Préface]] * [[Le mouvement Wikimédia/Deuxième partie :Cosmographie du mouvement Wikimédia|Deuxième partie :Cosmographie du mouvement Wikimédia]] * [[Le mouvement Wikimédia/Première partie : La naissance du mouvement Wikimédia|Première partie : La naissance du mouvement Wikimédia]] * [[Le mouvement Wikimédia2/Version imprimable|Version imprimable]] * [[Projet:KarthaLab|KarthaLab]] * [[Le mouvement Wikimédia/Livre audio|Le mouvement Wikimédia : Livre audio]] == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 28 avril 2026 à 20:33 (CEST) </div> <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 --> == '''Décision''':Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil == Petites nouvelles de wikibook. la décision a été prise. On a donc besoin d'un administrateur pour conclure ce travail. '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' '''Décision pour : [https://fr.wikibooks.org/wiki/Utilisateur:Xhungab '''Wikibook''']''' Résultats : 3 + Pour, un Neutre Neutre et un - Contre soit 60 % de + Pour par rapport au total des votes exprimés : la proposition est adoptée. Quelques propositions de reformulations et de nuances ont été faites qui pourront être prise en compte. Cdlt, VIGNERON * discut. 13 septembre 2026 à 18:27 (CEST) Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:35 (CEST) 3pz5c26uzh58uagx02y8vq7r6gina4e 772218 772213 2026-09-15T00:18:59Z Lionel Scheepmans 20012 /* Décision:Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil */ Réponse 772218 wikitext text/x-wiki Je vous écoute {{sourire}} Bonjour, Lionel Scheepmans, et [[Wikilivres:Bienvenue|bienvenue]] sur Wikilivres. En cas de besoin, voici quelques pages qui devraient vous être utiles si vous n'êtes pas familiers des [[w:Wiki|wikis]] : *[[Aide:Comment modifier une page|Comment modifier une page]] *[[Aide:Accueil|Sommaire des pages d'aide]] *[[Wikilivres:Conventions typographiques|Conventions typographiques]] *[[Wikilivres:Règles|Règles et recommandations]] *[[Wikilivres:Bac à sable|Le bac à sable pour essayer la syntaxe wiki]] Pour signer vos messages en page de discussion (on ne [[Wikilivres:Règles#Rédaction collective|signe pas]] les livres) utilisez quatre tildes (<nowiki>~~~~</nowiki>); cela produira automatiquement votre nom et la date de publication. Si vous avez besoin d'aide, demandez à la communauté au [[Wikilivres:Le Bistro|Bistro]] ou sur ma propre page de discussion, ou bien consultez la [[Wikilivres:Foire aux questions|FAQ]] . Bonne continuation. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) == Copie-Coller == Bonjour, il faut éviter ce type de transfert, il serait plutôt préférable de demande une [[Spécial:Import|importation]] à un administrateur. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) :Bonjour[[Utilisateur:FrankyLeRoutier|Franky]] et merci pour ton message d'accueil. Malheureusement, je ne comprends pas ce que tu veux dire dans ton deuxième message ci-dessus ? Peux-tu être plus explicite ? Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 10 décembre 2014 à 14:17 (CET) ::Rebonjour Lionel, par exemple si un des auteurs de cette [[Clefs pour mieux comprendre le monde et participer à son évolution|page]] effectue un copie-coller de son contenu sur Wikiversité sans faire l'importation des [[:w:Aide:Historique|historiques]], il ne respectera pas les droits des contributeurs puisque l'article source sera supprimés. Amicalement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 11 décembre 2014 à 05:22 (CET) :::Oui effectivement [[Utilisateur:FrankyLeRoutier|Franky]], je comprends mieux ta remarque. Je pensais que tu faisait allusion au copier coller d'un livre au départ d'un fichier de son ordinateur vers une page wiki comme ce fut le cas du texte en question. J'étais déjà en train de rêver à un outils d'importation accessible uniquement par les administrateurs et qui permettrait d'importer directement la mise en page d'un PDF par exemple. Ce n'étais qu'un rêve malheureusement. :::Donc oui, je prends bonne note qu'il faudra contacter un bibliothécaire si jamais le déplacement du texte s'avérait nécessaire. Je pense l'avoir déjà fait au sujet d'un modèle ou l'autre. Merci pour ta remarque et bonne journée à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 11 décembre 2014 à 09:10 (CET) ::::Bonjour Lionel, pour l'importation externe aux projets de la fondation, il y a cette page ; [[:s:Aide:Créer un fichier DjVu]] sur Wikisource. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 15 décembre 2014 à 01:56 (CET) == Édition d'historique == Bonjour, j'apprécie sincèrement ta présence sur le bistro, mais est-ce que tu vois sur ton navigateur [//fr.wikibooks.org/w/index.php?title=Wikilivres:Le_Bistro/2015&action=edit&oldid=460231 le bandeau rouge "Vous êtes en train de modifier une ancienne version de cette page"]. Je me pose la question car sur la Wikiversité tu avais aussi blanchi de cette façon les éditions postérieures à celle que tu regardais. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 21:05 (CET) :Oups désolé [[Utilisateur:JackPotte|JackPotte]]. Non je ne me souviens pas d'avoir vu apparaître ce bandeau dans mon navigateur Firerfox. Mais ma mémoire n'est pas fiable :/ . J'avoue que [[v:Wikiversité:La_salle_café/février_2015#Pas_de_notifications|j'ai des problèmes avec l'organisation des bistros]]. Faudrait que je comprenne un jour le pourquoi du comment. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 21:38 (CET) ::J'utilise aussi [[Firefox]] en habillage Monobook. D'ailleurs j'avais publié un "best of" des modules testés sur [[Firefox/Extensions]]. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 22:20 (CET) :::J'aime pas Monobook. C'est pas très joli et puis comme c'est pas le skin par défaut, c'est la meilleurs façon de ne pas voir les bug visible au grand publique. Merci pour le lien et bonne soirée, [[Utilisateur:JackPotte|JackPotte]], [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 22:48 (CET) == Matthius == Je te remercie pour tes messages sur la page de discussion WP de Matthius. Mais par contre, attention : "''Personne n'est censé venir y intervenir sans votre demande''" rétablit, de facto, le droit d'auteur. Et d'ailleurs comment peux-tu être aussi sûr que le déblocage se fera demain ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:25 (CEST) :Par ce que l'administrateur qui l'a bloqué m'a donné son aval. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 26 mai 2023 à 19:37 (CEST) ::Ne trouves-tu pas sage d'attendre l'avis d'au moins un autre administrateur ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:56 (CEST) :::Pas moins sage que le blocage qui s'est fait sous l'avis d'un seul administrateur. Ici, nous sommes deux sur trois actifs pour le moment. Et même trois comme je viens de le découvrir. As-tu quelque chose de personnelle contre cet utilisateur [[Utilisateur:Fourmidable|Fourmidable]] ? Ne trouves-tu pas que chacun a le droit à une seconde chance ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 17:51 (CEST) ::::Il y a urgence à bloquer un contributeur quand celui-ci parasite les débats avec des modifications non constructives comme des blanchiments de pages et des tentatives d'enfouir les discussions. Par contre, il n'y a aucune urgence à le débloquer : nous pouvons prendre le temps d'en discuter tranquillement. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 27 mai 2023 à 20:23 (CEST) :::::Je n'ai pas été contre le premier blocage. Et tu ne réponds pas à mes questions. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:29 (CEST) ::::::Et au fait [[Utilisateur:Fourmidable|Fourmidable]], t'es pas en examen toi ? T'en es où dans tes études ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:38 (CEST) :::::::J'ai répété maintes fois que je n'avais rien contre ce contributeur en dehors de Wikilivres, c'est très bien qu'il diffuse ses idées. On peut lui donner une seconde chance sur Wikilivres mais il faut qu'il montre de son côté un peu de bonne foi, ce que j'ai toujours du mal à voir chez lui. Souvent, ses propos sont incohérents : ex. : [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204511533 je ne vois pas de prise de position] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204524525 Ils prennent position effectivement] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204568649 Je pense que ce livrel est neutre]. Honnêtement, je ne sais pas à quoi il joue. De mon côté : licence finie, je vais peut-être passer un ou deux rattrapages pour faire le plein de points et ainsi espérer une mention. Je suis encore pour un mois au conservatoire, dont l'année se termine à la toute fin juin, voire début juillet pour les concerts. Du 9 au 31 juillet, je serai tout seul en cure thermale, nous pourrons faire plus facilement des visios (le reste de l'année je vis chez mes parents et ceux-ci sont assez hostiles à mes activités sur les wikis, c'est aussi pour ça que j'ai du mal à me rendre disponible). Je me prépare à un master Didactique des langues, à Paris, Lyon ou Montpellier. {{Sourire}} [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 28 mai 2023 à 19:23 (CEST) ::::::::Chouette programme ! Et bravo déjà pour le parcours effectué. Concernant Matthius, J'espère que le temps nous aidera à mieux le comprendre. Les sujet qu'il traite sont fondamentaux et pas si loin de mes propres intérêts. Raisons pour laquelle je m'y investi. J'espère qu'il aura intégré les règles de savoir-vivre. À suivre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 mai 2023 à 12:55 (CEST) :::::::::Honnêtement, je ne vois toujours pas comment on pourrait transformer ces ouvrages pour les rendre réellement utiles et valables. Mais si tu te sens inspiré, NHP à faire une proposition. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 30 mai 2023 à 11:20 (CEST) ::::::::::Le mot utilité me fait penser à l'utilitarisme, une autre philosophie politique critiquée en sciences sociales [[w:Revue_du_MAUSS|Revue du MAUSS]]. Quoi qu'il arrive, le travail de réécriture sera profitable pour l'auteur et intéressant pour moi. Il est possible qu'en fin de compte les livres ne soient pas comme tu voudrais qu'il le soit, et ce sera à la communauté d'en déterminer leurs validités pour l'espace principale. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 30 mai 2023 à 12:15 (CEST) : J'ai revu [https://archive.org/download/WikiBooks/Economie-petits%20Wikibooks.odt l'économie pour les petits]. Je pense qu'il est neutre même si je ne suis pas centriste. C'était le plus neutre des livrels qui ont été enlevés de Wikibooks. Pour l'instant, c'est le seul livrel qui pourrait être remis sur wikibooks. En plus il est court. Pourrez-vous m'aider à le remettre sur wikibooks ?--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 30 janvier 2024 à 05:51 (CET) ::Bonjour [[Utilisateur:Matthius|Matthius]]. Content de voir que tu consacres toujours du temps dans ta participation au projet Wikiversité. Je ne vois pas comment t'aider à replacer ton travail dans l'espace principale de Wikilivres si ce n'est en t'encourageant à le faire. Idéalement, il faudrait que ta nouvelle version du livre apparaisse sur [[Utilisateur:Matthius/Économie Petits|cette page où l'on a déplacé l'ancienne jugée inadéquate]] grâce à la fonction « diff » il sera ainsi facile de voir toutes les modifications que apportées à l'ouvrage. Par la suite, tu peux laisser un message au bistro pour informer la communauté des changements et de ton intention de replacer l'ouvrage dans l'espace principale. Suite aux discussions, on pourra alors faire les démarches nécessaires. N'oublie pas de signer tes messages, cela facilite les échanges. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> :::Bonjour Lionel, j'espère que tu n'es plus trop fâché contre moi ^^', et je te remercie encore pour ton suivi. J'ai donné ma critique sur le Bistro. Bien à vous deux, --[[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 5 février 2024 à 07:27 (CET) :::Salut @[[Utilisateur:Fourmidable|Fourmidable]]. Non je ne suis pas fâche. J'étais juste un peu irrité par ta façon de t'exprimé durant une période ou je te sentais particulièrement actif dans la sélection des contenus dans les projets wikimédia. Comme je suis plutôt en faveur de l'inclusion et l'encourragement er l'inclusion, avec certaines limites que j'ai déjà exprimé avec mes votes en faveur de certaines "suppression". Un terme inadéqua puisque rien n'est supprimé des serveurs en vérité, mais juste retirer de l'espace visible pas internaute. Raison pour laquelle, je préfère déplacer le contenu vers l'espace utilisateur de l'auteur en prenant soin d'empêcher le référencement pas les moteurs de recherches, alors qu'il me semble que les espace utilisateur ne le sont pas. :::Mais donc, contend.de reprendre contact avec toi Hérison. J'espère que tout se passe bien dans ta vie et tes études ! Bien à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 5 février 2024 à 11:11 (CET) Je propose mes livrels à la recréation. Je pense que Fourmidable n'est pas habitué à lire l'économie réelle. Je lui ai montré que valeur et monnaie sont liés et que la finance comme entité humaine c'est utilisé. Fourmidable n'agit plus maintenant.--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 26 avril 2024 à 10:40 (CEST) Cela fait 7 mois que mes livrels sont proposés à la publication dans wikibooks. Je comprends que vous vouliez garder les contributeurs à wikibooks, puisque vous êtes dorénavant le seul à participer à wikibooks pour mes livrels. Jacques Cheminade fait peur à Jackpotte. Pourtant Cheminade dit que ceux qui ont le plus peur de lui ne l'écoutent pas. Fourmidable est lui mandaté pour supprimer, pas pour restaurer. Sinon il aurait négocié avec moi une modification des livrels que j'ai finalement pu réaliser grâce à vous. Que pensez-vous faire ? --[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 7 décembre 2024 à 21:30 (CET) :Bonsoir @[[Utilisateur:Matthius|Matthius]]. Je n'ai pas de réponse à votre question. Si vous voulez restaurer vos livres, il suffit de les déplacer dans l'espace principale en les renomant. On verra par la suite les réaction des quelques membres de notre communauté. Cette discussion dure depuis longtemps et pour le dire franchement, j'y ai déjà consacré beaucoup de temps que je ne suis pas prête à consacrer aujourd'hui. Il y a un moment ou, en tant que bénévole, on se fatigue de faire la médiation entre deux personnes qui n'arrive pas à s'entendre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 01:56 (CET) :::Je vais les déplacer mais ça risque de réveiller quelqu'un. Ceci écrit, les livrels ont été neutralisés. Y a-t-il un moyen de garder l'historique ? ::::Quand on dit dêplacer, en réalité On change le nom de la page et rien d'autre pour qu'elle figure dans ce ca dans l'espaxe de nom principalr et plus dans l'espace de nom utilisateur. Une page renomée garde tout son historique. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 10:50 (CET) :Pour ceux qui m'ont défendu : [http://web.archive.org/web/20260517193237/https://www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50 www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50]--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 17 mai 2026 à 21:37 (CEST) == Pages orphelines == Bonjour, Il semble que tu as perdu quelques pages dans les pages orphelines. Pourrais tu les garder sur ta Page d’utilisateur pour les sortir des pages orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 18 février 2026 à 13:19 (CET) :@[[Utilisateur:Xhungab|Xhungab]]. Si tu n'indiques pas la personne à qui tu adresses ton message, tu risques de rester sans réponse. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:13 (CET) ::L'idéal est de la notifier en la faisant apparaitre en bleu grâce au menu de l'éditeur visuel qui affiche un petit bonhomme avec un + en haut à sa gauche. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:16 (CET) :::Oups. Oublie les messages précésent. Je croyais qu'on était dans le bistro... [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:24 (CET) * [[Le mouvement Wikimedia/Préface|Préface]] * [[Le mouvement Wikimédia/Deuxième partie :Cosmographie du mouvement Wikimédia|Deuxième partie :Cosmographie du mouvement Wikimédia]] * [[Le mouvement Wikimédia/Première partie : La naissance du mouvement Wikimédia|Première partie : La naissance du mouvement Wikimédia]] * [[Le mouvement Wikimédia2/Version imprimable|Version imprimable]] * [[Projet:KarthaLab|KarthaLab]] * [[Le mouvement Wikimédia/Livre audio|Le mouvement Wikimédia : Livre audio]] == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 28 avril 2026 à 20:33 (CEST) </div> <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 --> == '''Décision''':Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil == Petites nouvelles de wikibook. la décision a été prise. On a donc besoin d'un administrateur pour conclure ce travail. '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' '''Décision pour : [https://fr.wikibooks.org/wiki/Utilisateur:Xhungab '''Wikibook''']''' Résultats : 3 + Pour, un Neutre Neutre et un - Contre soit 60 % de + Pour par rapport au total des votes exprimés : la proposition est adoptée. Quelques propositions de reformulations et de nuances ont été faites qui pourront être prise en compte. Cdlt, VIGNERON * discut. 13 septembre 2026 à 18:27 (CEST) Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:35 (CEST) :Salut @[[Utilisateur:Xhungab|Xhungab]]. Content de voir que la décision est prise. Tu peux déjà créer la page dont tu nous as parlé. Je m'occuperai de la page d'accueil, mercredi. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 15 septembre 2026 à 02:18 (CEST) bvzwaia1zqeyfawy0ev69k9d97bes3c 772225 772218 2026-09-15T07:47:13Z Xhungab 23827 /* Décision:Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil */ Réponse 772225 wikitext text/x-wiki Je vous écoute {{sourire}} Bonjour, Lionel Scheepmans, et [[Wikilivres:Bienvenue|bienvenue]] sur Wikilivres. En cas de besoin, voici quelques pages qui devraient vous être utiles si vous n'êtes pas familiers des [[w:Wiki|wikis]] : *[[Aide:Comment modifier une page|Comment modifier une page]] *[[Aide:Accueil|Sommaire des pages d'aide]] *[[Wikilivres:Conventions typographiques|Conventions typographiques]] *[[Wikilivres:Règles|Règles et recommandations]] *[[Wikilivres:Bac à sable|Le bac à sable pour essayer la syntaxe wiki]] Pour signer vos messages en page de discussion (on ne [[Wikilivres:Règles#Rédaction collective|signe pas]] les livres) utilisez quatre tildes (<nowiki>~~~~</nowiki>); cela produira automatiquement votre nom et la date de publication. Si vous avez besoin d'aide, demandez à la communauté au [[Wikilivres:Le Bistro|Bistro]] ou sur ma propre page de discussion, ou bien consultez la [[Wikilivres:Foire aux questions|FAQ]] . Bonne continuation. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) == Copie-Coller == Bonjour, il faut éviter ce type de transfert, il serait plutôt préférable de demande une [[Spécial:Import|importation]] à un administrateur. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) :Bonjour[[Utilisateur:FrankyLeRoutier|Franky]] et merci pour ton message d'accueil. Malheureusement, je ne comprends pas ce que tu veux dire dans ton deuxième message ci-dessus ? Peux-tu être plus explicite ? Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 10 décembre 2014 à 14:17 (CET) ::Rebonjour Lionel, par exemple si un des auteurs de cette [[Clefs pour mieux comprendre le monde et participer à son évolution|page]] effectue un copie-coller de son contenu sur Wikiversité sans faire l'importation des [[:w:Aide:Historique|historiques]], il ne respectera pas les droits des contributeurs puisque l'article source sera supprimés. Amicalement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 11 décembre 2014 à 05:22 (CET) :::Oui effectivement [[Utilisateur:FrankyLeRoutier|Franky]], je comprends mieux ta remarque. Je pensais que tu faisait allusion au copier coller d'un livre au départ d'un fichier de son ordinateur vers une page wiki comme ce fut le cas du texte en question. J'étais déjà en train de rêver à un outils d'importation accessible uniquement par les administrateurs et qui permettrait d'importer directement la mise en page d'un PDF par exemple. Ce n'étais qu'un rêve malheureusement. :::Donc oui, je prends bonne note qu'il faudra contacter un bibliothécaire si jamais le déplacement du texte s'avérait nécessaire. Je pense l'avoir déjà fait au sujet d'un modèle ou l'autre. Merci pour ta remarque et bonne journée à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 11 décembre 2014 à 09:10 (CET) ::::Bonjour Lionel, pour l'importation externe aux projets de la fondation, il y a cette page ; [[:s:Aide:Créer un fichier DjVu]] sur Wikisource. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 15 décembre 2014 à 01:56 (CET) == Édition d'historique == Bonjour, j'apprécie sincèrement ta présence sur le bistro, mais est-ce que tu vois sur ton navigateur [//fr.wikibooks.org/w/index.php?title=Wikilivres:Le_Bistro/2015&action=edit&oldid=460231 le bandeau rouge "Vous êtes en train de modifier une ancienne version de cette page"]. Je me pose la question car sur la Wikiversité tu avais aussi blanchi de cette façon les éditions postérieures à celle que tu regardais. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 21:05 (CET) :Oups désolé [[Utilisateur:JackPotte|JackPotte]]. Non je ne me souviens pas d'avoir vu apparaître ce bandeau dans mon navigateur Firerfox. Mais ma mémoire n'est pas fiable :/ . J'avoue que [[v:Wikiversité:La_salle_café/février_2015#Pas_de_notifications|j'ai des problèmes avec l'organisation des bistros]]. Faudrait que je comprenne un jour le pourquoi du comment. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 21:38 (CET) ::J'utilise aussi [[Firefox]] en habillage Monobook. D'ailleurs j'avais publié un "best of" des modules testés sur [[Firefox/Extensions]]. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 22:20 (CET) :::J'aime pas Monobook. C'est pas très joli et puis comme c'est pas le skin par défaut, c'est la meilleurs façon de ne pas voir les bug visible au grand publique. Merci pour le lien et bonne soirée, [[Utilisateur:JackPotte|JackPotte]], [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 22:48 (CET) == Matthius == Je te remercie pour tes messages sur la page de discussion WP de Matthius. Mais par contre, attention : "''Personne n'est censé venir y intervenir sans votre demande''" rétablit, de facto, le droit d'auteur. Et d'ailleurs comment peux-tu être aussi sûr que le déblocage se fera demain ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:25 (CEST) :Par ce que l'administrateur qui l'a bloqué m'a donné son aval. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 26 mai 2023 à 19:37 (CEST) ::Ne trouves-tu pas sage d'attendre l'avis d'au moins un autre administrateur ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:56 (CEST) :::Pas moins sage que le blocage qui s'est fait sous l'avis d'un seul administrateur. Ici, nous sommes deux sur trois actifs pour le moment. Et même trois comme je viens de le découvrir. As-tu quelque chose de personnelle contre cet utilisateur [[Utilisateur:Fourmidable|Fourmidable]] ? Ne trouves-tu pas que chacun a le droit à une seconde chance ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 17:51 (CEST) ::::Il y a urgence à bloquer un contributeur quand celui-ci parasite les débats avec des modifications non constructives comme des blanchiments de pages et des tentatives d'enfouir les discussions. Par contre, il n'y a aucune urgence à le débloquer : nous pouvons prendre le temps d'en discuter tranquillement. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 27 mai 2023 à 20:23 (CEST) :::::Je n'ai pas été contre le premier blocage. Et tu ne réponds pas à mes questions. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:29 (CEST) ::::::Et au fait [[Utilisateur:Fourmidable|Fourmidable]], t'es pas en examen toi ? T'en es où dans tes études ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:38 (CEST) :::::::J'ai répété maintes fois que je n'avais rien contre ce contributeur en dehors de Wikilivres, c'est très bien qu'il diffuse ses idées. On peut lui donner une seconde chance sur Wikilivres mais il faut qu'il montre de son côté un peu de bonne foi, ce que j'ai toujours du mal à voir chez lui. Souvent, ses propos sont incohérents : ex. : [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204511533 je ne vois pas de prise de position] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204524525 Ils prennent position effectivement] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204568649 Je pense que ce livrel est neutre]. Honnêtement, je ne sais pas à quoi il joue. De mon côté : licence finie, je vais peut-être passer un ou deux rattrapages pour faire le plein de points et ainsi espérer une mention. Je suis encore pour un mois au conservatoire, dont l'année se termine à la toute fin juin, voire début juillet pour les concerts. Du 9 au 31 juillet, je serai tout seul en cure thermale, nous pourrons faire plus facilement des visios (le reste de l'année je vis chez mes parents et ceux-ci sont assez hostiles à mes activités sur les wikis, c'est aussi pour ça que j'ai du mal à me rendre disponible). Je me prépare à un master Didactique des langues, à Paris, Lyon ou Montpellier. {{Sourire}} [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 28 mai 2023 à 19:23 (CEST) ::::::::Chouette programme ! Et bravo déjà pour le parcours effectué. Concernant Matthius, J'espère que le temps nous aidera à mieux le comprendre. Les sujet qu'il traite sont fondamentaux et pas si loin de mes propres intérêts. Raisons pour laquelle je m'y investi. J'espère qu'il aura intégré les règles de savoir-vivre. À suivre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 mai 2023 à 12:55 (CEST) :::::::::Honnêtement, je ne vois toujours pas comment on pourrait transformer ces ouvrages pour les rendre réellement utiles et valables. Mais si tu te sens inspiré, NHP à faire une proposition. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 30 mai 2023 à 11:20 (CEST) ::::::::::Le mot utilité me fait penser à l'utilitarisme, une autre philosophie politique critiquée en sciences sociales [[w:Revue_du_MAUSS|Revue du MAUSS]]. Quoi qu'il arrive, le travail de réécriture sera profitable pour l'auteur et intéressant pour moi. Il est possible qu'en fin de compte les livres ne soient pas comme tu voudrais qu'il le soit, et ce sera à la communauté d'en déterminer leurs validités pour l'espace principale. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 30 mai 2023 à 12:15 (CEST) : J'ai revu [https://archive.org/download/WikiBooks/Economie-petits%20Wikibooks.odt l'économie pour les petits]. Je pense qu'il est neutre même si je ne suis pas centriste. C'était le plus neutre des livrels qui ont été enlevés de Wikibooks. Pour l'instant, c'est le seul livrel qui pourrait être remis sur wikibooks. En plus il est court. Pourrez-vous m'aider à le remettre sur wikibooks ?--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 30 janvier 2024 à 05:51 (CET) ::Bonjour [[Utilisateur:Matthius|Matthius]]. Content de voir que tu consacres toujours du temps dans ta participation au projet Wikiversité. Je ne vois pas comment t'aider à replacer ton travail dans l'espace principale de Wikilivres si ce n'est en t'encourageant à le faire. Idéalement, il faudrait que ta nouvelle version du livre apparaisse sur [[Utilisateur:Matthius/Économie Petits|cette page où l'on a déplacé l'ancienne jugée inadéquate]] grâce à la fonction « diff » il sera ainsi facile de voir toutes les modifications que apportées à l'ouvrage. Par la suite, tu peux laisser un message au bistro pour informer la communauté des changements et de ton intention de replacer l'ouvrage dans l'espace principale. Suite aux discussions, on pourra alors faire les démarches nécessaires. N'oublie pas de signer tes messages, cela facilite les échanges. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> :::Bonjour Lionel, j'espère que tu n'es plus trop fâché contre moi ^^', et je te remercie encore pour ton suivi. J'ai donné ma critique sur le Bistro. Bien à vous deux, --[[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 5 février 2024 à 07:27 (CET) :::Salut @[[Utilisateur:Fourmidable|Fourmidable]]. Non je ne suis pas fâche. J'étais juste un peu irrité par ta façon de t'exprimé durant une période ou je te sentais particulièrement actif dans la sélection des contenus dans les projets wikimédia. Comme je suis plutôt en faveur de l'inclusion et l'encourragement er l'inclusion, avec certaines limites que j'ai déjà exprimé avec mes votes en faveur de certaines "suppression". Un terme inadéqua puisque rien n'est supprimé des serveurs en vérité, mais juste retirer de l'espace visible pas internaute. Raison pour laquelle, je préfère déplacer le contenu vers l'espace utilisateur de l'auteur en prenant soin d'empêcher le référencement pas les moteurs de recherches, alors qu'il me semble que les espace utilisateur ne le sont pas. :::Mais donc, contend.de reprendre contact avec toi Hérison. J'espère que tout se passe bien dans ta vie et tes études ! Bien à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 5 février 2024 à 11:11 (CET) Je propose mes livrels à la recréation. Je pense que Fourmidable n'est pas habitué à lire l'économie réelle. Je lui ai montré que valeur et monnaie sont liés et que la finance comme entité humaine c'est utilisé. Fourmidable n'agit plus maintenant.--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 26 avril 2024 à 10:40 (CEST) Cela fait 7 mois que mes livrels sont proposés à la publication dans wikibooks. Je comprends que vous vouliez garder les contributeurs à wikibooks, puisque vous êtes dorénavant le seul à participer à wikibooks pour mes livrels. Jacques Cheminade fait peur à Jackpotte. Pourtant Cheminade dit que ceux qui ont le plus peur de lui ne l'écoutent pas. Fourmidable est lui mandaté pour supprimer, pas pour restaurer. Sinon il aurait négocié avec moi une modification des livrels que j'ai finalement pu réaliser grâce à vous. Que pensez-vous faire ? --[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 7 décembre 2024 à 21:30 (CET) :Bonsoir @[[Utilisateur:Matthius|Matthius]]. Je n'ai pas de réponse à votre question. Si vous voulez restaurer vos livres, il suffit de les déplacer dans l'espace principale en les renomant. On verra par la suite les réaction des quelques membres de notre communauté. Cette discussion dure depuis longtemps et pour le dire franchement, j'y ai déjà consacré beaucoup de temps que je ne suis pas prête à consacrer aujourd'hui. Il y a un moment ou, en tant que bénévole, on se fatigue de faire la médiation entre deux personnes qui n'arrive pas à s'entendre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 01:56 (CET) :::Je vais les déplacer mais ça risque de réveiller quelqu'un. Ceci écrit, les livrels ont été neutralisés. Y a-t-il un moyen de garder l'historique ? ::::Quand on dit dêplacer, en réalité On change le nom de la page et rien d'autre pour qu'elle figure dans ce ca dans l'espaxe de nom principalr et plus dans l'espace de nom utilisateur. Une page renomée garde tout son historique. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 10:50 (CET) :Pour ceux qui m'ont défendu : [http://web.archive.org/web/20260517193237/https://www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50 www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50]--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 17 mai 2026 à 21:37 (CEST) == Pages orphelines == Bonjour, Il semble que tu as perdu quelques pages dans les pages orphelines. Pourrais tu les garder sur ta Page d’utilisateur pour les sortir des pages orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 18 février 2026 à 13:19 (CET) :@[[Utilisateur:Xhungab|Xhungab]]. Si tu n'indiques pas la personne à qui tu adresses ton message, tu risques de rester sans réponse. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:13 (CET) ::L'idéal est de la notifier en la faisant apparaitre en bleu grâce au menu de l'éditeur visuel qui affiche un petit bonhomme avec un + en haut à sa gauche. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:16 (CET) :::Oups. Oublie les messages précésent. Je croyais qu'on était dans le bistro... [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:24 (CET) * [[Le mouvement Wikimedia/Préface|Préface]] * [[Le mouvement Wikimédia/Deuxième partie :Cosmographie du mouvement Wikimédia|Deuxième partie :Cosmographie du mouvement Wikimédia]] * [[Le mouvement Wikimédia/Première partie : La naissance du mouvement Wikimédia|Première partie : La naissance du mouvement Wikimédia]] * [[Le mouvement Wikimédia2/Version imprimable|Version imprimable]] * [[Projet:KarthaLab|KarthaLab]] * [[Le mouvement Wikimédia/Livre audio|Le mouvement Wikimédia : Livre audio]] == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 28 avril 2026 à 20:33 (CEST) </div> <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 --> == '''Décision''':Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil == Petites nouvelles de wikibook. la décision a été prise. On a donc besoin d'un administrateur pour conclure ce travail. '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' '''Décision pour : [https://fr.wikibooks.org/wiki/Utilisateur:Xhungab '''Wikibook''']''' Résultats : 3 + Pour, un Neutre Neutre et un - Contre soit 60 % de + Pour par rapport au total des votes exprimés : la proposition est adoptée. Quelques propositions de reformulations et de nuances ont été faites qui pourront être prise en compte. Cdlt, VIGNERON * discut. 13 septembre 2026 à 18:27 (CEST) Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:35 (CEST) :Salut @[[Utilisateur:Xhungab|Xhungab]]. Content de voir que la décision est prise. Tu peux déjà créer la page dont tu nous as parlé. Je m'occuperai de la page d'accueil, mercredi. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 15 septembre 2026 à 02:18 (CEST) ::J'ai créer la page : ::* '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' ::Il faudra peut-être la protéger pour que seuls les administrateurs puissent la modifier. ::. ::Il suffit de remplacer la vitrine par la page ci-dessous. ::https://fr.wikibooks.org/wiki/Utilisateur:Xhungab ::Merci pour ton aide. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 15 septembre 2026 à 09:47 (CEST) 8wcfhceqbs915hasryhtuwvf6fqta30 772230 772225 2026-09-15T07:54:46Z Xhungab 23827 /* Décision:Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil */ 772230 wikitext text/x-wiki Je vous écoute {{sourire}} Bonjour, Lionel Scheepmans, et [[Wikilivres:Bienvenue|bienvenue]] sur Wikilivres. En cas de besoin, voici quelques pages qui devraient vous être utiles si vous n'êtes pas familiers des [[w:Wiki|wikis]] : *[[Aide:Comment modifier une page|Comment modifier une page]] *[[Aide:Accueil|Sommaire des pages d'aide]] *[[Wikilivres:Conventions typographiques|Conventions typographiques]] *[[Wikilivres:Règles|Règles et recommandations]] *[[Wikilivres:Bac à sable|Le bac à sable pour essayer la syntaxe wiki]] Pour signer vos messages en page de discussion (on ne [[Wikilivres:Règles#Rédaction collective|signe pas]] les livres) utilisez quatre tildes (<nowiki>~~~~</nowiki>); cela produira automatiquement votre nom et la date de publication. Si vous avez besoin d'aide, demandez à la communauté au [[Wikilivres:Le Bistro|Bistro]] ou sur ma propre page de discussion, ou bien consultez la [[Wikilivres:Foire aux questions|FAQ]] . Bonne continuation. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) == Copie-Coller == Bonjour, il faut éviter ce type de transfert, il serait plutôt préférable de demande une [[Spécial:Import|importation]] à un administrateur. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) :Bonjour[[Utilisateur:FrankyLeRoutier|Franky]] et merci pour ton message d'accueil. Malheureusement, je ne comprends pas ce que tu veux dire dans ton deuxième message ci-dessus ? Peux-tu être plus explicite ? Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 10 décembre 2014 à 14:17 (CET) ::Rebonjour Lionel, par exemple si un des auteurs de cette [[Clefs pour mieux comprendre le monde et participer à son évolution|page]] effectue un copie-coller de son contenu sur Wikiversité sans faire l'importation des [[:w:Aide:Historique|historiques]], il ne respectera pas les droits des contributeurs puisque l'article source sera supprimés. Amicalement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 11 décembre 2014 à 05:22 (CET) :::Oui effectivement [[Utilisateur:FrankyLeRoutier|Franky]], je comprends mieux ta remarque. Je pensais que tu faisait allusion au copier coller d'un livre au départ d'un fichier de son ordinateur vers une page wiki comme ce fut le cas du texte en question. J'étais déjà en train de rêver à un outils d'importation accessible uniquement par les administrateurs et qui permettrait d'importer directement la mise en page d'un PDF par exemple. Ce n'étais qu'un rêve malheureusement. :::Donc oui, je prends bonne note qu'il faudra contacter un bibliothécaire si jamais le déplacement du texte s'avérait nécessaire. Je pense l'avoir déjà fait au sujet d'un modèle ou l'autre. Merci pour ta remarque et bonne journée à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 11 décembre 2014 à 09:10 (CET) ::::Bonjour Lionel, pour l'importation externe aux projets de la fondation, il y a cette page ; [[:s:Aide:Créer un fichier DjVu]] sur Wikisource. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 15 décembre 2014 à 01:56 (CET) == Édition d'historique == Bonjour, j'apprécie sincèrement ta présence sur le bistro, mais est-ce que tu vois sur ton navigateur [//fr.wikibooks.org/w/index.php?title=Wikilivres:Le_Bistro/2015&action=edit&oldid=460231 le bandeau rouge "Vous êtes en train de modifier une ancienne version de cette page"]. Je me pose la question car sur la Wikiversité tu avais aussi blanchi de cette façon les éditions postérieures à celle que tu regardais. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 21:05 (CET) :Oups désolé [[Utilisateur:JackPotte|JackPotte]]. Non je ne me souviens pas d'avoir vu apparaître ce bandeau dans mon navigateur Firerfox. Mais ma mémoire n'est pas fiable :/ . J'avoue que [[v:Wikiversité:La_salle_café/février_2015#Pas_de_notifications|j'ai des problèmes avec l'organisation des bistros]]. Faudrait que je comprenne un jour le pourquoi du comment. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 21:38 (CET) ::J'utilise aussi [[Firefox]] en habillage Monobook. D'ailleurs j'avais publié un "best of" des modules testés sur [[Firefox/Extensions]]. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 22:20 (CET) :::J'aime pas Monobook. C'est pas très joli et puis comme c'est pas le skin par défaut, c'est la meilleurs façon de ne pas voir les bug visible au grand publique. Merci pour le lien et bonne soirée, [[Utilisateur:JackPotte|JackPotte]], [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 22:48 (CET) == Matthius == Je te remercie pour tes messages sur la page de discussion WP de Matthius. Mais par contre, attention : "''Personne n'est censé venir y intervenir sans votre demande''" rétablit, de facto, le droit d'auteur. Et d'ailleurs comment peux-tu être aussi sûr que le déblocage se fera demain ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:25 (CEST) :Par ce que l'administrateur qui l'a bloqué m'a donné son aval. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 26 mai 2023 à 19:37 (CEST) ::Ne trouves-tu pas sage d'attendre l'avis d'au moins un autre administrateur ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:56 (CEST) :::Pas moins sage que le blocage qui s'est fait sous l'avis d'un seul administrateur. Ici, nous sommes deux sur trois actifs pour le moment. Et même trois comme je viens de le découvrir. As-tu quelque chose de personnelle contre cet utilisateur [[Utilisateur:Fourmidable|Fourmidable]] ? Ne trouves-tu pas que chacun a le droit à une seconde chance ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 17:51 (CEST) ::::Il y a urgence à bloquer un contributeur quand celui-ci parasite les débats avec des modifications non constructives comme des blanchiments de pages et des tentatives d'enfouir les discussions. Par contre, il n'y a aucune urgence à le débloquer : nous pouvons prendre le temps d'en discuter tranquillement. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 27 mai 2023 à 20:23 (CEST) :::::Je n'ai pas été contre le premier blocage. Et tu ne réponds pas à mes questions. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:29 (CEST) ::::::Et au fait [[Utilisateur:Fourmidable|Fourmidable]], t'es pas en examen toi ? T'en es où dans tes études ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:38 (CEST) :::::::J'ai répété maintes fois que je n'avais rien contre ce contributeur en dehors de Wikilivres, c'est très bien qu'il diffuse ses idées. On peut lui donner une seconde chance sur Wikilivres mais il faut qu'il montre de son côté un peu de bonne foi, ce que j'ai toujours du mal à voir chez lui. Souvent, ses propos sont incohérents : ex. : [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204511533 je ne vois pas de prise de position] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204524525 Ils prennent position effectivement] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204568649 Je pense que ce livrel est neutre]. Honnêtement, je ne sais pas à quoi il joue. De mon côté : licence finie, je vais peut-être passer un ou deux rattrapages pour faire le plein de points et ainsi espérer une mention. Je suis encore pour un mois au conservatoire, dont l'année se termine à la toute fin juin, voire début juillet pour les concerts. Du 9 au 31 juillet, je serai tout seul en cure thermale, nous pourrons faire plus facilement des visios (le reste de l'année je vis chez mes parents et ceux-ci sont assez hostiles à mes activités sur les wikis, c'est aussi pour ça que j'ai du mal à me rendre disponible). Je me prépare à un master Didactique des langues, à Paris, Lyon ou Montpellier. {{Sourire}} [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 28 mai 2023 à 19:23 (CEST) ::::::::Chouette programme ! Et bravo déjà pour le parcours effectué. Concernant Matthius, J'espère que le temps nous aidera à mieux le comprendre. Les sujet qu'il traite sont fondamentaux et pas si loin de mes propres intérêts. Raisons pour laquelle je m'y investi. J'espère qu'il aura intégré les règles de savoir-vivre. À suivre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 mai 2023 à 12:55 (CEST) :::::::::Honnêtement, je ne vois toujours pas comment on pourrait transformer ces ouvrages pour les rendre réellement utiles et valables. Mais si tu te sens inspiré, NHP à faire une proposition. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 30 mai 2023 à 11:20 (CEST) ::::::::::Le mot utilité me fait penser à l'utilitarisme, une autre philosophie politique critiquée en sciences sociales [[w:Revue_du_MAUSS|Revue du MAUSS]]. Quoi qu'il arrive, le travail de réécriture sera profitable pour l'auteur et intéressant pour moi. Il est possible qu'en fin de compte les livres ne soient pas comme tu voudrais qu'il le soit, et ce sera à la communauté d'en déterminer leurs validités pour l'espace principale. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 30 mai 2023 à 12:15 (CEST) : J'ai revu [https://archive.org/download/WikiBooks/Economie-petits%20Wikibooks.odt l'économie pour les petits]. Je pense qu'il est neutre même si je ne suis pas centriste. C'était le plus neutre des livrels qui ont été enlevés de Wikibooks. Pour l'instant, c'est le seul livrel qui pourrait être remis sur wikibooks. En plus il est court. Pourrez-vous m'aider à le remettre sur wikibooks ?--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 30 janvier 2024 à 05:51 (CET) ::Bonjour [[Utilisateur:Matthius|Matthius]]. Content de voir que tu consacres toujours du temps dans ta participation au projet Wikiversité. Je ne vois pas comment t'aider à replacer ton travail dans l'espace principale de Wikilivres si ce n'est en t'encourageant à le faire. Idéalement, il faudrait que ta nouvelle version du livre apparaisse sur [[Utilisateur:Matthius/Économie Petits|cette page où l'on a déplacé l'ancienne jugée inadéquate]] grâce à la fonction « diff » il sera ainsi facile de voir toutes les modifications que apportées à l'ouvrage. Par la suite, tu peux laisser un message au bistro pour informer la communauté des changements et de ton intention de replacer l'ouvrage dans l'espace principale. Suite aux discussions, on pourra alors faire les démarches nécessaires. N'oublie pas de signer tes messages, cela facilite les échanges. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> :::Bonjour Lionel, j'espère que tu n'es plus trop fâché contre moi ^^', et je te remercie encore pour ton suivi. J'ai donné ma critique sur le Bistro. Bien à vous deux, --[[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 5 février 2024 à 07:27 (CET) :::Salut @[[Utilisateur:Fourmidable|Fourmidable]]. Non je ne suis pas fâche. J'étais juste un peu irrité par ta façon de t'exprimé durant une période ou je te sentais particulièrement actif dans la sélection des contenus dans les projets wikimédia. Comme je suis plutôt en faveur de l'inclusion et l'encourragement er l'inclusion, avec certaines limites que j'ai déjà exprimé avec mes votes en faveur de certaines "suppression". Un terme inadéqua puisque rien n'est supprimé des serveurs en vérité, mais juste retirer de l'espace visible pas internaute. Raison pour laquelle, je préfère déplacer le contenu vers l'espace utilisateur de l'auteur en prenant soin d'empêcher le référencement pas les moteurs de recherches, alors qu'il me semble que les espace utilisateur ne le sont pas. :::Mais donc, contend.de reprendre contact avec toi Hérison. J'espère que tout se passe bien dans ta vie et tes études ! Bien à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 5 février 2024 à 11:11 (CET) Je propose mes livrels à la recréation. Je pense que Fourmidable n'est pas habitué à lire l'économie réelle. Je lui ai montré que valeur et monnaie sont liés et que la finance comme entité humaine c'est utilisé. Fourmidable n'agit plus maintenant.--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 26 avril 2024 à 10:40 (CEST) Cela fait 7 mois que mes livrels sont proposés à la publication dans wikibooks. Je comprends que vous vouliez garder les contributeurs à wikibooks, puisque vous êtes dorénavant le seul à participer à wikibooks pour mes livrels. Jacques Cheminade fait peur à Jackpotte. Pourtant Cheminade dit que ceux qui ont le plus peur de lui ne l'écoutent pas. Fourmidable est lui mandaté pour supprimer, pas pour restaurer. Sinon il aurait négocié avec moi une modification des livrels que j'ai finalement pu réaliser grâce à vous. Que pensez-vous faire ? --[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 7 décembre 2024 à 21:30 (CET) :Bonsoir @[[Utilisateur:Matthius|Matthius]]. Je n'ai pas de réponse à votre question. Si vous voulez restaurer vos livres, il suffit de les déplacer dans l'espace principale en les renomant. On verra par la suite les réaction des quelques membres de notre communauté. Cette discussion dure depuis longtemps et pour le dire franchement, j'y ai déjà consacré beaucoup de temps que je ne suis pas prête à consacrer aujourd'hui. Il y a un moment ou, en tant que bénévole, on se fatigue de faire la médiation entre deux personnes qui n'arrive pas à s'entendre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 01:56 (CET) :::Je vais les déplacer mais ça risque de réveiller quelqu'un. Ceci écrit, les livrels ont été neutralisés. Y a-t-il un moyen de garder l'historique ? ::::Quand on dit dêplacer, en réalité On change le nom de la page et rien d'autre pour qu'elle figure dans ce ca dans l'espaxe de nom principalr et plus dans l'espace de nom utilisateur. Une page renomée garde tout son historique. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 10:50 (CET) :Pour ceux qui m'ont défendu : [http://web.archive.org/web/20260517193237/https://www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50 www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50]--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 17 mai 2026 à 21:37 (CEST) == Pages orphelines == Bonjour, Il semble que tu as perdu quelques pages dans les pages orphelines. Pourrais tu les garder sur ta Page d’utilisateur pour les sortir des pages orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 18 février 2026 à 13:19 (CET) :@[[Utilisateur:Xhungab|Xhungab]]. Si tu n'indiques pas la personne à qui tu adresses ton message, tu risques de rester sans réponse. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:13 (CET) ::L'idéal est de la notifier en la faisant apparaitre en bleu grâce au menu de l'éditeur visuel qui affiche un petit bonhomme avec un + en haut à sa gauche. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:16 (CET) :::Oups. Oublie les messages précésent. Je croyais qu'on était dans le bistro... [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:24 (CET) * [[Le mouvement Wikimedia/Préface|Préface]] * [[Le mouvement Wikimédia/Deuxième partie :Cosmographie du mouvement Wikimédia|Deuxième partie :Cosmographie du mouvement Wikimédia]] * [[Le mouvement Wikimédia/Première partie : La naissance du mouvement Wikimédia|Première partie : La naissance du mouvement Wikimédia]] * [[Le mouvement Wikimédia2/Version imprimable|Version imprimable]] * [[Projet:KarthaLab|KarthaLab]] * [[Le mouvement Wikimédia/Livre audio|Le mouvement Wikimédia : Livre audio]] == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 28 avril 2026 à 20:33 (CEST) </div> <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 --> == '''Décision''':Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil == Petites nouvelles de wikibook. la décision a été prise. On a donc besoin d'un administrateur pour conclure ce travail. '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' '''Décision pour : [https://fr.wikibooks.org/wiki/Utilisateur:Xhungab '''Wikibook''']''' Résultats : 3 + Pour, un Neutre Neutre et un - Contre soit 60 % de + Pour par rapport au total des votes exprimés : la proposition est adoptée. Quelques propositions de reformulations et de nuances ont été faites qui pourront être prise en compte. Cdlt, VIGNERON * discut. 13 septembre 2026 à 18:27 (CEST) Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:35 (CEST) :Salut @[[Utilisateur:Xhungab|Xhungab]]. Content de voir que la décision est prise. Tu peux déjà créer la page dont tu nous as parlé. Je m'occuperai de la page d'accueil, mercredi. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 15 septembre 2026 à 02:18 (CEST) ::J'ai créer la page : ::* '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' ::Il faudra peut-être la protéger pour que seuls les administrateurs puissent la modifier. ::. ::Il suffit de remplacer la vitrine par la page ci-dessous. ::https://fr.wikibooks.org/wiki/Utilisateur:Xhungab ::. ::Merci pour ton aide. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 15 septembre 2026 à 09:47 (CEST) 5gdf19wsm89ib6i2toqfi37ngg4hnof 772231 772230 2026-09-15T07:55:42Z Xhungab 23827 /* Décision:Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil */ 772231 wikitext text/x-wiki Je vous écoute {{sourire}} Bonjour, Lionel Scheepmans, et [[Wikilivres:Bienvenue|bienvenue]] sur Wikilivres. En cas de besoin, voici quelques pages qui devraient vous être utiles si vous n'êtes pas familiers des [[w:Wiki|wikis]] : *[[Aide:Comment modifier une page|Comment modifier une page]] *[[Aide:Accueil|Sommaire des pages d'aide]] *[[Wikilivres:Conventions typographiques|Conventions typographiques]] *[[Wikilivres:Règles|Règles et recommandations]] *[[Wikilivres:Bac à sable|Le bac à sable pour essayer la syntaxe wiki]] Pour signer vos messages en page de discussion (on ne [[Wikilivres:Règles#Rédaction collective|signe pas]] les livres) utilisez quatre tildes (<nowiki>~~~~</nowiki>); cela produira automatiquement votre nom et la date de publication. Si vous avez besoin d'aide, demandez à la communauté au [[Wikilivres:Le Bistro|Bistro]] ou sur ma propre page de discussion, ou bien consultez la [[Wikilivres:Foire aux questions|FAQ]] . Bonne continuation. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) == Copie-Coller == Bonjour, il faut éviter ce type de transfert, il serait plutôt préférable de demande une [[Spécial:Import|importation]] à un administrateur. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) :Bonjour[[Utilisateur:FrankyLeRoutier|Franky]] et merci pour ton message d'accueil. Malheureusement, je ne comprends pas ce que tu veux dire dans ton deuxième message ci-dessus ? Peux-tu être plus explicite ? Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 10 décembre 2014 à 14:17 (CET) ::Rebonjour Lionel, par exemple si un des auteurs de cette [[Clefs pour mieux comprendre le monde et participer à son évolution|page]] effectue un copie-coller de son contenu sur Wikiversité sans faire l'importation des [[:w:Aide:Historique|historiques]], il ne respectera pas les droits des contributeurs puisque l'article source sera supprimés. Amicalement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 11 décembre 2014 à 05:22 (CET) :::Oui effectivement [[Utilisateur:FrankyLeRoutier|Franky]], je comprends mieux ta remarque. Je pensais que tu faisait allusion au copier coller d'un livre au départ d'un fichier de son ordinateur vers une page wiki comme ce fut le cas du texte en question. J'étais déjà en train de rêver à un outils d'importation accessible uniquement par les administrateurs et qui permettrait d'importer directement la mise en page d'un PDF par exemple. Ce n'étais qu'un rêve malheureusement. :::Donc oui, je prends bonne note qu'il faudra contacter un bibliothécaire si jamais le déplacement du texte s'avérait nécessaire. Je pense l'avoir déjà fait au sujet d'un modèle ou l'autre. Merci pour ta remarque et bonne journée à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 11 décembre 2014 à 09:10 (CET) ::::Bonjour Lionel, pour l'importation externe aux projets de la fondation, il y a cette page ; [[:s:Aide:Créer un fichier DjVu]] sur Wikisource. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 15 décembre 2014 à 01:56 (CET) == Édition d'historique == Bonjour, j'apprécie sincèrement ta présence sur le bistro, mais est-ce que tu vois sur ton navigateur [//fr.wikibooks.org/w/index.php?title=Wikilivres:Le_Bistro/2015&action=edit&oldid=460231 le bandeau rouge "Vous êtes en train de modifier une ancienne version de cette page"]. Je me pose la question car sur la Wikiversité tu avais aussi blanchi de cette façon les éditions postérieures à celle que tu regardais. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 21:05 (CET) :Oups désolé [[Utilisateur:JackPotte|JackPotte]]. Non je ne me souviens pas d'avoir vu apparaître ce bandeau dans mon navigateur Firerfox. Mais ma mémoire n'est pas fiable :/ . J'avoue que [[v:Wikiversité:La_salle_café/février_2015#Pas_de_notifications|j'ai des problèmes avec l'organisation des bistros]]. Faudrait que je comprenne un jour le pourquoi du comment. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 21:38 (CET) ::J'utilise aussi [[Firefox]] en habillage Monobook. D'ailleurs j'avais publié un "best of" des modules testés sur [[Firefox/Extensions]]. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 22:20 (CET) :::J'aime pas Monobook. C'est pas très joli et puis comme c'est pas le skin par défaut, c'est la meilleurs façon de ne pas voir les bug visible au grand publique. Merci pour le lien et bonne soirée, [[Utilisateur:JackPotte|JackPotte]], [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 22:48 (CET) == Matthius == Je te remercie pour tes messages sur la page de discussion WP de Matthius. Mais par contre, attention : "''Personne n'est censé venir y intervenir sans votre demande''" rétablit, de facto, le droit d'auteur. Et d'ailleurs comment peux-tu être aussi sûr que le déblocage se fera demain ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:25 (CEST) :Par ce que l'administrateur qui l'a bloqué m'a donné son aval. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 26 mai 2023 à 19:37 (CEST) ::Ne trouves-tu pas sage d'attendre l'avis d'au moins un autre administrateur ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:56 (CEST) :::Pas moins sage que le blocage qui s'est fait sous l'avis d'un seul administrateur. Ici, nous sommes deux sur trois actifs pour le moment. Et même trois comme je viens de le découvrir. As-tu quelque chose de personnelle contre cet utilisateur [[Utilisateur:Fourmidable|Fourmidable]] ? Ne trouves-tu pas que chacun a le droit à une seconde chance ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 17:51 (CEST) ::::Il y a urgence à bloquer un contributeur quand celui-ci parasite les débats avec des modifications non constructives comme des blanchiments de pages et des tentatives d'enfouir les discussions. Par contre, il n'y a aucune urgence à le débloquer : nous pouvons prendre le temps d'en discuter tranquillement. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 27 mai 2023 à 20:23 (CEST) :::::Je n'ai pas été contre le premier blocage. Et tu ne réponds pas à mes questions. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:29 (CEST) ::::::Et au fait [[Utilisateur:Fourmidable|Fourmidable]], t'es pas en examen toi ? T'en es où dans tes études ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:38 (CEST) :::::::J'ai répété maintes fois que je n'avais rien contre ce contributeur en dehors de Wikilivres, c'est très bien qu'il diffuse ses idées. On peut lui donner une seconde chance sur Wikilivres mais il faut qu'il montre de son côté un peu de bonne foi, ce que j'ai toujours du mal à voir chez lui. Souvent, ses propos sont incohérents : ex. : [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204511533 je ne vois pas de prise de position] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204524525 Ils prennent position effectivement] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204568649 Je pense que ce livrel est neutre]. Honnêtement, je ne sais pas à quoi il joue. De mon côté : licence finie, je vais peut-être passer un ou deux rattrapages pour faire le plein de points et ainsi espérer une mention. Je suis encore pour un mois au conservatoire, dont l'année se termine à la toute fin juin, voire début juillet pour les concerts. Du 9 au 31 juillet, je serai tout seul en cure thermale, nous pourrons faire plus facilement des visios (le reste de l'année je vis chez mes parents et ceux-ci sont assez hostiles à mes activités sur les wikis, c'est aussi pour ça que j'ai du mal à me rendre disponible). Je me prépare à un master Didactique des langues, à Paris, Lyon ou Montpellier. {{Sourire}} [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 28 mai 2023 à 19:23 (CEST) ::::::::Chouette programme ! Et bravo déjà pour le parcours effectué. Concernant Matthius, J'espère que le temps nous aidera à mieux le comprendre. Les sujet qu'il traite sont fondamentaux et pas si loin de mes propres intérêts. Raisons pour laquelle je m'y investi. J'espère qu'il aura intégré les règles de savoir-vivre. À suivre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 mai 2023 à 12:55 (CEST) :::::::::Honnêtement, je ne vois toujours pas comment on pourrait transformer ces ouvrages pour les rendre réellement utiles et valables. Mais si tu te sens inspiré, NHP à faire une proposition. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 30 mai 2023 à 11:20 (CEST) ::::::::::Le mot utilité me fait penser à l'utilitarisme, une autre philosophie politique critiquée en sciences sociales [[w:Revue_du_MAUSS|Revue du MAUSS]]. Quoi qu'il arrive, le travail de réécriture sera profitable pour l'auteur et intéressant pour moi. Il est possible qu'en fin de compte les livres ne soient pas comme tu voudrais qu'il le soit, et ce sera à la communauté d'en déterminer leurs validités pour l'espace principale. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 30 mai 2023 à 12:15 (CEST) : J'ai revu [https://archive.org/download/WikiBooks/Economie-petits%20Wikibooks.odt l'économie pour les petits]. Je pense qu'il est neutre même si je ne suis pas centriste. C'était le plus neutre des livrels qui ont été enlevés de Wikibooks. Pour l'instant, c'est le seul livrel qui pourrait être remis sur wikibooks. En plus il est court. Pourrez-vous m'aider à le remettre sur wikibooks ?--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 30 janvier 2024 à 05:51 (CET) ::Bonjour [[Utilisateur:Matthius|Matthius]]. Content de voir que tu consacres toujours du temps dans ta participation au projet Wikiversité. Je ne vois pas comment t'aider à replacer ton travail dans l'espace principale de Wikilivres si ce n'est en t'encourageant à le faire. Idéalement, il faudrait que ta nouvelle version du livre apparaisse sur [[Utilisateur:Matthius/Économie Petits|cette page où l'on a déplacé l'ancienne jugée inadéquate]] grâce à la fonction « diff » il sera ainsi facile de voir toutes les modifications que apportées à l'ouvrage. Par la suite, tu peux laisser un message au bistro pour informer la communauté des changements et de ton intention de replacer l'ouvrage dans l'espace principale. Suite aux discussions, on pourra alors faire les démarches nécessaires. N'oublie pas de signer tes messages, cela facilite les échanges. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> :::Bonjour Lionel, j'espère que tu n'es plus trop fâché contre moi ^^', et je te remercie encore pour ton suivi. J'ai donné ma critique sur le Bistro. Bien à vous deux, --[[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 5 février 2024 à 07:27 (CET) :::Salut @[[Utilisateur:Fourmidable|Fourmidable]]. Non je ne suis pas fâche. J'étais juste un peu irrité par ta façon de t'exprimé durant une période ou je te sentais particulièrement actif dans la sélection des contenus dans les projets wikimédia. Comme je suis plutôt en faveur de l'inclusion et l'encourragement er l'inclusion, avec certaines limites que j'ai déjà exprimé avec mes votes en faveur de certaines "suppression". Un terme inadéqua puisque rien n'est supprimé des serveurs en vérité, mais juste retirer de l'espace visible pas internaute. Raison pour laquelle, je préfère déplacer le contenu vers l'espace utilisateur de l'auteur en prenant soin d'empêcher le référencement pas les moteurs de recherches, alors qu'il me semble que les espace utilisateur ne le sont pas. :::Mais donc, contend.de reprendre contact avec toi Hérison. J'espère que tout se passe bien dans ta vie et tes études ! Bien à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 5 février 2024 à 11:11 (CET) Je propose mes livrels à la recréation. Je pense que Fourmidable n'est pas habitué à lire l'économie réelle. Je lui ai montré que valeur et monnaie sont liés et que la finance comme entité humaine c'est utilisé. Fourmidable n'agit plus maintenant.--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 26 avril 2024 à 10:40 (CEST) Cela fait 7 mois que mes livrels sont proposés à la publication dans wikibooks. Je comprends que vous vouliez garder les contributeurs à wikibooks, puisque vous êtes dorénavant le seul à participer à wikibooks pour mes livrels. Jacques Cheminade fait peur à Jackpotte. Pourtant Cheminade dit que ceux qui ont le plus peur de lui ne l'écoutent pas. Fourmidable est lui mandaté pour supprimer, pas pour restaurer. Sinon il aurait négocié avec moi une modification des livrels que j'ai finalement pu réaliser grâce à vous. Que pensez-vous faire ? --[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 7 décembre 2024 à 21:30 (CET) :Bonsoir @[[Utilisateur:Matthius|Matthius]]. Je n'ai pas de réponse à votre question. Si vous voulez restaurer vos livres, il suffit de les déplacer dans l'espace principale en les renomant. On verra par la suite les réaction des quelques membres de notre communauté. Cette discussion dure depuis longtemps et pour le dire franchement, j'y ai déjà consacré beaucoup de temps que je ne suis pas prête à consacrer aujourd'hui. Il y a un moment ou, en tant que bénévole, on se fatigue de faire la médiation entre deux personnes qui n'arrive pas à s'entendre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 01:56 (CET) :::Je vais les déplacer mais ça risque de réveiller quelqu'un. Ceci écrit, les livrels ont été neutralisés. Y a-t-il un moyen de garder l'historique ? ::::Quand on dit dêplacer, en réalité On change le nom de la page et rien d'autre pour qu'elle figure dans ce ca dans l'espaxe de nom principalr et plus dans l'espace de nom utilisateur. Une page renomée garde tout son historique. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 10:50 (CET) :Pour ceux qui m'ont défendu : [http://web.archive.org/web/20260517193237/https://www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50 www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50]--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 17 mai 2026 à 21:37 (CEST) == Pages orphelines == Bonjour, Il semble que tu as perdu quelques pages dans les pages orphelines. Pourrais tu les garder sur ta Page d’utilisateur pour les sortir des pages orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 18 février 2026 à 13:19 (CET) :@[[Utilisateur:Xhungab|Xhungab]]. Si tu n'indiques pas la personne à qui tu adresses ton message, tu risques de rester sans réponse. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:13 (CET) ::L'idéal est de la notifier en la faisant apparaitre en bleu grâce au menu de l'éditeur visuel qui affiche un petit bonhomme avec un + en haut à sa gauche. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:16 (CET) :::Oups. Oublie les messages précésent. Je croyais qu'on était dans le bistro... [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:24 (CET) * [[Le mouvement Wikimedia/Préface|Préface]] * [[Le mouvement Wikimédia/Deuxième partie :Cosmographie du mouvement Wikimédia|Deuxième partie :Cosmographie du mouvement Wikimédia]] * [[Le mouvement Wikimédia/Première partie : La naissance du mouvement Wikimédia|Première partie : La naissance du mouvement Wikimédia]] * [[Le mouvement Wikimédia2/Version imprimable|Version imprimable]] * [[Projet:KarthaLab|KarthaLab]] * [[Le mouvement Wikimédia/Livre audio|Le mouvement Wikimédia : Livre audio]] == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 28 avril 2026 à 20:33 (CEST) </div> <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 --> == '''Décision''':Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil == Petites nouvelles de wikibook. la décision a été prise. On a donc besoin d'un administrateur pour conclure ce travail. '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' '''Décision pour : [https://fr.wikibooks.org/wiki/Utilisateur:Xhungab '''Wikibook''']''' Résultats : 3 + Pour, un Neutre Neutre et un - Contre soit 60 % de + Pour par rapport au total des votes exprimés : la proposition est adoptée. Quelques propositions de reformulations et de nuances ont été faites qui pourront être prise en compte. Cdlt, VIGNERON * discut. 13 septembre 2026 à 18:27 (CEST) Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:35 (CEST) :Salut @[[Utilisateur:Xhungab|Xhungab]]. Content de voir que la décision est prise. Tu peux déjà créer la page dont tu nous as parlé. Je m'occuperai de la page d'accueil, mercredi. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 15 septembre 2026 à 02:18 (CEST) ::J'ai créer la page : ::* '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' ::Il faudra peut-être la protéger pour que seuls les administrateurs puissent la modifier. ::. ::Il suffit de recopier dans la vitrine par la page ci-dessous. ::https://fr.wikibooks.org/wiki/Utilisateur:Xhungab ::. ::Merci pour ton aide. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 15 septembre 2026 à 09:47 (CEST) 885mu1r67wlegt2ha23sb5972jxmv4c 772234 772231 2026-09-15T08:53:07Z Lionel Scheepmans 20012 /* Décision:Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil */ Réponse 772234 wikitext text/x-wiki Je vous écoute {{sourire}} Bonjour, Lionel Scheepmans, et [[Wikilivres:Bienvenue|bienvenue]] sur Wikilivres. En cas de besoin, voici quelques pages qui devraient vous être utiles si vous n'êtes pas familiers des [[w:Wiki|wikis]] : *[[Aide:Comment modifier une page|Comment modifier une page]] *[[Aide:Accueil|Sommaire des pages d'aide]] *[[Wikilivres:Conventions typographiques|Conventions typographiques]] *[[Wikilivres:Règles|Règles et recommandations]] *[[Wikilivres:Bac à sable|Le bac à sable pour essayer la syntaxe wiki]] Pour signer vos messages en page de discussion (on ne [[Wikilivres:Règles#Rédaction collective|signe pas]] les livres) utilisez quatre tildes (<nowiki>~~~~</nowiki>); cela produira automatiquement votre nom et la date de publication. Si vous avez besoin d'aide, demandez à la communauté au [[Wikilivres:Le Bistro|Bistro]] ou sur ma propre page de discussion, ou bien consultez la [[Wikilivres:Foire aux questions|FAQ]] . Bonne continuation. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) == Copie-Coller == Bonjour, il faut éviter ce type de transfert, il serait plutôt préférable de demande une [[Spécial:Import|importation]] à un administrateur. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 10 décembre 2014 à 13:43 (CET) :Bonjour[[Utilisateur:FrankyLeRoutier|Franky]] et merci pour ton message d'accueil. Malheureusement, je ne comprends pas ce que tu veux dire dans ton deuxième message ci-dessus ? Peux-tu être plus explicite ? Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 10 décembre 2014 à 14:17 (CET) ::Rebonjour Lionel, par exemple si un des auteurs de cette [[Clefs pour mieux comprendre le monde et participer à son évolution|page]] effectue un copie-coller de son contenu sur Wikiversité sans faire l'importation des [[:w:Aide:Historique|historiques]], il ne respectera pas les droits des contributeurs puisque l'article source sera supprimés. Amicalement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 11 décembre 2014 à 05:22 (CET) :::Oui effectivement [[Utilisateur:FrankyLeRoutier|Franky]], je comprends mieux ta remarque. Je pensais que tu faisait allusion au copier coller d'un livre au départ d'un fichier de son ordinateur vers une page wiki comme ce fut le cas du texte en question. J'étais déjà en train de rêver à un outils d'importation accessible uniquement par les administrateurs et qui permettrait d'importer directement la mise en page d'un PDF par exemple. Ce n'étais qu'un rêve malheureusement. :::Donc oui, je prends bonne note qu'il faudra contacter un bibliothécaire si jamais le déplacement du texte s'avérait nécessaire. Je pense l'avoir déjà fait au sujet d'un modèle ou l'autre. Merci pour ta remarque et bonne journée à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 11 décembre 2014 à 09:10 (CET) ::::Bonjour Lionel, pour l'importation externe aux projets de la fondation, il y a cette page ; [[:s:Aide:Créer un fichier DjVu]] sur Wikisource. Cordialement. [[Utilisateur:FrankyLeRoutier|FrankyLeRoutier]] % [[Discussion utilisateur:FrankyLeRoutier|Service après-vente]] 15 décembre 2014 à 01:56 (CET) == Édition d'historique == Bonjour, j'apprécie sincèrement ta présence sur le bistro, mais est-ce que tu vois sur ton navigateur [//fr.wikibooks.org/w/index.php?title=Wikilivres:Le_Bistro/2015&action=edit&oldid=460231 le bandeau rouge "Vous êtes en train de modifier une ancienne version de cette page"]. Je me pose la question car sur la Wikiversité tu avais aussi blanchi de cette façon les éditions postérieures à celle que tu regardais. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 21:05 (CET) :Oups désolé [[Utilisateur:JackPotte|JackPotte]]. Non je ne me souviens pas d'avoir vu apparaître ce bandeau dans mon navigateur Firerfox. Mais ma mémoire n'est pas fiable :/ . J'avoue que [[v:Wikiversité:La_salle_café/février_2015#Pas_de_notifications|j'ai des problèmes avec l'organisation des bistros]]. Faudrait que je comprenne un jour le pourquoi du comment. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 21:38 (CET) ::J'utilise aussi [[Firefox]] en habillage Monobook. D'ailleurs j'avais publié un "best of" des modules testés sur [[Firefox/Extensions]]. [[Utilisateur:JackPotte|JackPotte]] ([[Discussion utilisateur:JackPotte|<span style="color:#FF6600">$</span>♠]]) 7 février 2015 à 22:20 (CET) :::J'aime pas Monobook. C'est pas très joli et puis comme c'est pas le skin par défaut, c'est la meilleurs façon de ne pas voir les bug visible au grand publique. Merci pour le lien et bonne soirée, [[Utilisateur:JackPotte|JackPotte]], [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><strong>✉ </strong> [[User talk:Lionel Scheepmans|Wiki]] ou [[Special:EmailUser/Lionel_Scheepmans|eMail]]</sup> 7 février 2015 à 22:48 (CET) == Matthius == Je te remercie pour tes messages sur la page de discussion WP de Matthius. Mais par contre, attention : "''Personne n'est censé venir y intervenir sans votre demande''" rétablit, de facto, le droit d'auteur. Et d'ailleurs comment peux-tu être aussi sûr que le déblocage se fera demain ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:25 (CEST) :Par ce que l'administrateur qui l'a bloqué m'a donné son aval. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 26 mai 2023 à 19:37 (CEST) ::Ne trouves-tu pas sage d'attendre l'avis d'au moins un autre administrateur ? [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 26 mai 2023 à 19:56 (CEST) :::Pas moins sage que le blocage qui s'est fait sous l'avis d'un seul administrateur. Ici, nous sommes deux sur trois actifs pour le moment. Et même trois comme je viens de le découvrir. As-tu quelque chose de personnelle contre cet utilisateur [[Utilisateur:Fourmidable|Fourmidable]] ? Ne trouves-tu pas que chacun a le droit à une seconde chance ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 17:51 (CEST) ::::Il y a urgence à bloquer un contributeur quand celui-ci parasite les débats avec des modifications non constructives comme des blanchiments de pages et des tentatives d'enfouir les discussions. Par contre, il n'y a aucune urgence à le débloquer : nous pouvons prendre le temps d'en discuter tranquillement. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 27 mai 2023 à 20:23 (CEST) :::::Je n'ai pas été contre le premier blocage. Et tu ne réponds pas à mes questions. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:29 (CEST) ::::::Et au fait [[Utilisateur:Fourmidable|Fourmidable]], t'es pas en examen toi ? T'en es où dans tes études ? [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 27 mai 2023 à 23:38 (CEST) :::::::J'ai répété maintes fois que je n'avais rien contre ce contributeur en dehors de Wikilivres, c'est très bien qu'il diffuse ses idées. On peut lui donner une seconde chance sur Wikilivres mais il faut qu'il montre de son côté un peu de bonne foi, ce que j'ai toujours du mal à voir chez lui. Souvent, ses propos sont incohérents : ex. : [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204511533 je ne vois pas de prise de position] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204524525 Ils prennent position effectivement] -> [https://fr.wikipedia.org/w/index.php?title=Discussion_utilisateur:Lionel_Scheepmans&diff=next&oldid=204568649 Je pense que ce livrel est neutre]. Honnêtement, je ne sais pas à quoi il joue. De mon côté : licence finie, je vais peut-être passer un ou deux rattrapages pour faire le plein de points et ainsi espérer une mention. Je suis encore pour un mois au conservatoire, dont l'année se termine à la toute fin juin, voire début juillet pour les concerts. Du 9 au 31 juillet, je serai tout seul en cure thermale, nous pourrons faire plus facilement des visios (le reste de l'année je vis chez mes parents et ceux-ci sont assez hostiles à mes activités sur les wikis, c'est aussi pour ça que j'ai du mal à me rendre disponible). Je me prépare à un master Didactique des langues, à Paris, Lyon ou Montpellier. {{Sourire}} [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 28 mai 2023 à 19:23 (CEST) ::::::::Chouette programme ! Et bravo déjà pour le parcours effectué. Concernant Matthius, J'espère que le temps nous aidera à mieux le comprendre. Les sujet qu'il traite sont fondamentaux et pas si loin de mes propres intérêts. Raisons pour laquelle je m'y investi. J'espère qu'il aura intégré les règles de savoir-vivre. À suivre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 mai 2023 à 12:55 (CEST) :::::::::Honnêtement, je ne vois toujours pas comment on pourrait transformer ces ouvrages pour les rendre réellement utiles et valables. Mais si tu te sens inspiré, NHP à faire une proposition. [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 30 mai 2023 à 11:20 (CEST) ::::::::::Le mot utilité me fait penser à l'utilitarisme, une autre philosophie politique critiquée en sciences sociales [[w:Revue_du_MAUSS|Revue du MAUSS]]. Quoi qu'il arrive, le travail de réécriture sera profitable pour l'auteur et intéressant pour moi. Il est possible qu'en fin de compte les livres ne soient pas comme tu voudrais qu'il le soit, et ce sera à la communauté d'en déterminer leurs validités pour l'espace principale. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 30 mai 2023 à 12:15 (CEST) : J'ai revu [https://archive.org/download/WikiBooks/Economie-petits%20Wikibooks.odt l'économie pour les petits]. Je pense qu'il est neutre même si je ne suis pas centriste. C'était le plus neutre des livrels qui ont été enlevés de Wikibooks. Pour l'instant, c'est le seul livrel qui pourrait être remis sur wikibooks. En plus il est court. Pourrez-vous m'aider à le remettre sur wikibooks ?--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 30 janvier 2024 à 05:51 (CET) ::Bonjour [[Utilisateur:Matthius|Matthius]]. Content de voir que tu consacres toujours du temps dans ta participation au projet Wikiversité. Je ne vois pas comment t'aider à replacer ton travail dans l'espace principale de Wikilivres si ce n'est en t'encourageant à le faire. Idéalement, il faudrait que ta nouvelle version du livre apparaisse sur [[Utilisateur:Matthius/Économie Petits|cette page où l'on a déplacé l'ancienne jugée inadéquate]] grâce à la fonction « diff » il sera ainsi facile de voir toutes les modifications que apportées à l'ouvrage. Par la suite, tu peux laisser un message au bistro pour informer la communauté des changements et de ton intention de replacer l'ouvrage dans l'espace principale. Suite aux discussions, on pourra alors faire les démarches nécessaires. N'oublie pas de signer tes messages, cela facilite les échanges. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> :::Bonjour Lionel, j'espère que tu n'es plus trop fâché contre moi ^^', et je te remercie encore pour ton suivi. J'ai donné ma critique sur le Bistro. Bien à vous deux, --[[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 5 février 2024 à 07:27 (CET) :::Salut @[[Utilisateur:Fourmidable|Fourmidable]]. Non je ne suis pas fâche. J'étais juste un peu irrité par ta façon de t'exprimé durant une période ou je te sentais particulièrement actif dans la sélection des contenus dans les projets wikimédia. Comme je suis plutôt en faveur de l'inclusion et l'encourragement er l'inclusion, avec certaines limites que j'ai déjà exprimé avec mes votes en faveur de certaines "suppression". Un terme inadéqua puisque rien n'est supprimé des serveurs en vérité, mais juste retirer de l'espace visible pas internaute. Raison pour laquelle, je préfère déplacer le contenu vers l'espace utilisateur de l'auteur en prenant soin d'empêcher le référencement pas les moteurs de recherches, alors qu'il me semble que les espace utilisateur ne le sont pas. :::Mais donc, contend.de reprendre contact avec toi Hérison. J'espère que tout se passe bien dans ta vie et tes études ! Bien à toi. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 5 février 2024 à 11:11 (CET) Je propose mes livrels à la recréation. Je pense que Fourmidable n'est pas habitué à lire l'économie réelle. Je lui ai montré que valeur et monnaie sont liés et que la finance comme entité humaine c'est utilisé. Fourmidable n'agit plus maintenant.--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 26 avril 2024 à 10:40 (CEST) Cela fait 7 mois que mes livrels sont proposés à la publication dans wikibooks. Je comprends que vous vouliez garder les contributeurs à wikibooks, puisque vous êtes dorénavant le seul à participer à wikibooks pour mes livrels. Jacques Cheminade fait peur à Jackpotte. Pourtant Cheminade dit que ceux qui ont le plus peur de lui ne l'écoutent pas. Fourmidable est lui mandaté pour supprimer, pas pour restaurer. Sinon il aurait négocié avec moi une modification des livrels que j'ai finalement pu réaliser grâce à vous. Que pensez-vous faire ? --[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 7 décembre 2024 à 21:30 (CET) :Bonsoir @[[Utilisateur:Matthius|Matthius]]. Je n'ai pas de réponse à votre question. Si vous voulez restaurer vos livres, il suffit de les déplacer dans l'espace principale en les renomant. On verra par la suite les réaction des quelques membres de notre communauté. Cette discussion dure depuis longtemps et pour le dire franchement, j'y ai déjà consacré beaucoup de temps que je ne suis pas prête à consacrer aujourd'hui. Il y a un moment ou, en tant que bénévole, on se fatigue de faire la médiation entre deux personnes qui n'arrive pas à s'entendre. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 01:56 (CET) :::Je vais les déplacer mais ça risque de réveiller quelqu'un. Ceci écrit, les livrels ont été neutralisés. Y a-t-il un moyen de garder l'historique ? ::::Quand on dit dêplacer, en réalité On change le nom de la page et rien d'autre pour qu'elle figure dans ce ca dans l'espaxe de nom principalr et plus dans l'espace de nom utilisateur. Une page renomée garde tout son historique. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 8 décembre 2024 à 10:50 (CET) :Pour ceux qui m'ont défendu : [http://web.archive.org/web/20260517193237/https://www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50 www.informalibre.com/Des-contributeurs-de-Wikipedia-sont-devenus-des-agents-des-lobbies-50]--[[Utilisateur:Matthius|Matthius]] ([[Discussion utilisateur:Matthius|discussion]]) 17 mai 2026 à 21:37 (CEST) == Pages orphelines == Bonjour, Il semble que tu as perdu quelques pages dans les pages orphelines. Pourrais tu les garder sur ta Page d’utilisateur pour les sortir des pages orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 18 février 2026 à 13:19 (CET) :@[[Utilisateur:Xhungab|Xhungab]]. Si tu n'indiques pas la personne à qui tu adresses ton message, tu risques de rester sans réponse. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:13 (CET) ::L'idéal est de la notifier en la faisant apparaitre en bleu grâce au menu de l'éditeur visuel qui affiche un petit bonhomme avec un + en haut à sa gauche. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:16 (CET) :::Oups. Oublie les messages précésent. Je croyais qu'on était dans le bistro... [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 18 février 2026 à 15:24 (CET) * [[Le mouvement Wikimedia/Préface|Préface]] * [[Le mouvement Wikimédia/Deuxième partie :Cosmographie du mouvement Wikimédia|Deuxième partie :Cosmographie du mouvement Wikimédia]] * [[Le mouvement Wikimédia/Première partie : La naissance du mouvement Wikimédia|Première partie : La naissance du mouvement Wikimédia]] * [[Le mouvement Wikimédia2/Version imprimable|Version imprimable]] * [[Projet:KarthaLab|KarthaLab]] * [[Le mouvement Wikimédia/Livre audio|Le mouvement Wikimédia : Livre audio]] == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 28 avril 2026 à 20:33 (CEST) </div> <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 --> == '''Décision''':Prise de décision/Créer un espace lecteurs et un espace auteurs sur la page d'accueil == Petites nouvelles de wikibook. la décision a été prise. On a donc besoin d'un administrateur pour conclure ce travail. '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' '''Décision pour : [https://fr.wikibooks.org/wiki/Utilisateur:Xhungab '''Wikibook''']''' Résultats : 3 + Pour, un Neutre Neutre et un - Contre soit 60 % de + Pour par rapport au total des votes exprimés : la proposition est adoptée. Quelques propositions de reformulations et de nuances ont été faites qui pourront être prise en compte. Cdlt, VIGNERON * discut. 13 septembre 2026 à 18:27 (CEST) Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:35 (CEST) :Salut @[[Utilisateur:Xhungab|Xhungab]]. Content de voir que la décision est prise. Tu peux déjà créer la page dont tu nous as parlé. Je m'occuperai de la page d'accueil, mercredi. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 15 septembre 2026 à 02:18 (CEST) ::J'ai créer la page : ::* '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' ::Il faudra peut-être la protéger pour que seuls les administrateurs puissent la modifier. ::. ::Il suffit de recopier dans la vitrine par la page ci-dessous. ::https://fr.wikibooks.org/wiki/Utilisateur:Xhungab ::. ::Merci pour ton aide. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 15 septembre 2026 à 09:47 (CEST) :::OK. Je fais ça ce soir ou demain. [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 15 septembre 2026 à 10:53 (CEST) ki17fs9r7lc2v9azfzwkyoqsaih7hhs Livre de cuisine/Risotto 0 50635 772211 378652 2026-09-14T18:08:31Z Cdang 1202 /* Recettes */ potimarron 772211 wikitext text/x-wiki {{Livre de cuisine}} [[Image:Flickr - cyclonebill - Risotto med citron og grønne bønner.jpg|right|250px|Risotto, ici au citron et aux haricots verts]] Le '''risotto''' est une réduction d'un bouillon (''minestra asciutta'' en italien) de [[riz]] cuit avec divers ingrédients. ==Principe culinaire== Le principe de cuisson ressemble à celui du riz pilaf, qui consiste à d'abord faire légèrement frire le riz dans une matière grasse avant la cuisson à l'eau. Cependant, il en diffère par le fait que le liquide est ensuite absorbé par petites quantités successives jusqu'à cuisson complète. Le risotto repose sur l'emploi de riz riche en amidon et non étuvé (traditionnellement de variété Arborio, Carnaroli ou Vialone Nano) et le principe d'une cuisson par adjonction successive de petites quantités de bouillon chaud, après avoir fait revenir le riz dans des oignons fondus dans du beurre ou de l'huile d'olive. Cette opération s'appelle la ''tostatura''. Une multitude de variations est ensuite possible sur les ingrédients ajoutés ou le degré de mouillage final. Il est servi comme ''primo piatto'', équivalent à une entrée. Il existe une autre méthode de préparation du risotto qui ne tient pas compte de la ''tostatura'', on parle alors de préparation vénitienne, et le service se fait ''all'onda'', c'est-à-dire plus mouillé que le risotto traditionnel. Les risotti se déclinent en de nombreuses variétés. On choisira de mouiller avec un bouillon de viande et de légumes pour les risotti aux champignons, aux légumes ou à la viande, et avec un fumet de poisson pour ceux aux fruits de mer ou au poisson. Il existe aussi des variantes sucrées servies en dessert. ==Variétés de riz== [[Image:Carnaroli.jpg|thumb|Un riz de variété carnaroli convient bien au risotto.]] [[Fichier:Arborio (rice).jpg|thumb|Vue rapprochée de la variété Arborio.]] Parmi les nombreuses variétés italiennes, l'Arborio et le Vialone Nano (semifini) et le Carnaroli (superfino) sont les plus courantes et les plus appréciées par les chefs de cuisine. == Ingrédients == Pour 4 personnes : * 1 {{i|'=oui|oignon}}, * 2 cuillères d'{{i|'=oui|huile d'olive}}, * 300 g de {{i|riz}} italien, * 1/2 verre de {{i|vin blanc}} sec, * 1 l de {{i|bouillon}}, * 1 noix de {{i|beurre}}, * 30 g de {{i|parmesan}} râpé. == Préparation == [[File:Preparation rissoto saumon etape4.jpg|thumb|Mouillage du risotto]] # Émincer l'oignon et le faire fondre dans deux cuillères d'huile d'olive. # Ajouter le riz et le faire revenir jusqu'à ce qu'il soit translucide. # Puis arroser avec le vin blanc. # Quand celui-ci est réduit, ajouter peu à peu le bouillon chaud (une louche à la fois) jusqu'à absorption complète. La cuisson devrait prendre 18 minutes. # Avant de servir, incorporez une noix de beurre et le parmesan ensuite couvrir pendant deux minutes. Ceci achèvera d'apporter une consistance crémeuse au plat, dont la liaison est initialement apportée par l'amidon du riz. === Recettes === * [[Livre de cuisine/Risotto à la milanaise|Risotto à la milanaise]] * [[Livre de cuisine/Risotto au potimarron|Risotto au potimarron]] * [[Livre de cuisine/Risotto au poulet|Risotto au poulet]] * [[Livre de cuisine/Risotto de saumon|Risotto de saumon]] * [[Livre de cuisine/Risotto au noir|Risotto au noir]] === Liens externes === {{Autres projets | commons = Category:Risotto}} [[Catégorie:Cuisine italienne]] ai0vazbry4amd7e2v3ux0yyat9veux1 Discussion utilisateur:Mewtow 3 55231 772204 772108 2026-09-14T14:30:15Z Mewtow 31375 /* Demandes de prises de décision */ Réponse 772204 wikitext text/x-wiki {| width="100%" align="center" style="display:block; float:center; background:#FFF; text-size:100%; margin:.5 .5 .5 .5em; padding:2px; border:1px solid #aaa; background-color:transparent;" |---- | colspan="2" align="center" width="95%" style="height:9px; margin:.2em; padding:5px; border:1px solid #aaa; background-color:#bfbfff; font-size:130%; text-align:center; float:center" | '''Bienvenue sur Wikilivres, {{BASEPAGENAME}}&nbsp;!''' |---- | colspan="2" align="center" width="85%" style="font-size:110%" | <br/>Wikilivres est un projet francophone de rédactions de manuels pédagogiques libres. |---- | valign="middle" align="center" | [[Image:Crystal Clear app Login Manager.png|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Si vous désirez vous investir dans ce projet passionnant, vous êtes le bienvenu. Tous les contributeurs de Wikilivres vous invitent à corriger et développer les livres existants et à créer le votre !<br /> Prenez avant toute chose connaissance des '''[[Wikilivres:Présentation|principes fondateurs de Wikilivres]]''' à la base du projet. N'ayez aucune crainte d'abîmer la bibliothèque : toutes les modifications sont suivies par des contributeurs plus expérimentés qui pourront corriger vos éventuelles erreurs. Ne vous offensez pas de ces interventions ni des messages destinés à vous aider à comprendre le projet et ses règles. Suivez leurs conseils et n'hésitez pas à demander simplement plus d'explications ! |---- | valign="middle" align="center" | [[Image:ACE.png|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Lorsque vous contribuez, '''gardez à l'esprit que Wikilivres est une ''bibliothèque universelle''''', il faut donc veiller à '''respecter un point de vue vérifiable'''. De plus, le contenu doit rester conforme à notre licence d'utilisation libre (GFDL).<br> Les utilisateurs travaillent en harmonie et privilégient la discussion aussi courtoise que possible pour régler les oppositions, aussi, prenez le temps de vous y habituer. Pensez à vous présenter également sur votre [[Utilisateur:{{PAGENAME}}|page d'utilisateur]], ce qui permettra à chacun de connaître vos centres d'intérêt et de mieux vous guider vers les divers projets thématiques. Pour cela, vous pouvez employer les [[Wikilivres:Boîtes utilisateur|boîtes utilisateur]].<br /> Bien qu'il s'agisse d'un travail de rédaction complexe résultant de l'action de milliers de contributeurs francophones du monde entier, sa philosophie peut être résumée en quelques mots : '''« N'hésitez pas à l'améliorer ! »''' |---- | valign="middle" align="center" | [[Image:Plume pen w.png|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Au cours d'une discussion, n'oubliez pas de signer vos messages, à l'aide de quatre tildes (<nowiki>~~~~</nowiki>) ou du bouton [[Image:Bouton Signature.png|25px|lien=]] présent en haut de la fenêtre de modification. En revanche ne signez pas les livres lorsque vous en créez ou que vous les modifiez car l'historique permet de retrouver toutes vos contributions.<br> |---- | valign="middle" align="center" | [[Image:Wikibooks logo.svg|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Vous pouvez trouver des explications détaillées à partir des pages : * '''''[[Aide:Accueil|Tout l'indispensable]]''''', à lire absolument, * '''[[Aide:Syntaxe|Syntaxe]]''', les conventions d'écriture à connaître. * '''[[Aide:Poser une question|Poser une question]]''', si vous vous sentez perdu. * '''[[Aide:Comment modifier une page|Comment modifier une page]]''' Vous pourrez ajouter par la suite d'autres pages d'aide ou les informations dont vous pensez avoir besoin dans votre [[Utilisateur:{{PAGENAME}}|espace utilisateur]]. Si vous souhaitez contribuer mais que vous n'avez pas d'idées, allez faire un tour sur [[Wikilivres:Demande de livre|les demandes de livres et de traductions !]]. Bonne contribution, et n'hésitez pas à me contacter si besoin !<br> <small>PS: If you arn't French, you can consult the [[Wikilivres:Ambassade|embassy]] for help.</small> |} --&nbsp;◄&nbsp;[[Utilisateur:DavidL|'''D'''avid&nbsp;'''L''']]&nbsp;•&nbsp;[[Discussion Utilisateur:DavidL|discuter]]&nbsp;► 9 mars 2013 à 20:42 (CET) == Page et sous-pages == Bonjour, Remarque concernant l'organisation d'un livre : il faut que les chapitres ait un titre de la forme <code>titre du livre/titre du chapitre</code> (avec un slash / servant de séparateur). Par exemple la page <code>Motivation</code> ne veut rien dire hors de son contexte : un autre livre peut également avoir un chapitre nommé '''Motivation'''. Il vaut mieux la nommer <code>Pédagogie : psychologie cognitive appliquée à l'enseignement/motivation</code>. [[Wikilivres:Conventions sur les titres]] --&nbsp;◄&nbsp;[[Utilisateur:DavidL|'''D'''avid&nbsp;'''L''']]&nbsp;•&nbsp;[[Discussion Utilisateur:DavidL|discuter]]&nbsp;► 9 novembre 2013 à 15:13 (CET) == Share your experience and feedback as a Wikimedian in this global survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Bonjour ! La Fondation Wikimédia vous demande votre avis dans une enquête. Nous souhaitons savoir si nous répondons bien à vos attentes dans votre travail sur les wikis et à l’extérieur, et ce que nous pouvons faire pour améliorer les choses à l’avenir.<ref group=survey>Le principal objectif de l’enquête est d’obtenir des retours sur le travail actuel de la Fondation Wikimédia, sans stratégie à long terme.</ref> Les opinions que vous partagez affecteront directement le travail actuel et futur de la Fondation Wikimédia. Vous avez été choisi au hasard pour répondre à l’enquête, car nous souhaitons obtenir des informations de la part de votre communauté Wikimédia. Afin de vous remercier pour le temps accordé, nous livrons 20 t-shirts Wikimédia à des personnes choisies au hasard parmi celles ayant répondu à l’enquête.<ref group=survey>Questions légales : pas d’achat nécessaire. Vous devez avoir l’âge de la majorité pour participer. Soutenu par la Fondation Wikimédia (Wikimedia Foundation) située au 149 New Montgomery, San Francisco, CA, USA, 94105. Se termine le 31 janvier 2017. Le don est annulé en cas d’infraction. [[m:Community Engagement Insights/2016 contest rules|Cliquez ici pour lire les règles du concours]].</ref> Le questionnaire est disponible dans différents langages et requiert entre 20 et 40 minutes pour être complété. <strong>'''[https://wikimedia.qualtrics.com/SE/?SID=SV_6mTVlPf6O06r3mt&Aud=VAE&Src=57VAEOP Répondez-y maintenant !]'''</strong> Vous pouvez lire davantage d’informations sur [[m:Community_Engagement_Insights/About_CE_Insights|ce projet]]. Cette enquête est hébergée par un service tiers et régie par sa [[:foundation:Community_Engagement_Insights_2016_Survey_Privacy_Statement|déclaration de confidentialité]]. Visitez notre [[m:Community_Engagement_Insights/Frequently_asked_questions|page des questions fréquentes]] pour trouver plus d’informations sur cette enquête. Si vous avez besoin d’aide supplémentaire, ou désirez vous désabonner des communications futures au sujet de cette enquête, envoyez un courrier électronique à surveys@wikimedia.org. Merci ! --[[:m:User:EGalvez (WMF)|EGalvez (WMF)]] ([[:m:User talk:EGalvez (WMF)|talk]]) 13 janvier 2017 à 23:25 (CET) </div> <!-- Message envoyé par User:EGalvez (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2016/57-VAEOP&oldid=16205400 --> <references group=survey /> == Mewtow, vous aussi venez discuter de l'avenir du mouvement == Bonjour, Je viens vous inviter à rejoindre les discussions en cours sur le futur du mouvement Wikimédia. Depuis quelques jours déjà, des contributeurs, à travers divers projets et langues sur wikis, discutent de nos priorités, en tant que mouvement, pour les 15 années à venir : Quelle est la chose la plus importante à faire ? Comment maintenir ou accélérer notre progrès? Qu'est-ce qui pourrait consolider notre unité en tant que mouvement? Voici autant de questions auxquelles tous essaient d’apporter des réponses. Vous aussi, votre point de vue compte énormement. On prend l'avis de tout le monde y compris les correcteurs d'orthographe {{sourire}}. N’hésitez surtout pas à consulter la page des discussions sur [[Wikilivres:Mouvement Wikimedia/Stratégie 2017]] pour y laisser vos propositions ou pour débattre des propositions des autres. Voici quelques liens utiles sur le contexte et le processus de cette consultation : * [[M:Strategy/Wikimedia movement/2017/Process/Briefing/fr|Contexte général]], pour comprendre les objectifs et jeter un coup d'oeil aux études et statistiques connexes * [[M:Strategy/Wikimedia movement/2017/Process/fr|Calendrier et processus]], pour plus de détails sur les dates et consulter le graphique illustrant toutes les étapes * [[M:Strategy/Wikimedia_movement/2017/Frequently_asked_questions/fr|Foire Aux Questions (FAQ)]], pour les questions qui reviennent fréquemment N'hésitez pas à me contacter au besoin. Amicalement, [[Utilisateur:Samuel (WMF)|Samuel (WMF)]] ([[Discussion utilisateur:Samuel (WMF)|discussion]]) 29 mars 2017 à 17:32 (CEST) == Discussion des principes de Fonctionnement de Wikibooks == Bonjour, j'ai modifié des pages d'aide : [[Wikilivres/Introduction]], [[Wikilivres/Démarrer un wikilivre]] et créé [[Wikilivres/Pourquoi écrire sur Wikibooks ?]]. Mes modifications concernent les principes de fonctionnement de Wikibooks, sur le travail coopératif, le respect des auteurs et le droit de signer ses livres. Tous les contributeurs sont concernés. Une discussion est initiée sur [[Discussion:Wikilivres/Démarrer un wikilivre]]. J'aimerais bien avoir votre avis. [[Utilisateur:Thierry Dugnolle|Thierry Dugnolle]] ([[Discussion utilisateur:Thierry Dugnolle|discussion]]) 27 avril 2017 à 16:43 (CEST) == Notes == == Relecture == Bonjour, Afin d'éviter toute « collision » lors d'éditions simultanées, ce serait bien que tu m'indiques directement que tel ou tel chapitre est en état d'être relu ! Amitiés, [[Utilisateur:Jean-Jacques MILAN|Jean-Jacques MILAN]] ([[Discussion utilisateur:Jean-Jacques MILAN|discussion]]) 26 juin 2017 à 10:09 (CEST). :Bonjour, :Pour le moment, à l'exception des trois chapitres sur les satellites et les corps transneptuniens, tous les chapitres sont terminés et en état d'être relus/corrigés. :Cordialement. == [[Architecture des ordinateurs]] == Bonjour Mewtow, Un utilisateur [[Discussion:Architecture des ordinateurs#Fusion|suggère de fusionner]] l'ébauche de livre [[Architecture des ordinateurs]] dans [[Fonctionnement d'un ordinateur]]. Si des éléments te semblent viables, n'hésite pas à t'en servir. Sinon, je déplacerai [[Architecture des ordinateurs]] vers des brouillons afin de ne pas encombrer la wikilibrairie. Bienvenue sur Wikibooks, puisque nous ne sommes pas croisés. Bonne continuation ! Bien cordialement, 10 juillet 2017 à 16:03 (CEST) :Bonjour Savant-fou. :Après lecture du cours en question, je ne pense pas que je pourrais réutiliser quoique ce soit du cours "Architecture des ordinateurs" (que je connaissais depuis longtemps, mais n'avais pas souhaité modifier). La quasi-totalité de ce qui est présent dans ce cours l'est aussi dans le mien, avec cependant quelques exemples ou exercices en plus que je ne penses pas pertinent d'insérer dans mon ouvrage. Je ne m'opposerais pas du tout à ce que vous le déplaciez vers des brouillons, comme vous l'avez mentionné. :Cordialement. :[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 10 juillet 2017 à 19:09 (CEST) ::Merci pour ta réponse. J'ai déplacé Architecture des ordinateurs vers [[Utilisateur:Merrheim/Architecture_des_ordinateurs]]. La page [[Architecture des ordinateurs]] redirige maintenant vers [[Fonctionnement d'un ordinateur]]. Bonne journée ! [[Fichier:P_physics.svg|25px|link=User:Savant-fou]]&nbsp;[[Utilisateur:Savant-fou|Savant-fou]] <small><sup>[[Discussion Utilisateur:Savant-fou|parler]]</sup></small> 11 juillet 2017 à 09:54 (CEST) == Share your experience and feedback as a Wikimedian in this global survey == <div class="mw-parser-output"> <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Bonjour ! La Fondation Wikimédia vous demande votre avis dans une enquête. Nous souhaitons savoir si nous répondons bien à vos attentes dans votre travail sur les wikis et à l’extérieur, et ce que nous pouvons faire pour améliorer les choses à l’avenir. Les opinions que vous partagez affecteront directement le travail actuel et futur de la Fondation Wikimédia. Vous avez été choisi·e au hasard pour répondre à l’enquête, car nous souhaitons obtenir des informations de la part de votre communauté Wikimédia. Le questionnaire est disponible dans différentes langues et requiert entre 20 et 40 minutes pour être complété. <big>'''[https://wikimedia.qualtrics.com/jfe/form/SV_5ABs6WwrDHzAeLr?aud=VAE&prj=ot&edc=6&prjedc=ot6 Répondez-y maintenant !]'''</big> Vous pouvez trouver davantage d’informations concernant cette enquête [[m:Special:MyLanguage/Community_Engagement_Insights/About_CE_Insights|sur la page du projet]] et voir comment vos retours aident la Fondation Wikimédia à prendre en charge des contributeurs comme vous. Cette enquête est hébergée par un service tiers et régie par cette [[:foundation:Community_Engagement_Insights_2018_Survey_Privacy_Statement|déclaration de confidentialité]] (en anglais). Visitez notre [[m:Special:MyLanguage/Community_Engagement_Insights/Frequently_asked_questions|page des questions fréquentes]] pour trouver plus d’informations sur cette enquête. Si vous avez besoin d’aide supplémentaire, ou désirez vous désabonner des communications futures au sujet de cette enquête, envoyez un courrier électronique via la fonctionnalité EmailUser à [[:m:Special:EmailUser/WMF Surveys|WMF Surveys]] pour être supprimé·e de la liste. Merci ! </div> <span class="mw-content-ltr" dir="ltr">[[m:User:WMF Surveys|WMF Surveys]]</span>, 29 mars 2018 à 20:36 (CEST) </div> <!-- Message envoyé par User:WMF Surveys@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2018/ot6&oldid=17881403 --> == Reminder: Share your feedback in this Wikimedia survey == <div class="mw-parser-output"> <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Chaque réponse à cette enquête peut aider la Fondation Wikimédia à améliorer votre expérience sur les projets Wikimédia. Jusqu’à présent, nous n’avons entendu que 29% des contributeurs Wikimédia. Le sondage est disponible dans plusieurs langues et prend entre 20 et 40 minutes pour être complété. '''[https://wikimedia.qualtrics.com/jfe/form/SV_5ABs6WwrDHzAeLr?aud=VAE&prj=ot&edc=6&prjedc=ot6 Répondez-y maintenant.]''' Si vous avez déjà répondu à ce sondage, nous sommes désolé que que vous receviez ce rappel. Nous avons conçu le sondage afin qu'il soit impossible de savoir qui a répondu, aussi nous devons envoyer les rappels à tout le monde. <span class="mw-translate-fuzzy">Si vous souhaitez ne pas recevoir le prochain rappel ou un autre sondage, envpyez un courriel en utilisant la fonction d'envoi à [[:m:Special:EmailUser/WMF Surveys|WMF Surveys]]</span>. Vous pouvez également envoyer toute question que vous auriez à cette adresse d’utilisateur. [[m:Community_Engagement_Insights/About_CE_Insights|Lisez-en plus sur cette enquête sur la page du projet.]] Le sondage est hébergé par un service tiers et régi par cette [[:foundation:Community_Engagement_Insights_2018_Survey_Privacy_Statement|déclaration de confidentialité]] de la Fondation Wikimédia. Merci ! </div> <span class="mw-content-ltr" dir="ltr">[[m:User:WMF Surveys|WMF Surveys]]</span>, 13 avril 2018 à 03:35 (CEST) </div> <!-- Message envoyé par User:WMF Surveys@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2018/ot6&oldid=17881403 --> == Your feedback matters: Final reminder to take the global Wikimedia survey == <div class="mw-parser-output"> <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Bonjour ! Voici un dernier message pour vous rappeler que le questionnaire de l’enquête de la Fondation Wikimédia se fermera le '''23 avril 2018 à 07 h (UTC)'''. Le questionnaire est disponible dans différentes langues et demande entre 20 et 40 minutes pour être complété. '''[https://wikimedia.qualtrics.com/jfe/form/SV_5ABs6WwrDHzAeLr?aud=VAE&prj=ot&edc=6&prjedc=ot6 Répondez-y maintenant.]''' '''Si vous avez déjà participé à ce sondage, merci ! Nous ne vous dérangerons plus.''' Nous avons conçu le sondage afin qu'il soit impossible de savoir qui a répondu, aussi nous devons envoyer les rappels à tout le monde. Pour vous désabonner des sondages futurs, envoyez un courrier électronique via la fonctionnalité EmailUser à [[:m:Special:EmailUser/WMF Surveys|WMF Surveys]]. Vous pouvez également envoyer toute question que vous auriez à cette adresse d’utilisateur. [[m:Community_Engagement_Insights/About_CE_Insights|Lisez-en plus sur cette enquête sur la page du projet.]] Le sondage est hébergé par un service tiers et régi par cette [[:foundation:Community_Engagement_Insights_2018_Survey_Privacy_Statement|déclaration de confidentialité]] de la Fondation Wikimédia. </div> <span class="mw-content-ltr" dir="ltr">[[m:User:WMF Surveys|WMF Surveys]]</span>, 20 avril 2018 à 02:44 (CEST) </div> <!-- Message envoyé par User:WMF Surveys@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2018/ot6&oldid=17952438 --> == Community Insights Survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> '''Faites part de votre expérience dans cette enquête''' Bonjour {{PAGENAME}}, La Wikimedia Foundation sollicite votre point de vue dans une enquête sur votre expérience avec {{SITENAME}} et Wikimedia. L’objectif de cette enquête est de savoir à quel niveau la ''Foundation'' soutient correctement (ou non) votre travail sur le wiki, et de quelle manière nous pouvons changer ou améliorer les choses à l’avenir. Les avis que vous émettrez impacteront directement le travail actuel et futur de la Wikimedia Foundation. Merci de prendre 15 à 25 minutes pour '''[https://wikimedia.qualtrics.com/jfe/form/SV_0pSrrkJAKVRXPpj?Target=CI2019List(other,act5) donner votre point de vue à travers cette enquête]'''. Elle est disponible dans plusieurs langues. Cette enquête est hébergée par un tiers et [https://foundation.wikimedia.org/wiki/Community_Insights_2019_Survey_Privacy_Statement régie par cette déclaration de confidentialité] (en anglais). Vous pouvez lire [[m:Community Insights/Frequent questions|plus d’informations sur ce projet]]. [mailto:surveys@wikimedia.org Envoyez-nous un courriel] si vous avez une quelconque question ou si vous ne voulez pas recevoir d’autres messages concernant cette enquête. Cordialement, </div> [[User:RMaung (WMF)|RMaung (WMF)]] 9 septembre 2019 à 16:34 (CEST) <!-- Message envoyé par User:RMaung (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=CI2019List(other,act5)&oldid=19352874 --> == Reminder: Community Insights Survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> '''Faites part de votre expérience dans cette enquête''' Bonjour {{PAGENAME}}, Il y a quelques semaines, nous vous avons invité à participer à l’enquête sur les Perspectives de la communauté. Il s’agit de l’enquête annuelle de la Wikimedia Foundation auprès de nos communautés internationales. Nous voulons savoir à quel niveau nous soutenons correctement (ou non) votre travail sur le wiki. Nous avons atteint 10% de notre objectif de participation. Si vous n’avez pas encore participé à l’enquête, vous pouvez nous aider à atteindre notre objectif ! '''Votre voix compte à nos yeux'''. Merci de prendre 15 à 25 minutes pour '''[https://wikimedia.qualtrics.com/jfe/form/SV_0pSrrkJAKVRXPpj?Target=CI2019List(other,act5) donner votre point de vue à travers cette enquête]'''. Elle est disponible dans plusieurs langues. Cette enquête est hébergée par un tiers et [https://foundation.wikimedia.org/wiki/Community_Insights_2019_Survey_Privacy_Statement régie par cette déclaration de confidentialité] (en anglais). Vous pouvez lire [[m:Community Insights/Frequent questions|plus d’informations sur ce projet]]. [mailto:surveys@wikimedia.org Envoyez-nous un courriel] si vous avez une quelconque question ou si vous ne voulez pas recevoir d’autres messages concernant cette enquête. Cordialement, </div> [[User:RMaung (WMF)|RMaung (WMF)]] 20 septembre 2019 à 21:14 (CEST) <!-- Message envoyé par User:RMaung (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=CI2019List(other,act5)&oldid=19395141 --> == Reminder: Community Insights Survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> '''Faites part de votre expérience dans cette enquête''' Bonjour {{PAGENAME}}, Il reste quelques semaines seulement pour participer à l’enquête sur les Perspectives de la communauté ! Nous avons atteint 30% de notre objectif de participation. Si vous n’avez pas encore participé à l’enquête, vous pouvez nous aider à atteindre notre objectif ! Avec ce sondage, la Wikimedia Foundation recueille un retour sur le niveau de qualité de notre soutien de votre travail sur le wiki. Seules 15–25 minutes sont nécessaires pour achever de répondre à l’enquête, et cela a un impact direct sur le soutien que nous apportons. Merci de prendre 15 à 25 minutes pour '''[https://wikimedia.qualtrics.com/jfe/form/SV_0pSrrkJAKVRXPpj?Target=CI2019List(other,act5) donner votre point de vue à travers cette enquête]'''. Elle est disponible dans plusieurs langues. Cette enquête est hébergée par un tiers et [https://foundation.wikimedia.org/wiki/Community_Insights_2019_Survey_Privacy_Statement régie par cette déclaration de confidentialité] (en anglais). Vous pouvez lire [[m:Community Insights/Frequent questions|plus d’informations sur ce projet]]. [mailto:surveys@wikimedia.org Envoyez-nous un courriel] si vous avez une quelconque question ou si vous ne voulez pas recevoir d’autres messages concernant cette enquête. Cordialement, </div> [[User:RMaung (WMF)|RMaung (WMF)]] 4 octobre 2019 à 19:04 (CEST) <!-- Message envoyé par User:RMaung (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=CI2019List(other,act5)&oldid=19435548 --> == huit gluons au lieu de neuf == Bonjour Mewtow, merci pour votre wikilivre sur le noyau atomique, que je commence juste à lire. Concernant les gluons, compte tenu de leurs attributs : 1 - une couleur parmi trois, 2 - une anti couleur parmi trois, ça devrait faire 3x3 '''neuf''' gluons. Il n'y en a bien que huit mais uniquement pour une raison théorique difficile à piger pour moi, cf [[w:Gluon#Pourquoi huit gluons au lieu de neuf ?]] Çà me semble important de le souligner dans le wikilivre, car le premier pignouf (comme moi) qui fera le calcul trouvera ... 9 et pensera que l'auteur du wikilivre s'est trompé. cordialement --[[Utilisateur:JihemD|JihemD]] ([[Discussion utilisateur:JihemD|discussion]]) 13 août 2020 à 17:20 (CEST) : Effectivement, il y a bien une erreur. Je corrige de suite. Merci d'avoir fait la remarque.[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 13 août 2020 à 21:48 (CEST) : Et j'en ai profité pour donner l'explication du pourquoi huit gluons et non neuf. A voir si l'explication que je donnes est facile à comprendre ou pas. A mon avis, la superposition des gluons devrait être difficile à comprendre, mais le reste de l'explication devrait passer.[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 13 août 2020 à 22:32 (CEST) == Appel à relecture et création d'hyperliens == Bonjour Mewtow. Je découvre avec plaisir le projet Wikilivres en décidant de publier les trois premiers chapitres de ma thèse de doctorat sous forme de livre. En parcourant le contenu, je suis tombé sur les nombreux ouvrage que tu as déjà produit ici. De là m'est venu une idée. Plutôt que de mettre dans mon texte des wikiliens pointant vers Wikipédia pour aider les lecteurs à trouver un complément d'information, pourquoi pas les rediriger vers des travaux déjà existants sur Wikilivres. Le problème, c'est que je n'ai pas vraiment le temps de parcourir tout ceux-ci. C'est donc la raison pour laquelle je viens poster ce message pour voir si tu ne pourrais pas m'aider dans cette tâche. Toi qui connais bien le contenu de tes livres, tu pourrais effectivement créer toi-même dans livre que je suis en train de terminer les hyperliens qui pourraient pointer vers tes travaux. L'idéal serait même de remplacer tous ceux qui pointent vers Wikipédia pour éviter que le lecteur ne doive surfer sur deux sites différents lors d'une consultation hors ligne notamment. Tu me diras ce que tu en penses. Voici déjà le titre de mon ouvrage : [[Le mouvement Wikimédia]]. N'hésite pas non plus à faire des remarques sur sa page de discussion si jamais lors d'une éventuelle lecture, tu trouverais des informations fausses. Dès que j'en aurai le temps, je passerai aussi du temps sur tes ouvrages qui ont l'air intéressants. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 novembre 2021 à 14:48 (CET) == Prise de décision - fin dimanche 2 juin == Bonsoir Mewtow, Tout d'abord un grand merci pour ta contribution très active à Wikilivres. Je t'informe qu'une "prise de décision" (débat) est en cours concernant le retrait automatique des liens rouges lorsqu'une image est supprimée sur Commons. Lien : [[Wikilivres:Prise de décision/Laisser les liens rouges des images]]. '''La phase de discussion se termine le dimanche 2 juin à 23 h 59.''' D'avance, merci pour ta participation ! Cdlt, [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 25 mai 2024 à 23:56 (CEST) == Ouvrages sources des wikibooks sur l'Electricité et l'Electronique == Bonjour Mewtow, Je suis en train de lire les wikibooks sur l'Electricité et l'Electronique dont tu es l'auteur, et je te remercie beaucoup pour l'excellent travail que tu as fait!! :) Quelles sont les ouvrages sources dont tu t'es servi pour les écrire ? En te remerciant par avance. Cdlt, [[Utilisateur:Alex Mtlr|Alex Mtlr]] ([[Discussion utilisateur:Alex Mtlr|discussion]]) 16 juillet 2025 à 13:57 (CEST) :Bonjour Alex. :Pour être franc, les sources principales sont les cours que j'ai eu pendant ma scolarité, lors de mon Bac STI option génie électronique, et mon BTS systèmes électroniques. Pour ce qui est du cours d'électronique, notamment tout ce qui a trait aux transistors, je me souviens avoir utilisé un bouquin nommé "Circuits microélectroniques", par Adel Sedra et Kenneth C. Smith, que j'ai revendu il y a de cela quelques années. J'ai aussi ai lu pas mal de fichiers .pdf disponibles sur le net, accessibles via quelques recherches Google, mais ca fait un moment que j'ai rédigé ces cours et j'ai un peu oublié lesquels. :C'est tout ce dont je me souviens pour le moment. :Cordialement. :[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 16 juillet 2025 à 16:24 (CEST) == Pages orphelines == Bonjour, Il semble que certaines de vos pages se sont perdues dans les pages orphelines. Pourriez-vous les garder ici dans votre page de discussion pour qu'elles ne soient plus orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 25 février 2026 à 14:07 (CET) :Pas de problème pour les garder sur ma page de discussion. Par contre, certaines des pages en question sont à supprimer, car leur contenu a été déplacé dans des chapitres existants. Faudra que je regarde cela cette semaine et que je me renseigne sur la procédure pour les faire supprimer. :Dans la liste précédente, les deux chapitres suivants sont dans ce cas : :* [[Les opérations bit à bit/Calculs flottants]] :* [[Les suites et séries/Les suites arithmético-géométriques]] :Il y a aussi ceux identifiés dans "Fontionnement d'un ordinateur", qui ont été identifiés ailleurs. Je n'ai aucun chapitre brouillon pour ce cours. [[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 25 février 2026 à 20:04 (CET) ::Bonjour, ::* Voir le Bistro, il semble que cela soit difficile de supprimer une page ::* Il y a une vingtaine de livres dans ta situation. Je les ai regroupés dans ce livre. Voir les derniers chapitres, la présentation des premiers chapitres laisse à désirer ::*. ::* [[feuilles dupliquées orphelines|feuilles dupliquées orphelines]] ::*. ::Par exemple pour ton cas : ::*. ::*. ::La page orpheline : ::* [[Les opérations bit à bit/Calculs flottants|Les opérations bit à bit/Calculs flottants]] ::a été copiée ici: ::* [[Les opérations bit à bit/Les opérations arithmétiques sur des flottants|Les opérations bit à bit/Les opérations arithmétiques sur des flottants]] ::*. ::La page orpheline : ::* [[Les suites et séries/Les suites arithmético-géométriques|Les suites et séries/Les suites arithmético-géométriques]] ::a été copiée ici: ::* [[Les suites et séries/Les suites numériques|Les suites et séries/Les suites numériques]] ::*. ::Tu peux naturellement simplement laisser tes pages sur ta page en attendant qu'elles puissent être supprimées ::Où je peux les introduire pour toi dans le livre [[feuilles dupliquées orphelines|feuilles dupliquées orphelines]] en attendant qu'une bonne âme se sacrifie pour supprimer les doublons. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 26 février 2026 à 00:02 (CET) :::Pas de problèmes de mon côté pour que tu ajoutes ces pages dans le livre ' feuilles dupliquées orphelines" à ma place, merci beaucoup. Je crois que ce serait la meilleure solution, vu que les chapitres dupliqués orphelins de "Fonctionnement d'un ordinateur" sont déjà dessus [[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 26 février 2026 à 01:34 (CET) ::::Merci pour ton aide. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 26 février 2026 à 11:15 (CET) * [[Le noyau atomique/Les diffusions nucléaires]] * [[Électricité/L'étude des signaux quelconques]] * [[Le noyau atomique/Les diffusions nucléaires]] * [[Les opérations bit à bit/Calculs flottants]] * [[Les suites et séries/Les suites arithmético-géométriques]] * [[Mémoire/Habiletés]] * [[Mémoire/Mémoire perceptive]] * [[Mémoire/Mémoire à court terme]] * [[Mémoire/Mémoires sensorielles]] * [[Mémoire/Oubli]] == Demandes de prises de décision == Bonjour, Pour info. J'ai posé deux demandes de prises de décisions concernant le sujet suivant. * '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' * '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Modifier_le_contenue_de_l%27espace_Nouveaut%C3%A9s Wikilivres:Prise de décision/Modifier le contenue de l'espace Nouveautés]''' Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 11 septembre 2026 à 16:53 (CEST) :Bonjour, étant donné que ton livre Fonctionnement d'un ordinateur n'est pas dans la liste des livres terminés même s'il est terminé, je l'ai mis dans la liste des nouveaux livres pour rendre cette liste plus intéressante, je pense que ton livre apparaîtra dans la liste de la vitrine dans quelques jours automatiquement. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 13 septembre 2026 à 10:11 (CEST) ::Il y a aussi les livres terminés Le noyau atomique, Mémoire qui ne sont pas dans la liste des livres terminés tu pourrais les mettre dans la liste des nouveaux livres pour la completer. Ou les mettre dans la liste des livres terminés. ::Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 13 septembre 2026 à 10:18 (CEST) :::Bonjour. C'est fait et j'en ai profité pour m'occuper des autres livres que j'ai écris qui n'étaient pas classés, comme celui sur les neurosciences, celui sur la politique monétaire, celui sur les réseaux, celui sur les moteurs de rendu 2.5D, et quelques autres. Il y a juste celui sur les "Optimisation des compilateurs", qui est vraiment une ébauche mal foutue que je n'ai mis dans aucune liste. [[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 14 septembre 2026 à 16:30 (CEST) 88xfr6wnyffjpzjvil3xru267dqs2hj 772212 772204 2026-09-14T18:26:00Z Xhungab 23827 /* Demandes de prises de décision */ Réponse 772212 wikitext text/x-wiki {| width="100%" align="center" style="display:block; float:center; background:#FFF; text-size:100%; margin:.5 .5 .5 .5em; padding:2px; border:1px solid #aaa; background-color:transparent;" |---- | colspan="2" align="center" width="95%" style="height:9px; margin:.2em; padding:5px; border:1px solid #aaa; background-color:#bfbfff; font-size:130%; text-align:center; float:center" | '''Bienvenue sur Wikilivres, {{BASEPAGENAME}}&nbsp;!''' |---- | colspan="2" align="center" width="85%" style="font-size:110%" | <br/>Wikilivres est un projet francophone de rédactions de manuels pédagogiques libres. |---- | valign="middle" align="center" | [[Image:Crystal Clear app Login Manager.png|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Si vous désirez vous investir dans ce projet passionnant, vous êtes le bienvenu. Tous les contributeurs de Wikilivres vous invitent à corriger et développer les livres existants et à créer le votre !<br /> Prenez avant toute chose connaissance des '''[[Wikilivres:Présentation|principes fondateurs de Wikilivres]]''' à la base du projet. N'ayez aucune crainte d'abîmer la bibliothèque : toutes les modifications sont suivies par des contributeurs plus expérimentés qui pourront corriger vos éventuelles erreurs. Ne vous offensez pas de ces interventions ni des messages destinés à vous aider à comprendre le projet et ses règles. Suivez leurs conseils et n'hésitez pas à demander simplement plus d'explications ! |---- | valign="middle" align="center" | [[Image:ACE.png|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Lorsque vous contribuez, '''gardez à l'esprit que Wikilivres est une ''bibliothèque universelle''''', il faut donc veiller à '''respecter un point de vue vérifiable'''. De plus, le contenu doit rester conforme à notre licence d'utilisation libre (GFDL).<br> Les utilisateurs travaillent en harmonie et privilégient la discussion aussi courtoise que possible pour régler les oppositions, aussi, prenez le temps de vous y habituer. Pensez à vous présenter également sur votre [[Utilisateur:{{PAGENAME}}|page d'utilisateur]], ce qui permettra à chacun de connaître vos centres d'intérêt et de mieux vous guider vers les divers projets thématiques. Pour cela, vous pouvez employer les [[Wikilivres:Boîtes utilisateur|boîtes utilisateur]].<br /> Bien qu'il s'agisse d'un travail de rédaction complexe résultant de l'action de milliers de contributeurs francophones du monde entier, sa philosophie peut être résumée en quelques mots : '''« N'hésitez pas à l'améliorer ! »''' |---- | valign="middle" align="center" | [[Image:Plume pen w.png|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Au cours d'une discussion, n'oubliez pas de signer vos messages, à l'aide de quatre tildes (<nowiki>~~~~</nowiki>) ou du bouton [[Image:Bouton Signature.png|25px|lien=]] présent en haut de la fenêtre de modification. En revanche ne signez pas les livres lorsque vous en créez ou que vous les modifiez car l'historique permet de retrouver toutes vos contributions.<br> |---- | valign="middle" align="center" | [[Image:Wikibooks logo.svg|55px|lien=]] | align="left" width="90%" style="font-size:100%; margin:.7em; padding:4px;" | Vous pouvez trouver des explications détaillées à partir des pages : * '''''[[Aide:Accueil|Tout l'indispensable]]''''', à lire absolument, * '''[[Aide:Syntaxe|Syntaxe]]''', les conventions d'écriture à connaître. * '''[[Aide:Poser une question|Poser une question]]''', si vous vous sentez perdu. * '''[[Aide:Comment modifier une page|Comment modifier une page]]''' Vous pourrez ajouter par la suite d'autres pages d'aide ou les informations dont vous pensez avoir besoin dans votre [[Utilisateur:{{PAGENAME}}|espace utilisateur]]. Si vous souhaitez contribuer mais que vous n'avez pas d'idées, allez faire un tour sur [[Wikilivres:Demande de livre|les demandes de livres et de traductions !]]. Bonne contribution, et n'hésitez pas à me contacter si besoin !<br> <small>PS: If you arn't French, you can consult the [[Wikilivres:Ambassade|embassy]] for help.</small> |} --&nbsp;◄&nbsp;[[Utilisateur:DavidL|'''D'''avid&nbsp;'''L''']]&nbsp;•&nbsp;[[Discussion Utilisateur:DavidL|discuter]]&nbsp;► 9 mars 2013 à 20:42 (CET) == Page et sous-pages == Bonjour, Remarque concernant l'organisation d'un livre : il faut que les chapitres ait un titre de la forme <code>titre du livre/titre du chapitre</code> (avec un slash / servant de séparateur). Par exemple la page <code>Motivation</code> ne veut rien dire hors de son contexte : un autre livre peut également avoir un chapitre nommé '''Motivation'''. Il vaut mieux la nommer <code>Pédagogie : psychologie cognitive appliquée à l'enseignement/motivation</code>. [[Wikilivres:Conventions sur les titres]] --&nbsp;◄&nbsp;[[Utilisateur:DavidL|'''D'''avid&nbsp;'''L''']]&nbsp;•&nbsp;[[Discussion Utilisateur:DavidL|discuter]]&nbsp;► 9 novembre 2013 à 15:13 (CET) == Share your experience and feedback as a Wikimedian in this global survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Bonjour ! La Fondation Wikimédia vous demande votre avis dans une enquête. Nous souhaitons savoir si nous répondons bien à vos attentes dans votre travail sur les wikis et à l’extérieur, et ce que nous pouvons faire pour améliorer les choses à l’avenir.<ref group=survey>Le principal objectif de l’enquête est d’obtenir des retours sur le travail actuel de la Fondation Wikimédia, sans stratégie à long terme.</ref> Les opinions que vous partagez affecteront directement le travail actuel et futur de la Fondation Wikimédia. Vous avez été choisi au hasard pour répondre à l’enquête, car nous souhaitons obtenir des informations de la part de votre communauté Wikimédia. Afin de vous remercier pour le temps accordé, nous livrons 20 t-shirts Wikimédia à des personnes choisies au hasard parmi celles ayant répondu à l’enquête.<ref group=survey>Questions légales : pas d’achat nécessaire. Vous devez avoir l’âge de la majorité pour participer. Soutenu par la Fondation Wikimédia (Wikimedia Foundation) située au 149 New Montgomery, San Francisco, CA, USA, 94105. Se termine le 31 janvier 2017. Le don est annulé en cas d’infraction. [[m:Community Engagement Insights/2016 contest rules|Cliquez ici pour lire les règles du concours]].</ref> Le questionnaire est disponible dans différents langages et requiert entre 20 et 40 minutes pour être complété. <strong>'''[https://wikimedia.qualtrics.com/SE/?SID=SV_6mTVlPf6O06r3mt&Aud=VAE&Src=57VAEOP Répondez-y maintenant !]'''</strong> Vous pouvez lire davantage d’informations sur [[m:Community_Engagement_Insights/About_CE_Insights|ce projet]]. Cette enquête est hébergée par un service tiers et régie par sa [[:foundation:Community_Engagement_Insights_2016_Survey_Privacy_Statement|déclaration de confidentialité]]. Visitez notre [[m:Community_Engagement_Insights/Frequently_asked_questions|page des questions fréquentes]] pour trouver plus d’informations sur cette enquête. Si vous avez besoin d’aide supplémentaire, ou désirez vous désabonner des communications futures au sujet de cette enquête, envoyez un courrier électronique à surveys@wikimedia.org. Merci ! --[[:m:User:EGalvez (WMF)|EGalvez (WMF)]] ([[:m:User talk:EGalvez (WMF)|talk]]) 13 janvier 2017 à 23:25 (CET) </div> <!-- Message envoyé par User:EGalvez (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2016/57-VAEOP&oldid=16205400 --> <references group=survey /> == Mewtow, vous aussi venez discuter de l'avenir du mouvement == Bonjour, Je viens vous inviter à rejoindre les discussions en cours sur le futur du mouvement Wikimédia. Depuis quelques jours déjà, des contributeurs, à travers divers projets et langues sur wikis, discutent de nos priorités, en tant que mouvement, pour les 15 années à venir : Quelle est la chose la plus importante à faire ? Comment maintenir ou accélérer notre progrès? Qu'est-ce qui pourrait consolider notre unité en tant que mouvement? Voici autant de questions auxquelles tous essaient d’apporter des réponses. Vous aussi, votre point de vue compte énormement. On prend l'avis de tout le monde y compris les correcteurs d'orthographe {{sourire}}. N’hésitez surtout pas à consulter la page des discussions sur [[Wikilivres:Mouvement Wikimedia/Stratégie 2017]] pour y laisser vos propositions ou pour débattre des propositions des autres. Voici quelques liens utiles sur le contexte et le processus de cette consultation : * [[M:Strategy/Wikimedia movement/2017/Process/Briefing/fr|Contexte général]], pour comprendre les objectifs et jeter un coup d'oeil aux études et statistiques connexes * [[M:Strategy/Wikimedia movement/2017/Process/fr|Calendrier et processus]], pour plus de détails sur les dates et consulter le graphique illustrant toutes les étapes * [[M:Strategy/Wikimedia_movement/2017/Frequently_asked_questions/fr|Foire Aux Questions (FAQ)]], pour les questions qui reviennent fréquemment N'hésitez pas à me contacter au besoin. Amicalement, [[Utilisateur:Samuel (WMF)|Samuel (WMF)]] ([[Discussion utilisateur:Samuel (WMF)|discussion]]) 29 mars 2017 à 17:32 (CEST) == Discussion des principes de Fonctionnement de Wikibooks == Bonjour, j'ai modifié des pages d'aide : [[Wikilivres/Introduction]], [[Wikilivres/Démarrer un wikilivre]] et créé [[Wikilivres/Pourquoi écrire sur Wikibooks ?]]. Mes modifications concernent les principes de fonctionnement de Wikibooks, sur le travail coopératif, le respect des auteurs et le droit de signer ses livres. Tous les contributeurs sont concernés. Une discussion est initiée sur [[Discussion:Wikilivres/Démarrer un wikilivre]]. J'aimerais bien avoir votre avis. [[Utilisateur:Thierry Dugnolle|Thierry Dugnolle]] ([[Discussion utilisateur:Thierry Dugnolle|discussion]]) 27 avril 2017 à 16:43 (CEST) == Notes == == Relecture == Bonjour, Afin d'éviter toute « collision » lors d'éditions simultanées, ce serait bien que tu m'indiques directement que tel ou tel chapitre est en état d'être relu ! Amitiés, [[Utilisateur:Jean-Jacques MILAN|Jean-Jacques MILAN]] ([[Discussion utilisateur:Jean-Jacques MILAN|discussion]]) 26 juin 2017 à 10:09 (CEST). :Bonjour, :Pour le moment, à l'exception des trois chapitres sur les satellites et les corps transneptuniens, tous les chapitres sont terminés et en état d'être relus/corrigés. :Cordialement. == [[Architecture des ordinateurs]] == Bonjour Mewtow, Un utilisateur [[Discussion:Architecture des ordinateurs#Fusion|suggère de fusionner]] l'ébauche de livre [[Architecture des ordinateurs]] dans [[Fonctionnement d'un ordinateur]]. Si des éléments te semblent viables, n'hésite pas à t'en servir. Sinon, je déplacerai [[Architecture des ordinateurs]] vers des brouillons afin de ne pas encombrer la wikilibrairie. Bienvenue sur Wikibooks, puisque nous ne sommes pas croisés. Bonne continuation ! Bien cordialement, 10 juillet 2017 à 16:03 (CEST) :Bonjour Savant-fou. :Après lecture du cours en question, je ne pense pas que je pourrais réutiliser quoique ce soit du cours "Architecture des ordinateurs" (que je connaissais depuis longtemps, mais n'avais pas souhaité modifier). La quasi-totalité de ce qui est présent dans ce cours l'est aussi dans le mien, avec cependant quelques exemples ou exercices en plus que je ne penses pas pertinent d'insérer dans mon ouvrage. Je ne m'opposerais pas du tout à ce que vous le déplaciez vers des brouillons, comme vous l'avez mentionné. :Cordialement. :[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 10 juillet 2017 à 19:09 (CEST) ::Merci pour ta réponse. J'ai déplacé Architecture des ordinateurs vers [[Utilisateur:Merrheim/Architecture_des_ordinateurs]]. La page [[Architecture des ordinateurs]] redirige maintenant vers [[Fonctionnement d'un ordinateur]]. Bonne journée ! [[Fichier:P_physics.svg|25px|link=User:Savant-fou]]&nbsp;[[Utilisateur:Savant-fou|Savant-fou]] <small><sup>[[Discussion Utilisateur:Savant-fou|parler]]</sup></small> 11 juillet 2017 à 09:54 (CEST) == Share your experience and feedback as a Wikimedian in this global survey == <div class="mw-parser-output"> <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Bonjour ! La Fondation Wikimédia vous demande votre avis dans une enquête. Nous souhaitons savoir si nous répondons bien à vos attentes dans votre travail sur les wikis et à l’extérieur, et ce que nous pouvons faire pour améliorer les choses à l’avenir. Les opinions que vous partagez affecteront directement le travail actuel et futur de la Fondation Wikimédia. Vous avez été choisi·e au hasard pour répondre à l’enquête, car nous souhaitons obtenir des informations de la part de votre communauté Wikimédia. Le questionnaire est disponible dans différentes langues et requiert entre 20 et 40 minutes pour être complété. <big>'''[https://wikimedia.qualtrics.com/jfe/form/SV_5ABs6WwrDHzAeLr?aud=VAE&prj=ot&edc=6&prjedc=ot6 Répondez-y maintenant !]'''</big> Vous pouvez trouver davantage d’informations concernant cette enquête [[m:Special:MyLanguage/Community_Engagement_Insights/About_CE_Insights|sur la page du projet]] et voir comment vos retours aident la Fondation Wikimédia à prendre en charge des contributeurs comme vous. Cette enquête est hébergée par un service tiers et régie par cette [[:foundation:Community_Engagement_Insights_2018_Survey_Privacy_Statement|déclaration de confidentialité]] (en anglais). Visitez notre [[m:Special:MyLanguage/Community_Engagement_Insights/Frequently_asked_questions|page des questions fréquentes]] pour trouver plus d’informations sur cette enquête. Si vous avez besoin d’aide supplémentaire, ou désirez vous désabonner des communications futures au sujet de cette enquête, envoyez un courrier électronique via la fonctionnalité EmailUser à [[:m:Special:EmailUser/WMF Surveys|WMF Surveys]] pour être supprimé·e de la liste. Merci ! </div> <span class="mw-content-ltr" dir="ltr">[[m:User:WMF Surveys|WMF Surveys]]</span>, 29 mars 2018 à 20:36 (CEST) </div> <!-- Message envoyé par User:WMF Surveys@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2018/ot6&oldid=17881403 --> == Reminder: Share your feedback in this Wikimedia survey == <div class="mw-parser-output"> <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Chaque réponse à cette enquête peut aider la Fondation Wikimédia à améliorer votre expérience sur les projets Wikimédia. Jusqu’à présent, nous n’avons entendu que 29% des contributeurs Wikimédia. Le sondage est disponible dans plusieurs langues et prend entre 20 et 40 minutes pour être complété. '''[https://wikimedia.qualtrics.com/jfe/form/SV_5ABs6WwrDHzAeLr?aud=VAE&prj=ot&edc=6&prjedc=ot6 Répondez-y maintenant.]''' Si vous avez déjà répondu à ce sondage, nous sommes désolé que que vous receviez ce rappel. Nous avons conçu le sondage afin qu'il soit impossible de savoir qui a répondu, aussi nous devons envoyer les rappels à tout le monde. <span class="mw-translate-fuzzy">Si vous souhaitez ne pas recevoir le prochain rappel ou un autre sondage, envpyez un courriel en utilisant la fonction d'envoi à [[:m:Special:EmailUser/WMF Surveys|WMF Surveys]]</span>. Vous pouvez également envoyer toute question que vous auriez à cette adresse d’utilisateur. [[m:Community_Engagement_Insights/About_CE_Insights|Lisez-en plus sur cette enquête sur la page du projet.]] Le sondage est hébergé par un service tiers et régi par cette [[:foundation:Community_Engagement_Insights_2018_Survey_Privacy_Statement|déclaration de confidentialité]] de la Fondation Wikimédia. Merci ! </div> <span class="mw-content-ltr" dir="ltr">[[m:User:WMF Surveys|WMF Surveys]]</span>, 13 avril 2018 à 03:35 (CEST) </div> <!-- Message envoyé par User:WMF Surveys@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2018/ot6&oldid=17881403 --> == Your feedback matters: Final reminder to take the global Wikimedia survey == <div class="mw-parser-output"> <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> Bonjour ! Voici un dernier message pour vous rappeler que le questionnaire de l’enquête de la Fondation Wikimédia se fermera le '''23 avril 2018 à 07 h (UTC)'''. Le questionnaire est disponible dans différentes langues et demande entre 20 et 40 minutes pour être complété. '''[https://wikimedia.qualtrics.com/jfe/form/SV_5ABs6WwrDHzAeLr?aud=VAE&prj=ot&edc=6&prjedc=ot6 Répondez-y maintenant.]''' '''Si vous avez déjà participé à ce sondage, merci ! Nous ne vous dérangerons plus.''' Nous avons conçu le sondage afin qu'il soit impossible de savoir qui a répondu, aussi nous devons envoyer les rappels à tout le monde. Pour vous désabonner des sondages futurs, envoyez un courrier électronique via la fonctionnalité EmailUser à [[:m:Special:EmailUser/WMF Surveys|WMF Surveys]]. Vous pouvez également envoyer toute question que vous auriez à cette adresse d’utilisateur. [[m:Community_Engagement_Insights/About_CE_Insights|Lisez-en plus sur cette enquête sur la page du projet.]] Le sondage est hébergé par un service tiers et régi par cette [[:foundation:Community_Engagement_Insights_2018_Survey_Privacy_Statement|déclaration de confidentialité]] de la Fondation Wikimédia. </div> <span class="mw-content-ltr" dir="ltr">[[m:User:WMF Surveys|WMF Surveys]]</span>, 20 avril 2018 à 02:44 (CEST) </div> <!-- Message envoyé par User:WMF Surveys@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=Community_Engagement_Insights/MassMessages/Lists/2018/ot6&oldid=17952438 --> == Community Insights Survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> '''Faites part de votre expérience dans cette enquête''' Bonjour {{PAGENAME}}, La Wikimedia Foundation sollicite votre point de vue dans une enquête sur votre expérience avec {{SITENAME}} et Wikimedia. L’objectif de cette enquête est de savoir à quel niveau la ''Foundation'' soutient correctement (ou non) votre travail sur le wiki, et de quelle manière nous pouvons changer ou améliorer les choses à l’avenir. Les avis que vous émettrez impacteront directement le travail actuel et futur de la Wikimedia Foundation. Merci de prendre 15 à 25 minutes pour '''[https://wikimedia.qualtrics.com/jfe/form/SV_0pSrrkJAKVRXPpj?Target=CI2019List(other,act5) donner votre point de vue à travers cette enquête]'''. Elle est disponible dans plusieurs langues. Cette enquête est hébergée par un tiers et [https://foundation.wikimedia.org/wiki/Community_Insights_2019_Survey_Privacy_Statement régie par cette déclaration de confidentialité] (en anglais). Vous pouvez lire [[m:Community Insights/Frequent questions|plus d’informations sur ce projet]]. [mailto:surveys@wikimedia.org Envoyez-nous un courriel] si vous avez une quelconque question ou si vous ne voulez pas recevoir d’autres messages concernant cette enquête. Cordialement, </div> [[User:RMaung (WMF)|RMaung (WMF)]] 9 septembre 2019 à 16:34 (CEST) <!-- Message envoyé par User:RMaung (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=CI2019List(other,act5)&oldid=19352874 --> == Reminder: Community Insights Survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> '''Faites part de votre expérience dans cette enquête''' Bonjour {{PAGENAME}}, Il y a quelques semaines, nous vous avons invité à participer à l’enquête sur les Perspectives de la communauté. Il s’agit de l’enquête annuelle de la Wikimedia Foundation auprès de nos communautés internationales. Nous voulons savoir à quel niveau nous soutenons correctement (ou non) votre travail sur le wiki. Nous avons atteint 10% de notre objectif de participation. Si vous n’avez pas encore participé à l’enquête, vous pouvez nous aider à atteindre notre objectif ! '''Votre voix compte à nos yeux'''. Merci de prendre 15 à 25 minutes pour '''[https://wikimedia.qualtrics.com/jfe/form/SV_0pSrrkJAKVRXPpj?Target=CI2019List(other,act5) donner votre point de vue à travers cette enquête]'''. Elle est disponible dans plusieurs langues. Cette enquête est hébergée par un tiers et [https://foundation.wikimedia.org/wiki/Community_Insights_2019_Survey_Privacy_Statement régie par cette déclaration de confidentialité] (en anglais). Vous pouvez lire [[m:Community Insights/Frequent questions|plus d’informations sur ce projet]]. [mailto:surveys@wikimedia.org Envoyez-nous un courriel] si vous avez une quelconque question ou si vous ne voulez pas recevoir d’autres messages concernant cette enquête. Cordialement, </div> [[User:RMaung (WMF)|RMaung (WMF)]] 20 septembre 2019 à 21:14 (CEST) <!-- Message envoyé par User:RMaung (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=CI2019List(other,act5)&oldid=19395141 --> == Reminder: Community Insights Survey == <div class="plainlinks mw-content-ltr" lang="fr" dir="ltr"> '''Faites part de votre expérience dans cette enquête''' Bonjour {{PAGENAME}}, Il reste quelques semaines seulement pour participer à l’enquête sur les Perspectives de la communauté ! Nous avons atteint 30% de notre objectif de participation. Si vous n’avez pas encore participé à l’enquête, vous pouvez nous aider à atteindre notre objectif ! Avec ce sondage, la Wikimedia Foundation recueille un retour sur le niveau de qualité de notre soutien de votre travail sur le wiki. Seules 15–25 minutes sont nécessaires pour achever de répondre à l’enquête, et cela a un impact direct sur le soutien que nous apportons. Merci de prendre 15 à 25 minutes pour '''[https://wikimedia.qualtrics.com/jfe/form/SV_0pSrrkJAKVRXPpj?Target=CI2019List(other,act5) donner votre point de vue à travers cette enquête]'''. Elle est disponible dans plusieurs langues. Cette enquête est hébergée par un tiers et [https://foundation.wikimedia.org/wiki/Community_Insights_2019_Survey_Privacy_Statement régie par cette déclaration de confidentialité] (en anglais). Vous pouvez lire [[m:Community Insights/Frequent questions|plus d’informations sur ce projet]]. [mailto:surveys@wikimedia.org Envoyez-nous un courriel] si vous avez une quelconque question ou si vous ne voulez pas recevoir d’autres messages concernant cette enquête. Cordialement, </div> [[User:RMaung (WMF)|RMaung (WMF)]] 4 octobre 2019 à 19:04 (CEST) <!-- Message envoyé par User:RMaung (WMF)@metawiki en utilisant la liste à https://meta.wikimedia.org/w/index.php?title=CI2019List(other,act5)&oldid=19435548 --> == huit gluons au lieu de neuf == Bonjour Mewtow, merci pour votre wikilivre sur le noyau atomique, que je commence juste à lire. Concernant les gluons, compte tenu de leurs attributs : 1 - une couleur parmi trois, 2 - une anti couleur parmi trois, ça devrait faire 3x3 '''neuf''' gluons. Il n'y en a bien que huit mais uniquement pour une raison théorique difficile à piger pour moi, cf [[w:Gluon#Pourquoi huit gluons au lieu de neuf ?]] Çà me semble important de le souligner dans le wikilivre, car le premier pignouf (comme moi) qui fera le calcul trouvera ... 9 et pensera que l'auteur du wikilivre s'est trompé. cordialement --[[Utilisateur:JihemD|JihemD]] ([[Discussion utilisateur:JihemD|discussion]]) 13 août 2020 à 17:20 (CEST) : Effectivement, il y a bien une erreur. Je corrige de suite. Merci d'avoir fait la remarque.[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 13 août 2020 à 21:48 (CEST) : Et j'en ai profité pour donner l'explication du pourquoi huit gluons et non neuf. A voir si l'explication que je donnes est facile à comprendre ou pas. A mon avis, la superposition des gluons devrait être difficile à comprendre, mais le reste de l'explication devrait passer.[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 13 août 2020 à 22:32 (CEST) == Appel à relecture et création d'hyperliens == Bonjour Mewtow. Je découvre avec plaisir le projet Wikilivres en décidant de publier les trois premiers chapitres de ma thèse de doctorat sous forme de livre. En parcourant le contenu, je suis tombé sur les nombreux ouvrage que tu as déjà produit ici. De là m'est venu une idée. Plutôt que de mettre dans mon texte des wikiliens pointant vers Wikipédia pour aider les lecteurs à trouver un complément d'information, pourquoi pas les rediriger vers des travaux déjà existants sur Wikilivres. Le problème, c'est que je n'ai pas vraiment le temps de parcourir tout ceux-ci. C'est donc la raison pour laquelle je viens poster ce message pour voir si tu ne pourrais pas m'aider dans cette tâche. Toi qui connais bien le contenu de tes livres, tu pourrais effectivement créer toi-même dans livre que je suis en train de terminer les hyperliens qui pourraient pointer vers tes travaux. L'idéal serait même de remplacer tous ceux qui pointent vers Wikipédia pour éviter que le lecteur ne doive surfer sur deux sites différents lors d'une consultation hors ligne notamment. Tu me diras ce que tu en penses. Voici déjà le titre de mon ouvrage : [[Le mouvement Wikimédia]]. N'hésite pas non plus à faire des remarques sur sa page de discussion si jamais lors d'une éventuelle lecture, tu trouverais des informations fausses. Dès que j'en aurai le temps, je passerai aussi du temps sur tes ouvrages qui ont l'air intéressants. Bien à toi, [[User:Lionel Scheepmans|Lionel Scheepmans]] <sup><big>✉</big> [[User talk:Lionel Scheepmans|Contact]]</sup> <sub>Désolé pour ma [[w:dysorthographie|dysorthographie]], [[w:dyslexie|dyslexie]] et [[wikt:distraction|"dys"traction]].</sub> 29 novembre 2021 à 14:48 (CET) == Prise de décision - fin dimanche 2 juin == Bonsoir Mewtow, Tout d'abord un grand merci pour ta contribution très active à Wikilivres. Je t'informe qu'une "prise de décision" (débat) est en cours concernant le retrait automatique des liens rouges lorsqu'une image est supprimée sur Commons. Lien : [[Wikilivres:Prise de décision/Laisser les liens rouges des images]]. '''La phase de discussion se termine le dimanche 2 juin à 23 h 59.''' D'avance, merci pour ta participation ! Cdlt, [[Utilisateur:Fourmidable|Fourmidable]] ([[Discussion utilisateur:Fourmidable|discussion]]) 25 mai 2024 à 23:56 (CEST) == Ouvrages sources des wikibooks sur l'Electricité et l'Electronique == Bonjour Mewtow, Je suis en train de lire les wikibooks sur l'Electricité et l'Electronique dont tu es l'auteur, et je te remercie beaucoup pour l'excellent travail que tu as fait!! :) Quelles sont les ouvrages sources dont tu t'es servi pour les écrire ? En te remerciant par avance. Cdlt, [[Utilisateur:Alex Mtlr|Alex Mtlr]] ([[Discussion utilisateur:Alex Mtlr|discussion]]) 16 juillet 2025 à 13:57 (CEST) :Bonjour Alex. :Pour être franc, les sources principales sont les cours que j'ai eu pendant ma scolarité, lors de mon Bac STI option génie électronique, et mon BTS systèmes électroniques. Pour ce qui est du cours d'électronique, notamment tout ce qui a trait aux transistors, je me souviens avoir utilisé un bouquin nommé "Circuits microélectroniques", par Adel Sedra et Kenneth C. Smith, que j'ai revendu il y a de cela quelques années. J'ai aussi ai lu pas mal de fichiers .pdf disponibles sur le net, accessibles via quelques recherches Google, mais ca fait un moment que j'ai rédigé ces cours et j'ai un peu oublié lesquels. :C'est tout ce dont je me souviens pour le moment. :Cordialement. :[[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 16 juillet 2025 à 16:24 (CEST) == Pages orphelines == Bonjour, Il semble que certaines de vos pages se sont perdues dans les pages orphelines. Pourriez-vous les garder ici dans votre page de discussion pour qu'elles ne soient plus orphelines. Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 25 février 2026 à 14:07 (CET) :Pas de problème pour les garder sur ma page de discussion. Par contre, certaines des pages en question sont à supprimer, car leur contenu a été déplacé dans des chapitres existants. Faudra que je regarde cela cette semaine et que je me renseigne sur la procédure pour les faire supprimer. :Dans la liste précédente, les deux chapitres suivants sont dans ce cas : :* [[Les opérations bit à bit/Calculs flottants]] :* [[Les suites et séries/Les suites arithmético-géométriques]] :Il y a aussi ceux identifiés dans "Fontionnement d'un ordinateur", qui ont été identifiés ailleurs. Je n'ai aucun chapitre brouillon pour ce cours. [[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 25 février 2026 à 20:04 (CET) ::Bonjour, ::* Voir le Bistro, il semble que cela soit difficile de supprimer une page ::* Il y a une vingtaine de livres dans ta situation. Je les ai regroupés dans ce livre. Voir les derniers chapitres, la présentation des premiers chapitres laisse à désirer ::*. ::* [[feuilles dupliquées orphelines|feuilles dupliquées orphelines]] ::*. ::Par exemple pour ton cas : ::*. ::*. ::La page orpheline : ::* [[Les opérations bit à bit/Calculs flottants|Les opérations bit à bit/Calculs flottants]] ::a été copiée ici: ::* [[Les opérations bit à bit/Les opérations arithmétiques sur des flottants|Les opérations bit à bit/Les opérations arithmétiques sur des flottants]] ::*. ::La page orpheline : ::* [[Les suites et séries/Les suites arithmético-géométriques|Les suites et séries/Les suites arithmético-géométriques]] ::a été copiée ici: ::* [[Les suites et séries/Les suites numériques|Les suites et séries/Les suites numériques]] ::*. ::Tu peux naturellement simplement laisser tes pages sur ta page en attendant qu'elles puissent être supprimées ::Où je peux les introduire pour toi dans le livre [[feuilles dupliquées orphelines|feuilles dupliquées orphelines]] en attendant qu'une bonne âme se sacrifie pour supprimer les doublons. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 26 février 2026 à 00:02 (CET) :::Pas de problèmes de mon côté pour que tu ajoutes ces pages dans le livre ' feuilles dupliquées orphelines" à ma place, merci beaucoup. Je crois que ce serait la meilleure solution, vu que les chapitres dupliqués orphelins de "Fonctionnement d'un ordinateur" sont déjà dessus [[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 26 février 2026 à 01:34 (CET) ::::Merci pour ton aide. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 26 février 2026 à 11:15 (CET) * [[Le noyau atomique/Les diffusions nucléaires]] * [[Électricité/L'étude des signaux quelconques]] * [[Le noyau atomique/Les diffusions nucléaires]] * [[Les opérations bit à bit/Calculs flottants]] * [[Les suites et séries/Les suites arithmético-géométriques]] * [[Mémoire/Habiletés]] * [[Mémoire/Mémoire perceptive]] * [[Mémoire/Mémoire à court terme]] * [[Mémoire/Mémoires sensorielles]] * [[Mémoire/Oubli]] == Demandes de prises de décision == Bonjour, Pour info. J'ai posé deux demandes de prises de décisions concernant le sujet suivant. * '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Cr%C3%A9er_un_espace_lecteurs_et_un_espace_auteurs_sur_la_page_d%27accueil Créer un espace lecteurs et un espace Les coulisses de Wikibook]''' * '''[https://fr.wikibooks.org/wiki/Wikilivres:Prise_de_d%C3%A9cision/Modifier_le_contenue_de_l%27espace_Nouveaut%C3%A9s Wikilivres:Prise de décision/Modifier le contenue de l'espace Nouveautés]''' Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 11 septembre 2026 à 16:53 (CEST) :Bonjour, étant donné que ton livre Fonctionnement d'un ordinateur n'est pas dans la liste des livres terminés même s'il est terminé, je l'ai mis dans la liste des nouveaux livres pour rendre cette liste plus intéressante, je pense que ton livre apparaîtra dans la liste de la vitrine dans quelques jours automatiquement. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 13 septembre 2026 à 10:11 (CEST) ::Il y a aussi les livres terminés Le noyau atomique, Mémoire qui ne sont pas dans la liste des livres terminés tu pourrais les mettre dans la liste des nouveaux livres pour la completer. Ou les mettre dans la liste des livres terminés. ::Merci [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 13 septembre 2026 à 10:18 (CEST) :::Bonjour. C'est fait et j'en ai profité pour m'occuper des autres livres que j'ai écris qui n'étaient pas classés, comme celui sur les neurosciences, celui sur la politique monétaire, celui sur les réseaux, celui sur les moteurs de rendu 2.5D, et quelques autres. Il y a juste celui sur les "Optimisation des compilateurs", qui est vraiment une ébauche mal foutue que je n'ai mis dans aucune liste. [[Utilisateur:Mewtow|Mewtow]] ([[Discussion utilisateur:Mewtow|discussion]]) 14 septembre 2026 à 16:30 (CEST) ::::Merci pour ton aide. Petit à petit on avance. [[Utilisateur:Xhungab|Xhungab]] ([[Discussion utilisateur:Xhungab|discussion]]) 14 septembre 2026 à 20:26 (CEST) dwrjssthe60tbzkfdhsdgvlq0xz80ly Utilisateur:Xhungab 2 56767 772219 772193 2026-09-15T07:33:22Z Xhungab 23827 772219 wikitext text/x-wiki <templatestyles src="Main Page/minerva.css" /> <div style="display: none;"> Version : {{CURRENTTIMESTAMP}} ({{CURRENTHOUR}}h.. UTC) <!-- Page à purger tous les jours pour tous. --> Cette page a besoin de __NOCACHE__ </div> {| class="flexible" style="width:100%; margin:0px; padding:0px 5px 5px 5px;" | <div style="width:auto; text-align:center;"> <div id="mf-banner1" style="font-size:162%; padding:0.1em;">Bienvenue sur [[Wikilivres:Présentation|Wikilivres]],</div> <div id="mf-banner2" style="font-size:95%; margin-top:0.2em;">{{Bloc|La bibliothèque}} {{Bloc|de livres pédagogiques libres}} {{Bloc|que chacun peut améliorer.}}</div> <div style="text-align:center; font-size:95%; margin:0;">[[Wikilivres:Présentation|Wikilivres ?]] • [[Wikilivres|Aide]] • [[Wikilivres:Accueil|Communauté]]</div> <div id="pagecount" style="font-size:85%;">[[:Catégorie:Livres par titre|{{NUMBEROFBOOKS}} livres]] contenant [[Special:Allpages|{{NUMBEROFARTICLES}} pages]].</div> </div> | style="width:55%; font-size:95%;" | {| class="flexible" | style="width:25%;" | [[Fichier:Book icon.png|100px|link=Wikilivres:Tous les livres]] | style="width:50%;" | * [[:Catégorie:Livres terminés|Livres disponibles]] * [[:Catégorie:Minilivres|Mini Livres disponibles]] | style="width:10%;" | | style="width:0%;" | |} |} <div class="livre-accueil-section2" style="clear:both; margin:33px 0px 33px 0px; padding:0px;"> {| class="livre-accueil-table2" style="width:100%; border-spacing:8px 8px;" | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre1" title="Exemple de livre en vitrine">{{:Accueil/Vitrine|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre2" title="Exemple de livre Wikijunior">{{:Accueil/Wikijunior|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre3" title="Exemple de recette de cuisine">{{:Accueil/Recette|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> |} </div> <div id="mf-newbooks" class="newbooks-{{PAGESINCATEGORY:Nouveaux livres}}" title="Nouveaux livres" style="text-align: center"> '''Nouveautés et Projets en construction actif[[:Catégorie:Nouveaux livres|:]]''' <dynamicpagelist> category=Nouveaux livres namespace=Main suppresserrors=true order=descending count=20 mode=inline </dynamicpagelist> </div> '''[https://fr.wikibooks.org/wiki/Discussion_utilisateur:Xhungab Les coulisses de Wikibook]''' '''[https://fr.wikibooks.org/wiki/coulisses2 Les coulisses de Wikibook]''' <hr style="border: 1px solid #4faff380; margin: 10px; border-top: 0px;" /> </div> <div class="projects only_nonmobile">{{Projets Wikimedia}}</div> <div class="projects only_mobile">{{Projets Wikimedia|Mobile}}</div> <div style="margin-top:12px;border:1px solid #4faff380;border-radius:10px;text-align:center;" class="plainlinks"> [[Wikilivres:Avertissements généraux|Wikilivres ne garantit pas le contenu mis en ligne]]. <div style="font-size:85%;">La [{{fullurl:wikimedia:Accueil|uselang=fr}} Wikimedia Foundation] étant un hébergeur, elle ne saurait être tenue responsable des erreurs éventuelles contenues sur ce site.<br />Chaque rédacteur est responsable de ses contributions.</div> </div> __NOTOC__ __NOEDITSECTION__ [[Catégorie:Wikilivres]] epgrddwlv7vofk88g732dlwx89p33te 772221 772219 2026-09-15T07:36:38Z Xhungab 23827 772221 wikitext text/x-wiki <templatestyles src="Main Page/minerva.css" /> <div style="display: none;"> Version : {{CURRENTTIMESTAMP}} ({{CURRENTHOUR}}h.. UTC) <!-- Page à purger tous les jours pour tous. --> Cette page a besoin de __NOCACHE__ </div> {| class="flexible" style="width:100%; margin:0px; padding:0px 5px 5px 5px;" | <div style="width:auto; text-align:center;"> <div id="mf-banner1" style="font-size:162%; padding:0.1em;">Bienvenue sur [[Wikilivres:Présentation|Wikilivres]],</div> <div id="mf-banner2" style="font-size:95%; margin-top:0.2em;">{{Bloc|La bibliothèque}} {{Bloc|de livres pédagogiques libres}} {{Bloc|que chacun peut améliorer.}}</div> <div style="text-align:center; font-size:95%; margin:0;">[[Wikilivres:Présentation|Wikilivres ?]] • [[Wikilivres|Aide]] • [[Wikilivres:Accueil|Communauté]]</div> <div id="pagecount" style="font-size:85%;">[[:Catégorie:Livres par titre|{{NUMBEROFBOOKS}} livres]] contenant [[Special:Allpages|{{NUMBEROFARTICLES}} pages]].</div> </div> | style="width:55%; font-size:95%;" | {| class="flexible" | style="width:25%;" | [[Fichier:Book icon.png|100px|link=Wikilivres:Tous les livres]] | style="width:50%;" | * [[:Catégorie:Livres terminés|Livres disponibles]] * [[:Catégorie:Minilivres|Mini Livres disponibles]] | style="width:10%;" | | style="width:0%;" | |} |} <div class="livre-accueil-section2" style="clear:both; margin:33px 0px 33px 0px; padding:0px;"> {| class="livre-accueil-table2" style="width:100%; border-spacing:8px 8px;" | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre1" title="Exemple de livre en vitrine">{{:Accueil/Vitrine|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre2" title="Exemple de livre Wikijunior">{{:Accueil/Wikijunior|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre3" title="Exemple de recette de cuisine">{{:Accueil/Recette|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> |} </div> <div id="mf-newbooks" class="newbooks-{{PAGESINCATEGORY:Nouveaux livres}}" title="Nouveaux livres" style="text-align: center"> '''Nouveautés et Projets en construction actif[[:Catégorie:Nouveaux livres|:]]''' <dynamicpagelist> category=Nouveaux livres namespace=Main suppresserrors=true order=descending count=20 mode=inline </dynamicpagelist> </div> '''[https://fr.wikibooks.org/wiki/Discussion_utilisateur:Xhungab Les coulisses de Wikibook]''' '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' <hr style="border: 1px solid #4faff380; margin: 10px; border-top: 0px;" /> </div> <div class="projects only_nonmobile">{{Projets Wikimedia}}</div> <div class="projects only_mobile">{{Projets Wikimedia|Mobile}}</div> <div style="margin-top:12px;border:1px solid #4faff380;border-radius:10px;text-align:center;" class="plainlinks"> [[Wikilivres:Avertissements généraux|Wikilivres ne garantit pas le contenu mis en ligne]]. <div style="font-size:85%;">La [{{fullurl:wikimedia:Accueil|uselang=fr}} Wikimedia Foundation] étant un hébergeur, elle ne saurait être tenue responsable des erreurs éventuelles contenues sur ce site.<br />Chaque rédacteur est responsable de ses contributions.</div> </div> __NOTOC__ __NOEDITSECTION__ [[Catégorie:Wikilivres]] s2st3nslj14mjsstcwbrngghxr8xu1w 772223 772221 2026-09-15T07:38:59Z Xhungab 23827 772223 wikitext text/x-wiki <templatestyles src="Main Page/minerva.css" /> <div style="display: none;"> Version : {{CURRENTTIMESTAMP}} ({{CURRENTHOUR}}h.. UTC) <!-- Page à purger tous les jours pour tous. --> Cette page a besoin de __NOCACHE__ </div> {| class="flexible" style="width:100%; margin:0px; padding:0px 5px 5px 5px;" | <div style="width:auto; text-align:center;"> <div id="mf-banner1" style="font-size:162%; padding:0.1em;">Bienvenue sur [[Wikilivres:Présentation|Wikilivres]],</div> <div id="mf-banner2" style="font-size:95%; margin-top:0.2em;">{{Bloc|La bibliothèque}} {{Bloc|de livres pédagogiques libres}} {{Bloc|que chacun peut améliorer.}}</div> <div style="text-align:center; font-size:95%; margin:0;">[[Wikilivres:Présentation|Wikilivres ?]] • [[Wikilivres|Aide]] • [[Wikilivres:Accueil|Communauté]]</div> <div id="pagecount" style="font-size:85%;">[[:Catégorie:Livres par titre|{{NUMBEROFBOOKS}} livres]] contenant [[Special:Allpages|{{NUMBEROFARTICLES}} pages]].</div> </div> | style="width:55%; font-size:95%;" | {| class="flexible" | style="width:25%;" | [[Fichier:Book icon.png|100px|link=Wikilivres:Tous les livres]] | style="width:50%;" | * [[:Catégorie:Livres terminés|Livres disponibles]] * [[:Catégorie:Minilivres|Mini Livres disponibles]] | style="width:10%;" | | style="width:0%;" | |} |} <div class="livre-accueil-section2" style="clear:both; margin:33px 0px 33px 0px; padding:0px;"> {| class="livre-accueil-table2" style="width:100%; border-spacing:8px 8px;" | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre1" title="Exemple de livre en vitrine">{{:Accueil/Vitrine|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre2" title="Exemple de livre Wikijunior">{{:Accueil/Wikijunior|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre3" title="Exemple de recette de cuisine">{{:Accueil/Recette|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> |} </div> <div id="mf-newbooks" class="newbooks-{{PAGESINCATEGORY:Nouveaux livres}}" title="Nouveaux livres" style="text-align: center"> '''Nouveautés et Projets en construction actif[[:Catégorie:Nouveaux livres|:]]''' <dynamicpagelist> category=Nouveaux livres namespace=Main suppresserrors=true order=descending count=20 mode=inline </dynamicpagelist> </div> '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' <hr style="border: 1px solid #4faff380; margin: 10px; border-top: 0px;" /> </div> <div class="projects only_nonmobile">{{Projets Wikimedia}}</div> <div class="projects only_mobile">{{Projets Wikimedia|Mobile}}</div> <div style="margin-top:12px;border:1px solid #4faff380;border-radius:10px;text-align:center;" class="plainlinks"> [[Wikilivres:Avertissements généraux|Wikilivres ne garantit pas le contenu mis en ligne]]. <div style="font-size:85%;">La [{{fullurl:wikimedia:Accueil|uselang=fr}} Wikimedia Foundation] étant un hébergeur, elle ne saurait être tenue responsable des erreurs éventuelles contenues sur ce site.<br />Chaque rédacteur est responsable de ses contributions.</div> </div> __NOTOC__ __NOEDITSECTION__ [[Catégorie:Wikilivres]] hpieyje1uysctmrebfvf09ztro87nxe 772232 772223 2026-09-15T08:19:05Z Xhungab 23827 772232 wikitext text/x-wiki <templatestyles src="Main Page/minerva.css" /> <div style="display: none;"> Version : {{CURRENTTIMESTAMP}} ({{CURRENTHOUR}}h.. UTC) <!-- Page à purger tous les jours pour tous. --> Cette page a besoin de __NOCACHE__ </div> {| class="flexible" style="width:100%; margin:0px; padding:0px 5px 5px 5px;" | <div style="width:auto; text-align:center;"> <div id="mf-banner1" style="font-size:162%; padding:0.1em;">Bienvenue sur [[Wikilivres:Présentation|Wikilivres]],</div> <div id="mf-banner2" style="font-size:95%; margin-top:0.2em;">{{Bloc|La bibliothèque}} {{Bloc|de livres pédagogiques libres}} {{Bloc|que chacun peut améliorer.}}</div> <div style="text-align:center; font-size:95%; margin:0;">[[Wikilivres:Présentation|Wikilivres ?]] • [[Wikilivres|Aide]] • [[Wikilivres:Accueil|Communauté]]</div> <div id="pagecount" style="font-size:85%;">[[:Catégorie:Livres par titre|{{NUMBEROFBOOKS}} livres]] contenant [[Special:Allpages|{{NUMBEROFARTICLES}} pages]].</div> </div> | style="width:55%; font-size:95%;" | {| class="flexible" | style="width:25%;" | [[Fichier:Book icon.png|100px|link=Wikilivres:Tous les livres]] | style="width:50%;" | * [[:Catégorie:Livres terminés|Livres disponibles]] * [[:Catégorie:Minilivres|Mini Livres disponibles]] | style="width:10%;" | | style="width:0%;" | |} |} <div class="livre-accueil-section2" style="clear:both; margin:33px 0px 33px 0px; padding:0px;"> {| class="livre-accueil-table2" style="width:100%; border-spacing:8px 8px;" | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre1" title="Exemple de livre en vitrine">{{:Accueil/Vitrine|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre2" title="Exemple de livre Wikijunior">{{:Accueil/Wikijunior|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> | class="livre-presentation livre-accueil2" style="width:33%; padding:10px; vertical-align:top;" | <div id="mf-livre3" title="Exemple de recette de cuisine">{{:Accueil/Recette|date={{LOCALYEAR}}-{{LOCALMONTH}}-{{LOCALDAY}}}}</div> |} </div> <div id="mf-newbooks" class="newbooks-{{PAGESINCATEGORY:Nouveaux livres}}" title="Nouveaux livres" style="text-align: center"> '''Nouveautés et Projets en construction actifs[[:Catégorie:Nouveaux livres|:]]''' <dynamicpagelist> category=Nouveaux livres namespace=Main suppresserrors=true order=descending count=20 mode=inline </dynamicpagelist> </div> '''[https://fr.wikibooks.org/wiki/coulisses Les coulisses de Wikibook]''' <hr style="border: 1px solid #4faff380; margin: 10px; border-top: 0px;" /> </div> <div class="projects only_nonmobile">{{Projets Wikimedia}}</div> <div class="projects only_mobile">{{Projets Wikimedia|Mobile}}</div> <div style="margin-top:12px;border:1px solid #4faff380;border-radius:10px;text-align:center;" class="plainlinks"> [[Wikilivres:Avertissements généraux|Wikilivres ne garantit pas le contenu mis en ligne]]. <div style="font-size:85%;">La [{{fullurl:wikimedia:Accueil|uselang=fr}} Wikimedia Foundation] étant un hébergeur, elle ne saurait être tenue responsable des erreurs éventuelles contenues sur ce site.<br />Chaque rédacteur est responsable de ses contributions.</div> </div> __NOTOC__ __NOEDITSECTION__ [[Catégorie:Wikilivres]] 1eeoggfdz2hnsv2bb8bmmmsn047xn2c Mémoire 0 57761 772196 685005 2026-09-14T14:21:49Z Mewtow 31375 HotCat : [[Catégorie:Nouveaux livres]] ajoutée 772196 wikitext text/x-wiki {{Page de garde|image=Mr pipo Learning and forgetting.svg|tailleimage=250x250px|description= Comment fonctionne la mémoire ? Cette question peut être abordée de différentes manières. La première approche étudie le fonctionnement de la mémoire au niveau du cerveau. L'autre approche est celle des psychologues cognitifs, qui étudient le comportement humain. Comment ces psychologues et les neurosciences voient la mémoire ? C'est le but de ce livre que de vous l'expliquer. |avancement=Terminé |cdu= * {{CDU item|1|159.9}} * {{CDU item|5|57}} |versions= {{version imprimable}} }} == Table des matières == {{/Sommaire}} == Voir aussi == * [[Neurosciences]] * [[Psychologie cognitive pour l'enseignant]] * [[Liste de mnémoniques]] [[Catégorie:Mémoire (livre)|*]] [[Catégorie:Nouveaux livres]] 2swcrmmd247mi1vtyuopd2nfh99wh80 La politique monétaire 0 65720 772202 727119 2026-09-14T14:22:41Z Mewtow 31375 HotCat : [[Category:Livres terminés]] ajoutée avec [[Help:Gadget-HotCat|HotCat]] 772202 wikitext text/x-wiki __NOTOC__ [[Fichier:Euro 1 coin.gif|200px|right]] {{version imprimable}} {{CDU|3/33|336|ligne=1|dégage=left}} Nous utilisons tous de la monnaie pour faire nos achats, et avons tous des billets et pièces dans notre poche. Cette monnaie est le cœur de l'économie, ce qui lui permet de fonctionner. Nous avons tous besoin d'argent pour vivre, pour faire des achats, et ainsi de suite. Dans ce cours, nous allons voir comment cette monnaie est produite, comment elle se crée, et quelles conséquences cela peut avoir sur l'économie et notre vie quotidienne. Nous allons aborder les rudiments de la politique monétaire. '''Approche''' : Ce cours va utiliser une approche assez singulière, que l'on ne retrouve pas forcément dans les autres livres de référence sur le sujet, sauf quelques livres récents. Dans ce cours, nous allons étudier diverses théories macroéconomiques, qui appartiennent grosso-modo à deux courants : un courant monétariste qui étudie l'influence sur l'économie de la quantité de monnaie en circulation, et un courant dit Wickselien qui étudie l'influence des taux d'intérêts sur l'économie. L'auteur a décidé d'aborder séparément les théories de ces deux courants, dans deux parties distinctes. De plus, nous allons voir les théories Wickseliennes en premier, les théories monétaristes étant laissées à la fin du cours. La raison à cela est que les théories sur les taux sont beaucoup plus simples à comprendre que les théories monétaristes (à l'exception de la fameuse théorie quantitative, dont nous reparlerons), sans compter qu'elles décrivent un peu mieux l'économie actuelle, avec ses banques centrales indépendantes qui contrôlent les taux directeurs. Nous allons donc voir quelques théories qui commencent à faire leur chemin dans l'enseignement de la macroéconomie (le modèle à trois équations tiré de la macroéconomie ''New Keynesian'', pour les connaisseurs), avant de finir ce cours sur les anciennes théories keynésiennes et monétaristes. '''Structure du cours''' : Le début du cours va introduire les préliminaires nécessaires à la compréhension. Nous allons étudier quelques variables macroéconomiques, comme la masse monétaire, les taux de change, les taux d'intérêts, etc. Nous n'allons cependant pas introduire les notions les plus basiques, comme le PIB et la croissance, que vous devez connaitre avant de commencer ce livre. Par la suite, nous aborderons les problématiques institutionnelles : comment la monnaie est-elle créée, comment est organisé le système financier monétaire actuel, etc. Cette seconde partie nous permettra de parler de la création monétaire, des banques centrales et du marché monétaire. Uen troisième partie portera sur les théories wickeselienne, une quatrième sur les théories monétaristes. Enfin, nous terminerons ce cours par une revue des théories dites microfondées, des théories fortement mathématisées qui tentent de relier la macroéconomie à la microéconomie, qui permettent de modéliser une économie où circule de la monnaie. '''Public visé''' : Précisons que ce cours se veut destiné à une audience assez hétéroclite, qui va de simples curieux avec quelques connaissances en économie à un public plus averti. Les premiers chapitres sont relativement simples, avec assez peu de mathématiques complexes. Un niveau lycée suffit largement pour comprendre le début du cours, les formules mathématiques et démonstrations étant triviales et servant à formaliser des arguments plus qualitatifs. La toute fin du cours, avec les modèles micro-fondés, est destiné à un public averti, en université d'économie. Les chapitres en question, sur les modèles d'équilibre général d'une économie monétaire, sont inutiles pour toute personne qui ne fait pas d'études dans le domaine et ne sont ni essentiels, ni indispensables pour le curieux, l'autodidacte ou le lycéen. == Sommaire == {{/Sommaire|type=1}} {{autocat}} [[Catégorie:Économie]] [[Catégorie:Livres terminés]] gdxcwvjzb0qcshissk7sif783asbfcd Neurosciences 0 65726 772197 758936 2026-09-14T14:21:54Z Mewtow 31375 HotCat : [[Category:Nouveaux livres]] ajoutée avec [[Help:Gadget-HotCat|HotCat]] 772197 wikitext text/x-wiki {{Page de garde|image=Skull and brain normal human.svg|description= Ce livre va vous introduire aux neurosciences, un domaine de la biologie qui étudie le fonctionnement du cerveau, de la moelle épinière et du système nerveux en général. Celui-ci partira des bases, à savoir le fonctionnement des neurones et leurs interactions, avant de voir des choses plus complexes. Une première partie abordera les neurones et la manière dont ces cellules communiquent entre elles. Une seconde partie abordera le développement du cerveau au cours de la vie, de la conception à la mort. Par la suite, nous aborderons l'anatomie du système nerveux, à savoir, comment celui-ci est organisé, subdivisé. Ce n'est que par la suite que nous verrons comment le cerveau fait pour ressentir, penser, bouger, etc. |avancement=Terminé |cdu= * {{CDU item|5|57}} |versions= {{Moteur}} {{Version imprimable}} {{version PDF}} }} {{Sommaire}} {{AutoCat}} [[Catégorie:Biologie]] [[Catégorie:Nouveaux livres]] bm7i4hq87p0dm2qwvtg8bxcy1d2hv83 772203 772197 2026-09-14T14:24:51Z Mewtow 31375 HotCat : retrait de [[Catégorie:Nouveaux livres]]; [[Catégorie:Livres terminés]] ajoutée 772203 wikitext text/x-wiki {{Page de garde|image=Skull and brain normal human.svg|description= Ce livre va vous introduire aux neurosciences, un domaine de la biologie qui étudie le fonctionnement du cerveau, de la moelle épinière et du système nerveux en général. Celui-ci partira des bases, à savoir le fonctionnement des neurones et leurs interactions, avant de voir des choses plus complexes. Une première partie abordera les neurones et la manière dont ces cellules communiquent entre elles. Une seconde partie abordera le développement du cerveau au cours de la vie, de la conception à la mort. Par la suite, nous aborderons l'anatomie du système nerveux, à savoir, comment celui-ci est organisé, subdivisé. Ce n'est que par la suite que nous verrons comment le cerveau fait pour ressentir, penser, bouger, etc. |avancement=Terminé |cdu= * {{CDU item|5|57}} |versions= {{Moteur}} {{Version imprimable}} {{version PDF}} }} {{Sommaire}} {{AutoCat}} [[Catégorie:Biologie]] [[Catégorie:Livres terminés]] c1hswtuk6cp72i6t0sz7no4du7xq2r5 Les réseaux informatiques 0 70276 772200 686854 2026-09-14T14:22:12Z Mewtow 31375 HotCat : [[Category:Livres terminés]] ajoutée avec [[Help:Gadget-HotCat|HotCat]] 772200 wikitext text/x-wiki [[File:Internet.JPG|vignette|Illustration d'un réseau.]] {{Version imprimable}} {{version PDF}} Réseaux locaux, Internet, réseaux sans fils, réseaux commutés, etc. Peut-être avez-vous déjà entendu ces termes dans votre vie. Le réseau le plus connu est certainement Internet, le seul réseau d'envergure mondiale. Vous l'utilisez tous les jours, sans forcément connaitre son fonctionnement. Mais qu'est ce qui se cache derrière ces termes ? Qu'est ce qui se passe quand vous consultez un site internet ? Comment le système d'exploitation et le matériel font pour vous permettre un accès internet fluide ? Dans ce cours, nous allons tenter de répondre à une question en apparence simple, mais bien plus complexe que prévue : comment fonctionnent les réseaux ? ==Sommaire== {{/Sommaire}} ==Pour aller plus loin== * [[Réseaux TCP/IP]] [[Catégorie:Informatique]] [[Catégorie:Livres terminés]] {{autocat}} ddzc15julttdcvdi06ztmk31oj5pire Les bases de données 0 70593 772199 664408 2026-09-14T14:22:05Z Mewtow 31375 HotCat : [[Category:Nouveaux livres]] ajoutée avec [[Help:Gadget-HotCat|HotCat]] 772199 wikitext text/x-wiki [[File:Applications-database.svg|vignette|Base de données.]] {{version imprimable}} Les informaticiens sont souvent amenés à manipuler de grandes quantités d'informations sur de longues périodes. Évidemment, ces informations doivent être conservées pour plus tard : elle ne doivent pas disparaître quand on éteint l'ordinateur. Pour cela, un ordinateur contient toujours une ou plusieurs mémoires de masse, des mémoires qui peuvent conserver des informations quand l'ordinateur s'éteint. Reste qu'utiliser ces mémoires de masse pour stocker de grandes quantités de données n'est pas une mince affaire. Les systèmes d'exploitation disposent d'un système de fichiers et de répertoires pour organiser de grandes quantités de données, mais ce système pose problème quand il s'agit de manipuler automatiquement des volumes de données importants. De plus, leur partage est quelque peu mal aisé quand il implique plusieurs ordinateurs. L'étape suivante, que nous allons voir dans ce cours, est celle des '''bases de données''' et des langages relationnels comme le SQL. Dans ce cours, nous allons voir les bases de données d'un point de vue conceptuel et théorique, mais nous allons aussi donner les bases du langage SQL. Nous n'irons pas très loin, mais suffisamment pour aborder toutes les bases nécessaires pour manipuler des BDD. Vous pouvez voir ce cours comme une introduction, telle qu'on en trouve dans les cours des premières années de licence. ==Sommaire== {{/Sommaire}} {{autocat}} [[Catégorie:Nouveaux livres]] ndkxf9ligx4ux17klotwtkuj81xxpqs Les suites et séries 0 70704 772201 682736 2026-09-14T14:22:33Z Mewtow 31375 HotCat : [[Catégorie:Nouveaux livres]] ajoutée 772201 wikitext text/x-wiki {{Page de garde|image=Converging Sequence example.svg|description= Les suites et séries sont des outils mathématiques très utilisés dans de nombreux domaines : algèbre, analyse, statistiques et probabilités, et même en physique ou en économie. Une bonne partie des mathématiques est basée sur ces suites et séries. Sans eux, pas de dérivées ni d'intégrales, pas de fonction récurrentes, et bien d'autres. Pourtant, il s'agit d'outils mathématiques simples à comprendre et à appréhender. À tel point qu'ils sont enseignés aux élèves lors de leur enseignement secondaire. Ce cours va vous enseigner ce qu'il y a à savoir sur les suites ainsi que leurs grandes amies de toujours : les séries et sommes partielles. |avancement=Terminé |cdu= * {{CDU item|5|51}} |versions= {{version imprimable}} }} : '''Approche''' : Ce cours suivra une approche un peu différente des cours scolaires sur le sujet. En effet, la plupart des cours sur les suites et série introduisent très rapidement le concept de limite d'une suite, avant de passer aux séries, avec éventuellement un interlude propédeutique sur les sommes partielles entre les deux. La première version de ce wikilivre ne faisait pas exception et suivait cette approche, en abordant d'abord les limites, puis les sommes partielles, puis les séries. Ce wikilivre va cependant suivre l'approche suivante : nous parlerons d'abord des sommes partielles, avant de voir la limite d'une suite, puis de passer aux séries. L'objectif est de faire en sorte que les lecteurs puissent aller le plus loin possible dans ce cours avec des prérequis minimaux. En effet, tout ce qui a trait aux sommes partielles est accessible avec un bagage limité en mathématique, à savoir les bases de l'arithmétique et de l’algèbre. De plus, ces concepts ne demandent pas de manipuler des infinis ou de raisonner sur des suites infinies. À l'opposé, la notion de limite demande de manipuler des infiniment grands ou des infiniment petits, le formalisme est incontournable, les démonstrations moins intuitives. Aussi, l'approche de ce wikilivre fournit une entrée assez simple au domaine des suites, avant d'augmenter progressivement en complexité. Repousser ainsi le concept de limite permet aux débutants en maths, voire aux élèves de collège, d'aller assez loin dans ce cours, quitte à devoir s'arrêter à la partie 3. L'avenir dira si cette démarche est viable, à vous de juger du résultat. : '''Prérequis'''  : Les deux premières parties de ce cours sont accessibles à partir d'un niveau collège. Elles ne demandent que des bases en arithmétiques et en algèbre, sauf occasionnellement. Les deux parties suivantes sont accessibles à partir du moment où vous avez suivi une scolarité au lycée, et que vous avez une maîtrise correcte des concepts appris dans cette période de la scolarité. Dans le détail, vous devez connaître : un minimum de théorie des ensembles, avoir des bases sur les nombres réels, quelques bases de l'analyse (savoir ce qu'est une fonction, par exemple) et connaître les preuves par induction. ==Sommaire== {{/Sommaire}} [[Catégorie:Mathématiques]] [[Catégorie:Nouveaux livres]] {{autocat}} 0fh4kl92e73o9ts7xrrhrp50pxfr542 Électronique 0 71489 772195 681268 2026-09-14T14:21:22Z Mewtow 31375 HotCat : [[Category:Nouveaux livres]] ajoutée avec [[Help:Gadget-HotCat|HotCat]] 772195 wikitext text/x-wiki {{Page de garde|image=Digital Electronics Icon.svg|description= L'électronique est partout dans notre quotidien : ordinateurs, smartphones, téléphones portables, montres connectées, et bien d'autres appareils sont électroniques. Mais bien peu de personnes savent comment fonctionnent ces appareils dans le détail. Peut-être savent-ils qu'ils sont fabriqués à partir de semi-conducteurs et de transistors, mais sans en savoir beaucoup plus. Ce cours va vous donner les bases du domaine. Nous allons commencer par l'abord des semi-conducteurs, avant de voir les composants de base que sont les diodes et les transistors. Nous poursuivrons ensuite par aborder les composants plus élaborés que sont les amplificateurs et filtres électroniques, ainsi que les portes logiques. |avancement=Terminé |cdu= * {{CDU item|6/62/621|621.3}} |versions= {{version imprimable}} {{Lecture conseillée|[[Électricité|L'électricité et les circuits électriques (wikilivre).]]}} }} : '''Pré-requis''' : Ce cours demande quelques bases en électricité, que vous pouvez acquérir en lisant ce cours, disponible sur Wikilivres : [[Électricité]]. : '''Sujet et objectifs de ce cours''' : Ce cours porte essentiellement sur l'électronique analogique, avec un minimum sur l'électronique numérique. Il aborde notamment les composants à semi-conducteurs, comme les diodes et les transistors et d'autres composants. Il parle aussi des composants analogiques plus évolués, utilisés dans le traitement du signal ou la conception de circuits analogiques : AOP, filtres, oscillateurs, etc. Enfin, il explique comment fabriquer des portes logiques à partir de composants analogiques (avec un bref rappel sur les portes logiques). Attention : ce cours n'aborde pas tout ce qui a trait aux circuits numériques, à leurs méthodes de conception et tout ce qui dépasse la fabrication des portes logiques à partir de composants analogiques. Pour ceux qui veulent en apprendre plus sur ces sujets, je vous conseille de lire les deux wikilivres suivants : :* [[Électronique numérique : logique]], un wikilivre assez complet sur le sujet. :* Les chapitres au début du cours [[Fonctionnement d'un ordinateur]], du chapitre "Le codage des informations" au chapitre "Les circuits de conversion analogique-numérique". ==Sommaire== ===Les amplificateurs, filtres et oscillateurs électroniques=== * [[/Les amplificateurs électriques/]] * [[/Les amplificateurs opérationnels/]] * [[/La rétroaction linéaire et l'amplification/]] * [[/Les montages à amplificateurs opérationnels/]] * [[/Les filtres électriques/]] * [[/Les filtres du premier et second ordre/]] * [[/Les oscillateurs (générateurs de fréquence)/]] ===Les composants à semi-conducteurs=== * [[/Les semi-conducteurs/]] * [[/Les jonctions PN/]] * [[/Les diodes et jonctions PN/]] * [[/Les transistors bipolaires/]] * [[/Les transistors à effet de champ/]] * [[/Le fonctionnement en petits signaux des transistors/]] * [[/Polarisation des transistors BJT et FET/]] * [[/Les montages amplificateurs à transistors/]] * [[/Les montages amplificateurs à plusieurs étages/]] ===Les portes logiques et circuits intégrés=== * [[/Les portes logiques/]] * [[/Les familles MOS : PMOS, NMOS et CMOS/]] * [[/Les familles bipolaires : à diodes, DTL, ETL, TTL et ECL/]] * [[/Les circuits intégrés/]] {{autocat}} [[Catégorie:Électronique]] [[Catégorie:Nouveaux livres]] b3bil1f95pr4g3g0uw261jxzop032bn Le noyau atomique 0 72268 772198 681088 2026-09-14T14:22:01Z Mewtow 31375 HotCat : [[Catégorie:Nouveaux livres]] ajoutée 772198 wikitext text/x-wiki {{Page de garde|image=Nucleus drawing.svg|description= Ce livre sur la physique nucléaire basique explique ce qu'est le noyau de l'atome, ce qu'il y a à l'intérieur et comment celui-ci tient d'un seul tenant. Nous parlerons aussi de la radioactivité, avec les rayonnements radioactifs, les désintégrations et ainsi de suite. |avancement=Terminé |cdu= * {{CDU item|5/53|539}} |versions= {{version imprimable}} }} Vous avez certainement déjà entendu parler de la radioactivité. Qu'il s'agisse des rayonnements radioactifs, des centrales nucléaires, ou des déchets radioactifs, tout cela se base sur un phénomène encore mystérieux de nos jours, qui implique l’atome et plus précisément son noyau. Les physiciens ont depuis longtemps étudié le noyau atomique pour en percer ses secrets. Les études expérimentales sont encore nombreuses et les expériences toujours soutenues. Encore aujourd'hui, on sait mal comment fonctionne le noyau de l'atome. On sait ce qu'il y a à l'intérieur (des protons, des neutrons, des quarks, et ainsi de suite), mais on sait mal comment ceux-ci tiennent ensemble. On sait que cela implique une interaction physique assez complexe (la force nucléaire) et que tout cela implique de la physique quantique. Mais les savants ne sont pas en reste et savent malgré tout beaucoup de choses sur le noyau de l'atome. Dans ce cours, nous allons tenter de vous expliquer ce qu'est le noyau de l'atome, ce qu'il y a à l'intérieur, comment celui-ci tient d'un seul tenant, et bien d'autres choses encore. : '''Public visé''' : Ce cours est destiné à une large audience, qui va du collégien à un public avec de solides connaissances en physique. Pour ce faire, le cours est divisé en sections de complexité croissante. Les chapitres de la première partie portent sur les bases du sujet et sont compréhensibles par tout un chacun, tant qu'il a reçu un enseignement de niveau collège/lycée. Ils aborderont surtout des notions simples et qualitatives, avec un sens physique relativement classique, sans physique quantique. Quelques formules peuvent faire leur apparition, mais elles restent rares et les mathématiques seront assez simples. Par contre, au-delà de la première partie, les choses deviendront plus complexes. Les formules seront plus courantes, allant de la loi de désintégration radioactive à des développements plus compliqués. Enfin, la troisième partie est destinée à un public plus averti, à l'exception du chapitre sur le modèle de la goutte liquide. Les autres chapitres abordent la structure interne du noyau atomique et parlent plus en détail de l'interaction nucléaire. Le niveau requis est alors plus élevé : des rudiments de physique quantique (avec le formalisme mathématique qui va avec) sont nécessaires. : '''Pré-requis nécessaires''' : Le lecteur doit savoir ce qu'est un atome et ce qu'il y a à l'intérieur. Ceux qui veulent une introduction sur le sujet peuvent lire le cours suivant sur la Wikiversité, qui empiète un petit peu sur le présent cours : [https://fr.wikiversity.org/wiki/Structure_de_l%27atome Structure de l'atome]. =='''Sommaire'''== {{/Sommaire}} ==En savoir plus== ===Wikibooks (anglais)=== Vous trouverez, sur le wikibooks anglais, les wikilivres suivants qui parlent de la radioactivité et de ses applications médicales : * [https://en.wikibooks.org/wiki/Basic_Physics_of_Nuclear_Medicine Basic Physics of Nuclear Medicine] ===Liens externes=== * [http://www.laradioactivite.com/ La radioactivité] : Site de vulgarisation sur la radioactivité, assez complet. <noinclude> [[Catégorie:Physique]] [[Catégorie:Nouveaux livres]] {{autocat}} </noinclude> 1mpa1qhem4x3t145vh64tiwgyhf24fo Programmation PHP/Problèmes connus 0 72289 772235 770762 2026-09-15T11:09:21Z JackPotte 5426 /* Symfony */ 772235 wikitext text/x-wiki <noinclude>{{PHP}}</noinclude> Le processus de débogage est relativement le même d'un bug à l'autre : * En cas d'erreur 400, regarder d'abord les logs les plus spécifiques (ex : le var/log de l'application), puis les logs des serveurs Web (ex : /var/log/nginx), puis ceux du système (/var/log). * En cas d'erreur 500 ou de non réponse, passer directement aux logs des serveurs. * En cas d'absence de log, localiser le problème avec : ** [[../Exceptions#Logs|Des ajouts de logs supplémentaires]]. ** [[../Xdebug/]]. La liste suivante doit permettre de gagner du temps pour solutionner les erreurs que l'on peut trouver dans les logs. == Erreurs sans message PHP == === IIS tourne dans le vide après la mise à jour de PHP === Vérifier que les dépendances sont bien installées (ex : Visual C++)<ref>http://windows.php.net/download/</ref>. === Les modifications du fichier php.ini ne sont pas prises en compte dans phpinfo === Sur Wamp, redémarrer PHP et Apache ne suffit pas car Apache contient une copie du fichier <code>php.ini</code> dans <u>C:\wamp64\bin\apache\apache2.4.54.2\bin</u>, créée lors de la sélection de la version de PHP (au clic sur PHP/Version). === La connexion a été réinitialisée === Erreur sous Firefox provenant d'un <code>mysql_close()</code> ou d'une directive Apache. === La page n'est pas redirigée correctement === Un <code>header</code> revient en boucle après une suite de conditions. S'il est local, le remplacer par <code>chdir()</code>. === Le code PHP n'est pas interprété (et est affiché) === Si <code>a2enmod php7.4</code> indique que le module est déjà installé, c'est peut-être lié à <code>a2enmod userdir</code>. Cela peut se régler avec : <pre> vim /etc/apache2/mods-enabled/php7.4.conf </pre> Commenter les lignes : <pre> <IfModule mod_userdir.c> ... </IfModule> </pre> Et relancer Apache. Sinon c'est peut-être le vhost utilisé qui n'est pas le bon (voir /var/log/apache2) ou qu'il ne contient pas : <pre> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> Require all granted AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Allow from all </Directory> </pre> === Les dernières lignes d'un POST sont ignorées === Il faut soit augmenter la variable PHP max_input_vars (ce qui ne peut pas être fait avec <code>ini_set()</code><ref>https://stackoverflow.com/questions/9973555/setting-max-input-vars-php-ini-directive-using-ini-set</ref>), soit il faut fragmenter en plusieurs requêtes, par exemple toutes les 300 lignes. === Une expression régulière (''regex'') marche sur https://regex101.com/ mais pas en local === Si la machine est Windows, tenir compte de la différence de retour chariot : <code>\r\n</code> au lieu de <code>\n</code>. === Une addition ou soustraction de dates ajoute ou retire un jour === Cela survient quand on part d'un mois à 31 jours pour arriver à un mois qui en a moins. Par exemple : <pre> var_dump((new DateTime('2024-12-31'))->add(new DateInterval("P6M"))); // 2025-07-01 00:00:00 var_dump((new DateTime('2024-12-31'))->add(new DateInterval("P12M"))); // 2025-12-31 00:00:00 </pre> Pour avoir un calcul juste, on peut ajuster le jour du résultat ainsi : <pre> $startDate = new DateTime('2024-12-31'); $originalDay = $startDate->format('d'); $startDate->add(new DateInterval('P6M')); if ($startDate->format('d') !== $originalDay) { // Ajuster au dernier jour du mois précédent $startDate->modify('last day of previous month'); } var_dump($startDate); // 2025-06-30 00:00:00 </pre> === Une addition ou soustraction de dates ajoute ou retire une heure === C'est à cause des changements d'heure d'hiver et heure été. Par exemple : <pre> var_dump((new DateTime('2024-12-31'))->add(new DateInterval("PT4320H"))); // 2025-06-29 01:00:00 var_dump((new DateTime('2024-12-31'))->add(new DateInterval("PT8640H"))); // 2025-12-26 00:00:00 </pre> Pour avoir un calcul juste, on peut changer de fuseau horaire le temps du calcul, vers un qui n'est pas soumis aux changements d'heures<ref>https://stackoverflow.com/questions/804571/how-to-subtract-two-dates-ignoring-daylight-savings-time-in-php</ref> : <pre> var_dump((new DateTime('2024-12-31 UTC'))->add(new DateInterval("PT4320H"))); // 2025-06-29 00:00:00 var_dump((new DateTime('2024-12-31 UTC'))->add(new DateInterval("PT8640H"))); // 2025-12-26 00:00:00 </pre> ou à l'échelle du serveur : <pre> $timeZone = date_default_timezone_get(); date_default_timezone_set('UTC'); // calcul date_default_timezone_set($timeZone); </pre> == PHP natif == === Connect Error, 2002: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée. === Relancer le serveur de base de données. === Connect Error, 2002: Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. === Ouvrir les pare-feux. === Input variables exceeded 1000 === Examiner le payload envoyé par le formulaire pour voir si tout est utile : il peut y avoir des redondances ou des éléments inutilisés. === Invalid body indentation level (expecting an indentation level of at least 8) === En PHP7.3, la syntaxe heredoc impose de supprimer l'indentation de la balise fermante : elle soit suivre "\n". === json_decode renvoie NULL (aléatoirement) === Ajouter le paramètre 4 : JSON_THROW_ON_ERROR. === json_decode throw "Control character error, possibly incorrectly encoded" === La string à décoder est trop longue. === Malformed UTF-8 characters, possibly incorrectly encoded === Changer l'encodage de la chaine avant son encodage en JSON, avec<ref>https://stackoverflow.com/questions/31115982/malformed-utf-8-characters-possibly-incorrectly-encoded-in-laravel</ref> : $chaine = mb_convert_encoding($chaine, 'UTF-8', 'auto'); === MySQL server has gone away === La limite des 61 jointures a peut-être été atteinte dans une requête. Sinon vérifier les limites des ressources (du .ini) : par défaut default_socket_timeout égal 60 s. === This extension requires the Microsoft ODBC Driver 11 for SQL Server === Installer le pilote depuis https://www.microsoft.com/en-us/download/details.aspx?id=36434. === Unable to initialize module. Module compiled with module API=x. PHP compiled with module API=y. These options need to match === Se procurer une autre DLL à renseigner dans le fichier <code>php.ini</code>. === You can only iterate a generator by-reference if it declared that it yields by-reference === Se produit quand on itère sur la référence d'un générateur PHP : <pre> foreach ($generator as &$item) { ... } </pre> Il faut donc retirer l'opérateur de référence (&) de l'itération... === Cannot traverse an already closed generator === Un <code>iterator_to_array($generator)</code> le ferme en le convertissant en tableau. === child exited on signal 7 (SIGBUS) === Modifier le fichier <code>php.ini</code><ref>https://whynhow.info/17522/How-to-get-rid-of-SIGBUS-when-running-php-fpm?</ref> : <pre> pm.max_children = 80 pm.max_spare_servers = 20 pm.max_requests = 200 apc.stat = 0 </pre> <code>max_children</code> est calculé en divisant la RAM par la taille des processus<ref>https://www.kinamo.fr/fr/support/faq/determiner-le-nombre-de-processes-valide-pour-php-fpm-sur-nginx</ref>. === Invalid resource type: unknown type === Le paramètre n°2 de <code>fopen()</code> ne permet pas la lecture<ref>https://www.php.net/manual/fr/function.fopen.php</ref>. === Each stream must be readable === On essaie de lire un fichier fermé : déplacer le <code>fclose()</code> après s'il y en a un avant. === fclose(): supplied resource is not a valid stream resource === On essaie de fermer un fichier fermé : utiliser <code>if (is_resource($f))</code> avant. === SSL peer certificate or SSH remote key was not OK === Lors d'un <code>curl_exec</code>, ajouter : <pre> curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); </pre> ou : <pre> $options['verify_host'] = false; $options['verify_peer'] = false; </pre> === Fatal error === ==== {{rouge|[] operator not supported for strings}} ==== <pre> // On récupère une variable dont on ne connait pas le type pour en faire un tableau if (!isset($tableau1)) { $tableau1 = array(); } elseif (is_string($tableau1)) { $tableau1 = array($tableau1); } $tableau1[] = 'paramètre suivant'; </pre> ==== {{rouge|Allowed memory size of x bytes exhausted}} ==== Modifier le fichier <code>php.ini</code> ou bien ajouter une autre limite dans le programme : <pre> ini_set('memory_limit', '100M'); </pre> Pour faire sauter la limitation : <pre> ini_set('memory_limit', '-1'); </pre> Si c'est dans une commande : php -d memory_limit=-1 ma_commande Si c'est Composer : COMPOSER_MEMORY_LIMIT=-1 ./composer.phar update Sinon, utiliser Xdebug en mode pas à pas pour visualiser les variables à supprimer (avec <code>unset()</code>). ==== {{rouge|Call to a member function ... on a non-object}} ==== La méthode est invoquée sur une variable qui n'est pas une classe. ==== {{rouge|Call to undefined function}} ==== Si une fonction est définie mais qu'on ne peut pas l'invoquer dans une méthode de classe, il faut préalablement l'importer en tenant compte du [[../Programmation_orientée_objet#Polymorphisme|polymorphisme]]. ===== {{rouge|Call to undefined function sqlsrv_connect()}} ===== Installer le pilote correspondant à la version de PHP du serveur Web : # Télécharger sur https://www.microsoft.com/en-us/download/details.aspx?id=20098. # Copier dans le dossier PHP (ex : <u>C:\Program Files (x86)\EasyPHP\binaries\php\php_runningversion\ext</u>). # Ajouter au fichier <code>php.ini</code>. # Redémarrer le serveur Web. ==== {{rouge|Call to undefined method}} ==== La méthode est invoquée sur une classe qui ne l'a pas. Si elle est censée l'avoir c'est qu'elle n'est pas récupérée, ce qui peut arriver avec les jointures entre entités d'ORM. ==== {{rouge|Cannot access empty property}} ==== Une variable non définie ne peut pas fournir de propriété. Si elle était définie ailleurs c'est qu'elle est inaccessible, et donc qu'il faut la récupérer (ex : avec <code>global</code>). ==== {{rouge|Error connecting to the ODBC database: [Microsoft][SQL Server Native Client 10.0][SQL Server]échec de l'ouverture de session de l'utilisateur}} ==== La précédente connexion n'a pas dû être fermée proprement avant une tentative de reconnexion. Essayer au choix : <pre> mysql_close($conn); // MySQL sqlsrv_close($conn); // MS-SQL odbc_close($conn); // ODBC </pre> ==== {{rouge|Out of memory}} ==== Éditer le fichier <code>php.ini</code> pour augmenter la limite mémoire : memory_limit = 256M Si cela ne suffit pas, vérifier la taille des structures et tableaux alloués, probablement par une boucle avec trop d'itérations ou une boucle infinie, ou le chargement d'une ressource trop volumineuse en mémoire. ==== {{rouge|pdo_sqlsrv_db_handle_factory: Unknown exception caught}} ==== Installer et configurer le paquet suivant : <pre> apt-get install -y locales echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen </pre> ==== {{rouge|Uncaught exception 'com_exception' with message 'Failed to create COM object `xxx.application': Accès refusé.}} ==== Sur le serveur Web Windows, dans ''démarrer'', exécuter ''dcomcnfg'' (sinon y aller dans ''Outils d'administration'', ''Service de composants''), puis ''Ordinateurs'', ''Poste de travail'', ''Configuration DCOM'', aller dans les propriétés de l'application mentionnée, puis dans l'onglet ''Sécurité'', définir la première permission (''Autorisations d'exécution et d'activation'' à ''Personnaliser'' et ajouter le compte du serveur ou site qui exécute le script (ex pour ISS : IIS_IUSRS ou IUSR). Par exemple pour Word l'application se prénomme "Document Microsoft Office Word", et Excel "Microsoft Excel Application". ==== {{rouge|Uncaught exception 'com_exception' with message 'Source: Microsoft Office Excel Description: Mémoire insuffisante.}} ==== Il faut certainement rerégler la Configuration DCOM voire le serveur Web. ==== {{rouge|Uncaught exception 'PDOException' with message}} ==== ===== {{rouge|could not find driver}} ===== Se référer à la liste des pilotes connus dans [[../PDO#Installation]]. ===== {{rouge|SQLSTATE[HY000]: General error}} ===== PDO ne gère pas le code SQL "set @ma_variable" ou "if". Donc il faut plutôt faire ces calculs en PHP. ===== {{rouge|SQLSTATE[28000] [1045] Access denied for user}} ===== Si l'utilisateur existe avec les privilèges nécessaires, y compris depuis toute localisation (@%), il faut quand-même créer un deuxième compte homonyme pour l'emplacement distant (ex : 'username'@'example.com'). Par exemple dans phpMyAdmin, remplir la provenance mentionnée en erreur ('example.com') dans le champ "Client". ===== {{rouge|SQLSTATE[28000] SQLConnect: 18456 [Microsoft][ODBC SQL Server Driver][SQL Server] Échec de l'ouverture de session de l'utilisateur}} ===== Se référer à [[../PDO#Accès à la base de données avec PDO]] : la source de données ODBC doit être suivie du compte pour y accéder. ===== {{rouge|SQLSTATE[IM002] SQLConnect: 0 [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié}} ===== Se référer à [[../PDO#Accès à la base de données avec PDO]] : la source de données ODBC doit être créée dans <u>C:\Windows\SysWOW64\odbcad32.exe</u>. ===== {{rouge|SQLSTATE[IMSSP]: An invalid keyword 'host' was specified in the DSN string}} ===== Se référer à [[../PDO#Accès à la base de données avec PDO]] : le paramètre 'host' est valide pour MySQL mais pas pour MS-SQL. ===== {{rouge|SQLSTATE[IMSSP]: The DSN string ended unexpectedly}} ===== Se référer à [[../PDO#Accès à la base de données avec PDO]] : les virgules et points-virgules changent d'un pilote à l'autre. ===== {{rouge|SQLSTATE[IMSSP]: This extension requires the Microsoft SQL Server 2012 Native Client ODBC Driver to communicate with SQL Server}} ===== Se référer à [[../PDO#Accès à la base de données avec PDO]] : utiliser la syntaxe ODBC. === Notice === ==== {{rouge|Undefined property}} ==== La propriété de la variable n'est pas déclarée. ==== {{rouge|Undefined index: SERVER_NAME in ...php}} ==== Certaines versions de PHP utilisent <code>$_SERVER['HTTP_HOST']</code> au lieu de <code>$_SERVER['SERVER_NAME']</code>. ==== {{rouge|Undefined variable}} ==== La variable n'est pas déclarée. ==== {{rouge|Use of undefined constant}} ==== La constante n'est pas déclarée. === Parse error === ==== {{rouge|syntax error, unexpected '(', expecting variable (T_VARIABLE) or '$' in...}} ==== Séparer le $ dans la chaine (ex : <code>{$</code> -> <code>{ $</code>). ==== {{rouge|syntax error, unexpected <nowiki>''</nowiki> (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)}} ==== Remplacer les variables incluses dans des chaines. Ex : <pre> $query="select $contact['member']"; // pas bien $query="select ".$contact['member']; // bien </pre> ==== {{rouge|syntax error, unexpected '$Variable' (T_VARIABLE), expecting function (T_FUNCTION)}} ==== Dans une classe en dehors des méthodes, il faut déclarer les variables avec leur portée : <pre> private $Variable; </pre> === Strict Standards === ==== {{rouge|Declaration of extFunctions::logs() should be compatible with functions::logs($chaine)}} ==== La fonction (<code>logs()</code> dans l'exemple) existe déjà, peut-être avec des majuscules (peu importe les arguments). ==== {{rouge|Only variables should be passed by reference}} ==== Il faut appliquer la fonction <code>end()</code> sur une variable au lieu du résultat d'une opération<ref>http://stackoverflow.com/questions/4636166/only-variables-should-be-passed-by-reference</ref>. Ex : <pre> // $extension = end(explode('.', $fichier)); $ext = explode('.', $fichier); $extension = end($ext); </pre> === Warning === ==== {{rouge|Cannot use a scalar value as an array}} ==== Un tableau de valeurs ne peut pas être redéfini en tableau de tableaux si elles existent. Remplacer les cas ainsi : <pre> $tab['1'] = 1; //$tab['1']['un'] = 'un'; $tab['un']['un'] = 'un'; </pre> ==== {{rouge|Creating default object from empty value}} ==== Se produit quand on appelle l'attribut d'un objet NULL. ==== {{rouge|date_diff() expects parameter 1 to be DateTimeInterface}} ==== La classe native <code>DateTime()</code> est plus pratique que la fonction <code>date_diff()</code> : <pre> $Avant = new DateTime('20140101'); $Apres = new DateTime(); print $Avant->diff($Apres)->format("%d"); </pre> ==== {{rouge|Illegal string offset}} ==== On invoque une entrée inexistante dans un tableau associatif. Lever l'exception avec <code>Try</code> ou <code>if (!isset(</code>. ==== {{rouge|mkdir(): File exists}} ==== Sous Docker Desktop pour Windows, mkdir() appelle file_exists(), et ce dernier renvoie ''true'' si le dossier a existé. ==== {{rouge|PHP Startup: Unable to load dynamic library 'memcached.so'}} ==== sudo pecl install memcached Si cela persiste : sudo apt-get install php-igbinary sudo apt-get install php-msgpack sudo service php7.2-fpm reload ==== {{rouge|PHP Startup: Unable to load dynamic library 'redis.so'}} ==== sudo pecl install redis == Erreurs SMTP == === ''La connexion a échoué'' === Vérifier le serveur HTTP qui interprète le fichier <code>.php</code>. === ''SMTP Error: Could not connect to SMTP host'' === Changer de SMTP, ex : http://www.commentcamarche.net/faq/893-parametres-de-serveurs-pop-imap-et-smtp-des-principaux-fai === Si les mails partent sans arriver === * Vérifier que l'IP de l'expéditeur n'est pas blacklistée : http://whatismyipaddress.com/blacklist-check * Définir un reverse DNS si absent * Veiller à ce que le mail ne soit pas présumé spam, en évitant les sujets vides par exemple, ou les pièces jointes exécutables non compressées (.exe, .cmd, .vbs...). == Composer == === 1 package has known vulnerabilities === Exemple avec un <code>guzzlehttp/guzzle (7.4.3)</code> absent du composer.json : composer depends guzzlehttp/guzzle puis <code>composer update</code> du résultat. Si cela ne suffit pas, installer Guzzle puis le désinstaller pour mettre à jour sa dépendance indirecte : composer require guzzlehttp/guzzle && composer remove guzzlehttp/guzzle === "./composer.json" does not contain valid JSON === Lors d'un ''composer install'', si ce message survient à tort, c'est qu'un autre fichier .json du projet contient le problème. Si cela persiste malgré la correction, il se peut qu'il faille redémarrer Docker Desktop sur Windows. === Conclusion: don't install xxx === Lors d'un ''composer require'', spécifier une version inférieure du paquet requis. === No driver found to handle VCS repository === VCS fonctionne en protocole git, vérifier que l'URL est bien au format "git@repo:bundle.git". Sinon il y a deux alternatives : * Pour HTTPS, remplacer la dépendance de type "vcs" par une de type "package"<ref>https://stackoverflow.com/questions/24443318/getting-error-no-driver-found-to-handle-vcs-repository-on-composer-and-svn?answertab=votes#tab-top</ref>. * Pour décompresser un .zip, utiliser le type "artifact". === no matching package found === Ajouter le paramètre suivant : composer require mon_paquet --update-with-all-dependencies === Permission denied (public key) === Si le dépôt privé se clone bien sans passer par "composer" : voir la page [[Programmation PHP/Composer]]. === You must be using the interactive console to authenticate === Pour installer cette bibliothèque, il faut que Composer puisse se loguer. Pour ce faire, il utilise auth.json qui peut se trouver dans<ref>https://getcomposer.org/doc/articles/http-basic-authentication.md</ref> : # <code>$HOME/.composer/auth.json</code> # ou à côté du <code>composer.json</code> Exemple de auth.json<ref>https://github.com/magento/magento2/issues/2523#issuecomment-159884152</ref> : <pre> { "github-oauth": { "github.com": "<snip>" }, "http-basic": { "repo.magento.com": { "username": "<snip>", "password": "<snip>" } } } </pre> === Your Composer dependencies require a PHP version ">= 8.0.0". === Ajouter au paragraphe "config" : <pre> "platform-check": false </pre> Puis relancer <code>composer install</code> pour que cela soit pris en compte. === Your requirements could not be resolved to an installable set of packages === Si deux dépendances s'empêchent mutuellement de se mettre à jour, les demander dans la même commande : <pre> composer require mon-bundle ^1.0 symfony/http-client 5.3.* -W </pre> === Timeout sur composer install === Désactiver Xdebug et relancer. == PHPUnit == === Les tests ne se lancent pas === Si phpunit.xml.dist utiliser un bootstrap.php, y ajouter <code>error_reporting(E_ALL);</code>. Sinon, si un var_dump() fonctionne dans le setUp() du test unitaire mais pas dans ses méthodes de test, c'est peut-être une exception qui se lance dans un trait ou dans le vendor PHPUnit. Pour la trouver, lancer l'application et regarder les logs (par exemple depuis un contrôleur). Sinon, si ça fonctionne en commentant le "extends", tester la classe mère pour y trouver l'exception. Sinon, dans Symfony, <code>tail var/log/test/mon_log.log</code>. Sinon, lancer Xdebug pour comprendre. === et echo() ou var_dump() dans les tests n'affiche rien === Lancer le test en mode le plus verbeux : * Avec le paramètre : -vvv * Modifier phpunit.xml.dist avec : ** <nowiki><server name="SHELL_VERBOSITY" value="3" /></nowiki><ref>https://symfony.com/doc/current/console/verbosity.html</ref> ** <nowiki><ini name="error_reporting" value="true" /></nowiki> === Les tests fonctionnels renvoient toujours 404 === Sur Symfony, <code>self::createClient()</code> appelle directement l'API sans serveur HTTP. Si on utilise phpunit dans symfony/phpunit-bridge, il va chercher sur example.com. Sinon il manque peut-être un trailing slash dans la route appelée. === Les tests se lancent mais s'arrêtent sans explication, en renvoyant "killed" === Un var_dump() sature la mémoire. === Did you forget a "use" statement for MaClasse ''ou'' Class 'MaClasse' not found === Si des classes existent mais que PHPUnit n'arrive pas à les charger : * Vérifier les namespaces racines définis dans composer.json par ''autoload'' et ''autoload-dev''. * Retirer ''suffix=".php"'' du phpunit.xml utilisé. === The .git directory is missing from... === Supprimer vendor/ et relancer composer. === THE ERROR HANDLER HAS CHANGED! === Plusieurs solutions possibles : * phpunit --self-update * Dans Symfony, changer phpunit.xml.dist avec SYMFONY_DEPRECATIONS_HELPER = weak_vendors * set_error_handler(array(&$this, 'handleGeoError')); * Si le projet Symfony a Sentry, on peut le retirer des tests dans bundles.php. === Trying to configure method "get" which cannot be configured because it does not exist, has not been specified, is final, or is static === Un mock ne récupère aucune méthode de sa classe car elle n'a pas pu être instanciée. * La casse du nom de la classe ou du namespace de son <code>use</code> n'est probablement pas exacte. * Sinon c'est la portée de la méthode mockée qui n'a pas publique. Si un dump du mock montre les attributs mais pas les méthodes, remplacer <code>->getMockForAbstractClass()</code> par <code>->getMock()</code>. * S'il s'agit d'une méthode finale, il faut la définir lors de l'instanciation du mock. Ex : <pre> $this->serializerMock = $this ->getMockBuilder(SerializerInterface::class) ->setMethods(['serialize', 'deserialize', 'decode']) ->getMock() ; $this->serializerMock ->method('decode') ->willReturn('') ; </pre> === Trying to @cover or @use not existing method === Si la méthode existe bien, c'est que la classe testée n'a pas été définie en annotation (avec son namespace) : <pre> /** * @coversDefaultClass App\Service\MyService */ class MyServiceTest extends TestCase { ... } </pre> === TypeError: Argument 1 passed to PHPUnit\Framework\TestCase::registerMockObjectsFromTestArguments() must be of the type array, null given === Si cela survient dans tous les tests qui invoquent un trait, retirer le constructeur de ce trait. === Warning No tests found in class "Xxx". === Si les méthodes de tests contiennent des assertions invisibles de PHPUnit, leur ajouter <code>/** @test */</code> pour afficher pourquoi ils ne se lancent pas. Par exemple, il peut s'agir d'un mock qui demande un constructeur. Si c'est normal de ne pas lancer de test dans une classe mère, la rendre abstraite ou statique. == Symfony == [[Image:Symfony 2.8 - Profiler.png|vignette|Profiler sous Symfony 2.8.|upright=2]] En cas d'erreur, un composant de débogage appelé "Profiler", est accessible en bas à gauche de la page d'erreur, avec des logs et mesures de performances. Installation : <pre> composer require --dev symfony/profiler-pack </pre> On peut par exemple accéder au phpinfo() via l'URL <u>.../_profiler/phpinfo</u>. {{attention|Le profiler fonctionne pour les contrôleurs mais pas pour les commandes.|clear=left}} === La première soumission d'un formulaire ne marche pas, mais les suivantes oui === Retirer le : <pre> $uow = $em->getUnitOfWork(); $uow->computeChangeSets(); </pre> === Le contrôle de formulaire avec name=‘xxx’ ne peut recevoir le focus. === Il s'agit généralement d'un champ caché : le passer en required=false ou faire en sorte qu'il soit toujours rempli même caché. === Le profiler n'affiche plus les réponses des appels HTTP === Lors de la migration de Symfony 7.3 à 7.4, le RetryableHttpClient ne permet plus au web profiler de capturer les contenus des réponses (on n'y trouve plus que leurs en-têtes). On peut donc passer http_client en <code>retry_failed: false</code> en env de dev pour corriger cela. === Un champ de formulaire ChoiceType n'affiche pas sa valeur par défaut, qui est pourtant dans la liste === La liste contient une clé d'un type different. Exemple de solution : <pre>'data' => (string) $myInteger,</pre> === Une route de contrôleur fonctionne dans un client HTTP mais pas dans un autre === Si $request est vide avec certains clients HTTP : * Utiliser HTTPS au lieu de HTTP. * Vérifier les paramètres d'en-tête HTTP (Accept: 'application/json' et Content-Type: 'application/json'). * Utiliser $request->getContent() ou ou $request->toArray() au lieu de $request->request<ref>https://silex.symfony.com/doc/2.0/cookbook/json_request_body.html</ref> (ça ne marche pas à la place de $request->query). === Une route de contrôleur fonctionne dans un client HTTP mais pas en PhpUnit, ex : No matching accepted Response format could be determined (406 Not Acceptable) === <pre> composer remove friendsofsymfony/rest-bundle </pre> === Un fichier téléchargé est toujours à 0 === Il est probablement trop volumineux et il faut donc le streamer sans le charger dans la RAM, en remplaçant <code>$fileContent = file_get_contents($localFilePath); new Response($fileContent);</code> par <code>$response = new BinaryFileResponse($localFilePath);</code>. === Attempted to load class "WebProfilerBundle" from namespace "Symfony\Bundle\WebProfilerBundle" === Si cela fonctionne avec "composer install" mais pas avec " composer install --no-dev", il faut définir <code>APP_ENV=prod</code> dans le .env. === Attempted to load class "�" from the global namespace === Bug d'encodage UTF8 lors du composer install : <pre> composer dump-autoload --no-scripts </pre> === Attribute "autowire" on service "xxx" cannot be inherited from "_defaults" when a "parent" is set. Move your child definitions to a separate file or define this attribute explicitly. === Lors d'utilisation de service abstrait, on ne peut pas utiliser l'autowiring. On peut alors {{w|lang=en|Composition over inheritance|transformer ce service abstrait en dépendance à injecter plutôt qu'à hériter}}. === Cannot autowire service... alors qu'il existe === Peut se produire : * quand le dossier de la classe est dans "App\.exclude" du services.yaml. * quand il n'est pas exclus et qu'on le déclare dans un .yaml importé dans services.yaml (donc en doublon de l'autowiring). Il faut alors soit le désactiver, soit exclure les namespaces concernés, soit déplacer ces déclarations dans services.yaml. * dans un bundle, si <code>$loader->load('services.yaml');</code> est bien effectué<ref>https://symfony.com/doc/current/bundles/configuration.html</ref>, alors le déclarer dans le services.yaml du bundle. Sinon, vérifier qu'il n'y a pas un chemin erroné dans l'extension prepend(). * Depuis Symfony 6.1 on peut utiliser l'attribut <code>#[Autowire]</code><ref>https://symfony.com/doc/current/service_container/autowiring.html</ref>. <pre> #[AsEventListener(event: KernelEvents::CONTROLLER)] class MyListener { public function __construct( private readonly Security $security, // exemple private readonly ControllerResolverInterface $controllerResolver ) { } } </pre> L'erreur est : <blockquote>Cannot autowire service "App\EventListener\MyListener": argument "$controllerResolver" of method "__construct()" references interface "Symfony\Component\HttpKernel\Controller\ControllerResolverInterface" but no such service exists. You should maybe alias this interface to one of these existing services: "debug.controller_resolver", "debug.controller_resolver.inner".</blockquote> La solution est d'écrire : <pre> #[AsEventListener(event: KernelEvents::CONTROLLER)] class MyListener { public function __construct( private readonly Security $security, // exemple #[Autowire(service: 'controller_resolver')] private readonly ControllerResolverInterface $controllerResolver ) { } } </pre> === Cannot load resource "../../src/Controller/". Make sure to use PHP 8+ or that annotations are installed and enabled. === <pre> composer require sensio/framework-extra-bundle </pre> === Circular reference detected === L'autoloader se heurte à un argument du constructeur d'une classe : il faut le sortir de la méthode <code>__construct()</code> pour le définir dans une méthode portant son nom. Exemple de déclaration en YAML : <pre> app.ma_classe: class: App\MaClasse arguments: - '@service.sans.probleme' calls: - method: setServiceAvecProbleme arguments: - '@service.avec.probleme' tags: - { name: doctrine.event_subscriber } </pre> ==== A circular reference has been detected when serializing the object ==== Idem en <code>fetch="EXTRA_LAZY"</code> dans l'entité. Pour résoudre cela sans changer de relation entre les entités, il y a plusieurs solutions : * Dans l'entité, ajouter <code>Symfony\Component\Serializer\Attribute\Ignore;</code> et <code>#[Ignore]</code> au dessus de l'attribut en erreur ** ou avant PHP 8 : <code>use Symfony\Component\Serializer\Annotation\Ignore;</code> et <code>/** @Ignore() */</code>. * Dans le contrôleur, éviter de renvoyer la réponse brute, mais filtrer les attributs avec <code>use Symfony\Component\Serializer\SerializerInterface;</code> et <code>$this->serializer->serialize($data, 'json', $context)</code>. === curl error 6 while downloading https://flex.symfony.com/versions.json: Could not resolve host: flex.symfony.com === <pre> composer update symfony/flex --no-plugins --no-scripts </pre> === CURLPIPE_HTTP1 is no longer supported === Si cela se produit sur un projet Symfony avec composer, il faut juste : <pre> composer global require symfony/flex ^1.5 rm -Rf vendor/symfony/flex </pre> === Environment variables "xxx" are never used. Please, check your container's configuration. === Pazsser par des variables intermédiaires dans services.yaml : <pre> yyy: '%env(xxx)%' </pre> === Error 400 Bad Request ''Your browser sent a request that this server could not understand.'' === Les règles de réécriture d'URL Apache sont erronées (voir ci-dessous). === Error 404 Not Found ''The requested URL /xxx was not found on this server.'' === Si la page d'accueil fonctionne mais pas les sous-pages (alors qu'un nom de domaine est déjà dédié au site dans le vhost), les règles de réécriture d'URL de la configuration Apache sont manquantes ou erronées. Il faut donc créer <code>public/.htaccess</code> : <pre> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] </IfModule> </pre> === Invalid header: CR/LF/NUL found === Un JSON envoyé en POST dans symfony/http-client contient des retours chariots inattendus : les retirer. Ex : <pre> $json = preg_replace("(\r?\n)", '', $json); </pre> === manifest.json does not exist === yarn install && yarn add --dev @symfony/webpack-encore && yarn build === Maximum function nesting level of '6000' reached === Si cela se produit par exemple en vidant le cache, c'est que deux services se renvoient la balle (même indirectement) depuis leurs constructeurs. === NetworkError when attempting to fetch resource (Firefox) / Failed to fetch (Chrome) === Dans l'API avec Swagger UI : violation du CQRS empêchant l'affichage du résultat de l'API dans /api/doc, à causes des domaines. Sur un domaine local, cela peut être résolu en changeant l'URL avant /api/doc pour qu'elle soit valide (ex : passer de wikibooks/api/doc à wikibooks.org/api/doc). Sinon réessayer en HTTP au lieu de HTTPS. Sinon c'est la clé renseignée (du .env) qui est différente de celle en BDD. Si le serveur Web est Nginx, retirer du vhost "add_header Access-Control-Allow-Origin *;" et "limit_exept". === request->request et request->query sont vides à tort === Utiliser $request->getContent() ou $request->toArray() à la place<ref>https://symfony.com/doc/5.4/components/http_foundation.html</ref>. === SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known === Un service inexistant ou avec des paramètres en erreur est appelé. Cela peut être provoqué par une variable d'environnement d'URL manquante ou erronée (ex : retirer le protocole, ou ajouter la version du SGBD). === SSL certificate problem: unable to get local issuer certificate === Utiliser l'installation avec "Composer.phar" plutôt que "Symfony.phar". === InvalidArgumentException Invalid env(bool:xxx) name: only "word" characters are allowed === Soit retirer la résolution "bool:" sur la variable d'environnement concernée, soit la renommer si elle contient des symboles autres que des lettres, des nombres ou underscore (ex : "=", "%", ":", etc.). === The autoloader expected class "App\MaClasse" to be defined in file "/var/www/.../MaClasse.php". The file was found but the class was not in it, the class name or namespace probably has a typo. === Revérifier que : * le fichier a bien l'extension .php * la balise ouvrante <code><?php</code> * comporte bien la classe du même nom à la majuscule prêt * avec le bon namespace et qui correspond aux dossiers (vérifiable dans la déclaration avec CTRL + clic dans PhpStorm). === Uncaught ReflectionException === Si c'est lors du passage de PHP 7 à 8, essayer de lancer le script sans Symfony pour avoir le détail (ex : utiliser PhpUnit directement au lieu de PhpUnit bridge). Cela peut par exemple provenir de return type différents entre une interface (ex : ArrayAccess) et son implémentation. === You have requested a non-existent parameter "kernel.secret". Did you mean this: "kernel.charset"? === À l'installation d'une dépendance, si les champs sont renseignés dans config/packages, alors c'est qu'ils ne sont pas chargé dans le bundle par Kernel.php. Peut se traduire aussi par des erreurs de chargement de bundle du type : ''The child config "x" under "y" must be configured.'' === "The controller for URI \"/api/ma_route/123\" is not callable: Controller \"MonController\" does neither exist a service nor as class." === Si <code>bin/console debug:autowiring --all</code> montre le service et <code>bin/console debug:route</code> la route, renseigner routes.yaml et vider le cache. Ex : <pre> index: methods: DELETE path: /api/ma_route/{id} controller: App\Controller\MonController::__invoke </pre> Si ça ne fonctionne pas, passer par un évènement sur la méthode générique. === Doctrine === ==== Le champ ne se sauvegarde pas en base ==== * Est-ce qu'il y a le flush après la modification du champ ? * Le cache Doctrine a-t-il bien été vidé depuis l'ajout du champ ? * Est-il bien dans la variable, sinon est-il mappé dans un formulaire ? * Est-il en annotation PHP alors que Symfony est configuré pour les attributs ? * Est-il qu'il y a eu un clear() avant le flush(), ce qui aurait détaché l'entité à sauvegarder ? ==== Le champ sauvegardé en base est toujours 0 ==== Se produit quand on utilise l'annotation <code>@ORM\GeneratedValue(strategy="IDENTITY")</code> sur un champ qui n'est pas ''AUTOINCREMENT'' en base de données. ==== A new entity was found through the relationship 'X' that was not configured to cascade persist operations for entity: X. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}) ==== * Dans le cas d'un Doctrine\ORM\ORMInvalidArgumentException: ** Si on est en train de supprimer une entité, il manque son retrait d'une collection au préalable (ex : <code>$entityToKeep->removeEntityToDelete($entityToDelete)</code>); ** Un service a un tag et un argument constructeur incompatible. Ce service en argument fait un $em->clear() au lieu de clear(object), ou persist(object) au lieu de merge(object). * Dans le cas "Multiple non-persisted new entities were found through the given association graph" ** Ajouter un persist dans l'entité ou avant le flush. ** Sinon, si c'est que le même flush qui est réalisé plusieurs fois : ajouter du cache d'instance pour ne pas ré-exécuter ce code. ** Sinon, si on tente de flusher une entité (directement ou à travers une jointure) récupérée par l’Entity Manager d'un replica SQL (donc pas encore répliquée), il faut utiliser la base de données maîtresse à la place, ou mieux : faire en sorte de ne pas récupérer les données qui viennent d'être flushées de la base, mais du code. ** Sinon, si un flush immédiatement après n'importe quel set provoque cela, diagnostiquer la cause avec : <pre> // Find previous creations (to flush before) $uow = $this->em->getUnitOfWork(); $uow->computeChangeSets(); foreach ($uow->getScheduledEntityInsertions() as $e) { if ($e instanceof X) { dump($e); } } // Find unmanaged objects in collection (to retrieve otherwise) foreach ($x->getYs() as $y) { dump( 'y', 'id=' . ($y->getId() ?? 'null'), 'managed=' . (int) $this->em->contains($y), 'oid=' . spl_object_id($y) ); } </pre> Par exemple le deuxième paragraphe peut voir des managed=1 avant un formulaire sans <code>'data_class' => X::class</code>, qui deviennent managed=0 après. ==== Binding an entity with a composite primary key to a query is not supported ==== Se produit quand on utilise la méthode magique find() d'un repository sur une entité qui a une clé composite (au moins deux attributs avec <code>@ORM\Id</code>). Il faut alors utiliser <code>findBy(['id' => xxx])</code>. ==== Call to undefined function Closure at EventDispatcher.php:299 ==== Ajouter dans composer.json : <pre> "conflict": { "symfony/symfony": "*", "doctrine/common": ">=3.0", "doctrine/persistence": "<1.3" }, </pre> Puis lancer "composer update". ==== Cannot autowire service "App\Components\CRM\Repository\MonRepository": argument "$class" of method "Doctrine\ORM\EntityRepository::__construct()" references class "Doctrine\ORM\Mapping\ClassMetadata" but no such service exists. ==== Se produit avec l'autowiring, quand on ajoute l'annotation vers un repo dans une entité. Ex : @ORM\Entity(repositoryClass="App\MonRepository") En fait depuis Doctrine 1.8<ref>https://www.it-swarm.dev/fr/php/service-autowire-impossible-largument-fait-reference-la-classe-mais-ce-service-nexiste-pas/836794307/</ref>, le repository doit étendre "ServiceEntityRepository" au lieu de "EntityRepository", et avoir un constructeur. Par exemple : <pre> use App\Entity\MonEntite; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Symfony\Bridge\Doctrine\ManagerRegistry; // anciennement Doctrine\Persistence\ManagerRegistry; class MonEntiteRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, MonEntite::class); } </pre> ==== Cannot select entity through identification variables without choosing at least one root entity alias ==== Retirer les <code>->addSelect()</code> du queryBuilder, ou utiliser <code>->from()</code>. ==== Class "App\Entity\X" seems not to be a managed Doctrine entity. Did you forget to map it? ==== On fait appel à une classe PHP comme si c'était une entité Doctrine : il faut simplement ajouter les annotations Doctrine à la classe, ou bien recréer la table à partir du code PHP. ==== Column not found: 1054 Unknown column 't0.xxx_id' in 'field list' ==== Il faut juse ajouter la colonne de jointure sous l'annotation *To*. Ex : <code>@ORM\JoinColumn(name="id", referencedColumnName="id_personne")</code> ==== Could not convert database value "2026-01-01 00:00:00" to Doctrine Type date. Expected format: Y-m-d ==== Se produit quand on sélectionne des données avec un type "DATETIME" dans la table MySQL mais "date" dans l'entité Doctrine. Il faut alors le passer en "datetime" aussi. ==== Could not find the entity manager for class '...' ==== Dans doctrine.yaml, retirer <code>type: annotation</code>. ==== Entity has to be managed or scheduled for removal for single computation ==== * Si remove : retirer le ON CASCADE DELETE de l’entité supprimée. * Si update : faire le add avant. ==== Entity of type 'App\\MonEntite' for IDs id(1) was not found ==== S'il s'agit de l'ID d'une entité jointe, le rendre nullable (<code>@ORM\JoinColumn(nullable=true)</code>)<ref>https://cilefen.github.io/symfony/2016/12/29/doctrine-orm-nulls.html</ref>. S'il s'agit d'une entité dont la clé primaire est une clé étrangère, lui ajouter : <pre> @ORM\GeneratedValue(strategy="NONE") </pre> ==== Entity of type App\\MonEntite is missing an assigned ID for field 'id'. ==== Une entité n'arrive pas à être sauvegardée avec un ID null (non auto-incrémenté). Il faut donc le générer (par exemple avec un <code>new UuidV4()</code>). Sinon vérifier que l'erreur ne vient pas d'un listener en sur <code>Doctrine\ORM\Events::prePersist</code> qui tente de persister l'entité récupérée via <code>$eventArgs->getEntity()</code>. ==== Invalid PathExpression. Must be a StateFieldPathExpression ==== Cela peut arriver quand on ajoute une clé étrangère dans un select sans sa jointure : <pre> $this->createQueryBuilder('user') ->select(['user.id', 'user.company']) </pre> On peut donc le remplacer par : <pre> $this->createQueryBuilder('user') ->select('user.id') ->leftJoin('user.company', 'u') </pre> Par contre, si on ne veut pas la jointure, utiliser "identity" : <pre> $this->createQueryBuilder('user') ->select(['user.id', 'identity(user.company) company']) </pre> ==== Iterate with fetch join in class xxx using association xxx not allowed ==== Soit on faut retirer les leftJoin des relations toMany(), soit remplacer PHP Generator par une pagination maison. ==== No alias was set before invoking getRootAlias() ==== Se produit soit : * Lors d'un <code>$qb = $this->entityManager->getEntityManager()->createQueryBuilder();</code> (sans alias comme dans : <code>$this->createQueryBuilder('me')</code> hérité de <code>EntityRepository</code>). Il faut alors rajouter un alias pour l'entité courante ainsi : <pre> $em->createQueryBuilder() ->select('me') ->from(MonEntite::class, 'me') </pre> * Ou pour un update où on répète à tort l'alias ('me') dans <code>update()</code> (ce qui peut aussi donner <code>Error: Class 'pn' is not defined</code> quand il n'y a pas de jointure) : <pre> $this->createQueryBuilder('me') ->update() ->set('me.isDeleted', 1) </pre> ==== Property \"metadata\" on resource \"App\\MonEntite\" is declared as a subresource, but its type could not be determined in ==== Survient quand une entité étend une autre sans discriminator<ref>https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/inheritance-mapping.html</ref>. ==== Single id is not allowed on composite primary key ==== Il est recommandé de remplacer la clé composite en ManyToOne par une clé autoincrémentée. ==== The association mon_entité1#entité2 refers to the owning side field mon_entité2#id which does not exist ==== Si l'entité 2 ne fait pas référence à l'entité 1, supprimer dans l'entité 1, champ entité2, le <code>mappedBy=</code>. ==== The class 'Doctrine\Common\Collections\ArrayCollection' was not found in the chain configured namespaces App\Entity ==== Il peut y avoir une entité avec une relation ManyToMany dans laquelle on met un ArrayCollection au lieu de l'entité demandée<ref>https://openclassrooms.com/forum/sujet/symfony2-collection-erreur-de-namespace</ref>. Sinon vérifier qu'on attend pas un PersistentCollection au lieu d'un ArrayCollection (ou vice-versa avec ->unwrap()). ==== The EntityManager is closed ==== Cela survient quand l'EntityManager rencontre une exception. On peut<ref>https://www.kerstner.at/2014/09/doctrine-2-exception-entitymanager-closed/</ref> : * la lever avec : <pre> if ($this->em->isOpen()) { $this->em->persist($entity); $this->em->flush($entity); } </pre> * recréer l'entityManager : <pre> if (!$this->em->isOpen()) { $this->em = $this->em->create( $this->em->getConnection(), $this->em->getConfiguration() ); } </pre> ==== The field xxx has the property type 'bool' that differs from the metadata field type 'int' returned by the 'integer' DBAL type ==== Se produit avec : <pre> bin/console doctrine:schema:validate </pre> Quand il trouve par exemple une option par défaut manquante. Ex : <pre> #[ORM\Column(type: 'boolean', nullable: true, options: ['default' => null])] </pre> ==== The identifier id is missing for a query ==== Se produit lors d'un repository->find(null). ==== The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue ==== Si le paramètre "server_version" est présent dans le {{wt|DSN}} "DATABASE_URL", l'ajouter, sinon le retirer. ==== The referenced column name 'xxx' has to be a primary key column on the target entity class ==== S'il n'est pas possible d'utiliser la clé étrangère comme clé primaire, retirer simplement la ligne : <pre> #[ORM\JoinColumn(name: 'my_id', referencedColumnName: 'my_id')] </pre> Mais ça peut provoquer un problème N+1... ==== The table with name 'xxx' already exists ==== Si cela survient lors du <code>bin/console doctrine:schema:validate</code>, create ou update sur une base vide, et qu'il n'y a pas de doublon dans le dossier "Entity"<ref>https://openclassrooms.com/forum/sujet/doctrine-schema-update-impossible</ref> : * Chercher les doublons dans d'autres namespaces. * Retirer les appels directs à la table de l'entité mal placés (<code>#[ORM\JoinTable(name: xxx</code>)). * Forcer la version du SGBD dans <code>DATABASE_URL</code>, en l'ajoutant dans <code>?serverVersion=</code>. * Dans le cas du validate, on peut ajouter <code>--skip-sync</code> pour bypasser cette partie du test. ==== Transaction commit failed because the transaction has been marked for rollback only ==== Se produit quand un flush() rencontre une erreur SQLSTATE (ex : colonne manquante, même d'une autre table, ou locks à cause d'UPDATE du même champ qui se répètent). * Le commenter pour la voir apparaitre. * Si elle n'apparait pas (ex : timeout), regarder directement [[MySQL/Parcourir_les_bases_de_données|dans les logs de la base de données]]. Cela peut être dû à la présence de deux attributs dans une entité, pointant vers la même colonne de sa table (ex : un ID de clé étrangère et son objet correspondant). ==== Uncaught PHP Exception Doctrine\Common\Proxy\Exception\UnexpectedValueException: "Your proxy directory "var/cache/prod/doctrine/orm/Proxies" must be writable" ==== Si cela se produit avec <code>APP_ENV=prod</code> et pas <code>dev</code> dans le .env : rm -Rf var/cache/ var/log ==== Uncaught Symfony\Component\Debug\Exception\UndefinedFunctionException: Attempted to call function "apc_fetch" ==== <pre> sudo pecl install apcu sudo pecl install apcu_bc sudo apt-get install -y php7.2-apcu php7.2-apcu-bc </pre> ==== Unexpected non-iterable value for to-many relation ==== Modifier la déclaration du champ en erreur avec un itérable. Ex : <pre> public $mesObjets = new ArrayCollection(); </pre> S'il n'y a pas de champ en erreur, il faut le retrouver avec <code>dd($type)</code> dans AbstractItemNormalizer. ==== Unknown database ==== Lancer ''doctrine:database:create'' : <pre> bin/console d:d:c </pre> Puis rajouter les éventuelles tables : <pre> bin/console doctrine:schema:update --force </pre> ==== Unrecognized field (ORMException) ==== Se produit quand un findBy de repository ne trouve pas un champ de son entité. Cela peut être résolu avec : * <code>bin/console cache:clear</code> * Vérifier si on ne recherche pas à tort une valeur sans sa clé (si ''Unrecognized field: 0''). * Passer par un QueryBuilder plutôt que par un find. * Ne pas faire hériter le repo de ServiceEntityRepository. ==== WARNING [cache] Failed to save key... "cache-adapter" => "Symfony\Component\Cache\Adapter\ApcuAdapter" ==== Ajouter <code>apc.enable_cli=1</code> dans le fichier <code>php.ini</code>. ==== DoctrineMigrations ==== ===== S'il n'exécute pas tout (sans logs même en -vvv) ===== Séparer en plusieurs migrations, notamment les créations de tables et de fonctions. ===== The schema provider is not available ===== Remplacer "connection" par "em" dans doctrine_migrations.yaml : <pre> doctrine_migrations: em: default </pre> ===== Syntax error or access violation ===== Il faut probablement échapper des caractères, par exemple avec la syntaxe heredoc ou $this->connection->quote(). === API Platform === ==== Invalid IRI ==== Ajouter le getId() dans l'entité récupérée par IRI. ==== InvalidArgumentException: "No item route associated with the type xxx ==== Se produit quand on a pas une route POST sans route GET<ref>https://github.com/api-platform/core/issues/3501</ref>, ou si le GET n'a pas d'ID pour créer des URI. Il faut donc en créer une, mais pas forcément besoin de créer un contrôleur : <pre> * @ApiResource( * itemOperations={ * "get"={ * "method"="GET", * "controller"=NotFoundAction::class, * "read"=false, * "output"=false, * }, * }, * ) </pre> ==== No identifiers defined for resource of type ==== <pre> /** * @ApiProperty(identifier=true) */ private $id; </pre> Si aucun ID n'est possible, en renvoyer "1" par exemple. ==== Unable to generate an IRI for ==== En général, rajouter un getId() dans l'entité. ==== The total number of joined relations has exceeded the specified maximum. Raise the limit if necessary with the \"api_platform.eager_loading.max_joins\" configuration key, or limit the maximum serialization depth using the \"enable_max_depth\" option of the Symfony serializer ==== Sur MySQL (ou MariaDB) il existe un maximum de 64 jointures. Donc s'il n'est pas possible d'augmenter max_joins, il faut limiter les jointures par les deux annotations suivantes : <pre> * @API\ApiSubresource(maxDepth=1) * @ORM\OneToMany(targetEntity="MonEntité", mappedBy="monChamp", fetch="EXTRA_LAZY") </pre> === Twig === ==== Un template Twig ne se rafraichit pas dans la navigateur ==== En local, dans .env, passer de <code>APP_ENV=prod</code> à <code>APP_ENV=dev</code>. Sinon vider le cache Symfony. ==== A hash key must be followed by a colon (:) ==== Il faut probablement mettre des parenthèses autour des variables dans un merge de tableau. Ex : myArray|merge([{(myKey): (myValue)}]) ==== Array to string conversion ==== Plusieurs solutions sont possibles pour afficher un tableau dans un template JSON. * Pour avoir un tableau, ajouter (et retirer les guillemets autour de la valeur si besoin) : <pre> "my_key": {{ my_value |json_encode(constant('JSON_PRETTY_PRINT'))|raw }}, </pre> voire : <pre> "my_key": {{ my_value |join(', ') }}, </pre> * Pour avoir un objet en chaine de caractères, faire le json_encode en amont puis laisser les guillemets : <pre> "my_key": "{{ my_value }}", </pre> ==== double quoted property ==== Une virgule de trop après une clé. ==== key \"id\" for array with keys \"0\" does not exist. ==== Appel d'une clé absente d'un tableau. ==== The CSRF token is invalid. Please try to resubmit the form ==== Cela peut arriver quand la session expire pendant qu'un formulaire est rempli, ou bien qu'un formulaire soit particulièrement long à être rempli. * Sur Symfony on peut changer la durée des sessions avec framework.session.cookie_lifetime: * Sinon dans php.ini : session.cookie_lifetime * Mais pour éviter ça dans un seul formulaire, on peut lui ajouter la ligne : <pre> public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ ... 'csrf_protection' => false, ]); } </pre> ==== unexpected token "punctuation" of value "{" ==== Au choix : * Ajouter les apostrophes aux clés du tableau concerné. * Ajouter des parenthèses à ses expressions. * Remplacer les accolades par des crochets pour le premier niveau. ==== xmlParseEntityRef: no name ==== Un "&" n'est pas échappé en XML. Il faut ajouter un filtre "| escape" en Twig pour le faire. == PhpStorm == Les logs sont accessibles par : tail -f ~/.PhpStorm2019.2/system/log/idea.log === Certains dossiers sont rouges (exclus) dans la navigation et l'indexation, alors qu'ils ne sont pas censés l'être === Fermer le projet, supprimer le .idea, et le rouvrir. === Impossible de CTRL + clic dans un .twig (chemin introuvable) === Vérifier que le plugin Symfony de PhpStorm est bien installé et activé. Si cela persiste, dans ''File\Settings\PHP\Symfony\Twig \ Template'', ajouter le chemin vers les .twig importés du bundle concerné. === L'historique Git d'un dossier est tronqué === Si <code>git log .</code> montre plus de commits que le clic droit / Git / Show history, alors cliquer sur Files / Invalidate Caches, et tout cocher. Si cela ne fonctionne pas après redémarrage, et que le projet fait partie d'un groupe de projets ouverts, le fermer (clic droit dessus et "Remove from project view"), puis le rouvrir. === Dans l'onglet Git, on ne voit pas la liste des fichiers modifiés === Dans Settings, Version Control, Commit, décocher "Use non-modal commit interface". === Un fichier a disparu des onglets, a un icône de point d'interrogation, et ne peut être rouvert === Il n'est pas ou plus associé à un type de fichier, aller dans ''File\Associate with File Type''. === incoming connection from xdebug === Lors d'une erreur au remplissage de cette pop-up, on peut la corriger dans .idea/workspace.xml. === No differences files that files have differences only in line separators === Les scripts lancés depuis PhpStorm sous Windows modifient les retours à la ligne (CLRF to LF). Changer l'option dans ''Settings/Preferences | Editor | Code Style | Line separator''<ref>https://stackoverflow.com/questions/40470895/phpstorm-saving-with-linux-line-ending-on-windows</ref> vers "System dependent". Sinon, configurer git : git config --global core.autocrlf true === Undefined class xxx === Une classe existe mais PhpStorm ne la voit pas : ajouter son dossier dans File\Settings\Directories, retirer l'exclusion (rouge) du dossier concerné. == Xdebug == Des logs Xdebug sont ajoutables dans le fichier <code>php.ini</code> : <pre> xdebug.remote_log = /var/www/xdebug.log xdebug.show_error_trace = 1 ; Profiling (enable via cookie or GET/POST variable: XDEBUG_PROFILE=1). xdebug.profiler_enable = 1 xdebug.profiler_enable_trigger = 0 xdebug.profiler_output_dir = /tmp/ ; var_dump() settings. xdebug.overload_var_dump = 1 xdebug.cli_color = 1 </pre> === En CLI, la console s'ouvre sur default_prepend.php et on ne voit pas l'exécution de la commande === Cela se produit quand plusieurs projets sont ouverts dans PhpStorm et que la commande n'appartient pas au principal. === Le navigateur déclenche bien le débogage pas à pas, mais on ne voit pas le fichier PHP dans l'IDE === Il manque le mapping (par exemple avec les routes du conteneur). Par exemple dans PhpStorm, Servers, cocher "Use path mappings" et le renseigner. === Messages d'erreur === ==== Cannot find file '/usr/local/php/php/auto_prepends/default_prepend.php' locally ==== Sous PhpStorm avec Docker, cliquer sous l'erreur pour modifier le ''path mapping''. ==== Code coverage needs to be enabled in php.ini by setting 'xdebug.mode' to 'coverage' ==== Pour éviter d'éditer le .ini, on peut remplacer : bin/phpunit --coverage-text par : php -dxdebug.mode=coverage bin/phpunit --coverage-text ==== Could not connect to client ==== Le serveur est introuvable, changer : * En V2, xdebug.remote_host ou remote_port. * En V3, xdebug.client_host ou xdebug.client_port. ==== Gateway Timeout ==== Cette erreur du navigateur généralement due au serveur Web. * Sur Apache, dans httpd.conf augmenter le nombre de secondes par défaut dans <code>Timeout 60</code><ref>https://www.h3xed.com/web-development/php-and-apache-504-gateway-timeout-troubleshooting-and-solutions</ref>. * Sur Nginx, augmenter <code>fastcgi_read_timeout 60s;</code><ref>http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_read_timeout</ref>. *Sur IIS, étendre la valeur du paramètre ''Activity Timeout'' des ''FastCGI Settings''<ref>https://www.leighton.com/blog/php-debugging-in-phpstorm-6-0-with-xdebug/</ref>. * Cela peut aussi provenir d'un load balancer en amont du serveur HTTP. De plus, on peut aussi revoir les variables du fichier <code>php.ini</code>. Ex : <pre> max_execution_time=30 # 30 s par défaut max_input_time=-1 # Utilisera "max_execution_time" si -1, sinon la valeur indiquée </pre> ==== Failed to read FastCGI header ==== Si le log Apache affiche cela lors d'un ''Gateway Timeout'', il faut ajouter à httpd.conf<ref>https://support.plesk.com/hc/en-us/articles/115000064929-Website-is-not-accessible-The-timeout-specified-has-expired-Error-dispatching-request-to</ref> : <pre> ProxyTimeout 6000 <IfModule mod_fcgi.c> FcgidProcessLifeTime 6000 FcgidBusyTimeout 6000 FcgidConnectTimeout 6000 FcgidIdleTimeout 6000 FcgidInitialEnv 6000 FcgidIOTimeout 6000 IdleTimeout 6000 IPCConnectTimeout 6000 IPCCommTimeout 6000 IdleScanInterval 6000 </IfModule> </pre> Parfois il convient aussi de modifier le fichier <code>php.ini</code><ref>https://www.reddit.com/r/drupal/comments/ase67i/for_issue_reference_service_unavailable_error/</ref> : <pre> opcache.optimization_level=0xFFFFFBFF xdebug.remote_cookie_expire_time=6000 </pre> Enfin, sur PhpStorm on rencontre cela dans le cas de sous-requêtes qui dépassent la valeur du paramètre "Max. simultaneous connections". ==== No code coverage driver is available ==== Installer ou activer [[../Xdebug|Xdebug]]. Il doit apparaitre ensuite dans <code>php -v</code>. ==== Remote file path 'default_prepend.php' is not mapped to any file path in project ==== Sous PhpStorm il faut décocher dans les ''settings'', ''debug'', les deux cases ''Force break...'', puis de redémarrer l'IDE<ref>https://www.jetbrains.com/help/phpstorm/troubleshooting-php-debugging.html</ref>. ==== Time-out connecting to client ==== Changer xdebug.remote_host ou xdebug.remote_port car le serveur existe mais n'écoute pas le port spécifié. Si le navigateur ne déclenche plus le débogage sur l'IDE, alors que ce dernier écoute et que la clé du navigateur est bien définie, c'est peut-être le pare-feu qui bloque. Exemple de reset sur Linux avec [[Le système d'exploitation GNU-Linux/Protection avec iptables|iptables]]<ref>https://ubuntuforums.org/showthread.php?t=1381516</ref> : <pre> iptables --policy INPUT ACCEPT; iptables --policy OUTPUT ACCEPT; iptables --policy FORWARD ACCEPT; iptables -Z; # zero counters iptables -F; # flush rules iptables -X; # delete all extra chains </pre> ==== Waiting for incoming connection with ide key 'xxx' ==== Xdebug peut marcher pour certains sites, sauf un qui ne déclenche rien dans l'IDE. Ce message apparait alors dans PhpStorm si on clique sur "Debug". * Vérifier le serveur et son port) associé à l'URL<ref>https://stackoverflow.com/questions/17715128/xdebug-phpstorm-waiting-for-incoming-connection-with-ide-key</ref>. * Voir la page [[Programmation PHP/Xdebug]]. == GraphQL == === Fields "maRoute" conflict because they have differing arguments. Use different aliases on the fields to fetch both if this was intentional. === Si on appelle plusieurs fois la même route dans la même requête, il faut définir des alias. Ex : <pre> mutation { maRoute(...) aliasMaRoute: maRoute(...) } </pre> Le résultat de la requête sera donc un tableau avec ['data' => [[maRoute => ...], [aliasMaRoute => ...]]. == Windows == === imagecreatefromstring(): gd-png: libpng warning: Interlace handling should be turned on when using png_read_image === Remplacer le php_gd2.dll du PHP 7.4.33 par celui du 7.4.2 téléchargé depuis https://www.pconlife.com/viewfileinfo/php-gd2-dll/. Exemple du chemin par défaut : C:\wamp64\bin\php\php7.4.33\ext\ == Références == {{Références}} <noinclude>[[Catégorie:Messages d'erreur]]</noinclude> rvxc6kttb9h1kk1o24jmufkwpdnduip Python pour le calcul scientifique/Graphiques 0 72920 772220 752687 2026-09-15T07:33:51Z Cdang 1202 /* Annotations */ précisions 772220 wikitext text/x-wiki Rappel : les programmes commencent par : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt </syntaxhighlight> Nous avons déjà vu un premier tracé élémentaire : ''[[../Découverte de Python et de Jupyter#Premier tracé graphique|Découverte de Python et de Jupyter &gt; Premier tracé graphique]]'' ; nous en présentons un autre plus loin : ''[[../Statistiques#Fréquence, histogramme|Statistiques &gt; Fréquence, histogramme]]''. {| class="wikitable" border="0" |- | <syntaxhighlight lang="python"> x = np.arange(0, 2, 0.1) y = x**2 plt.plot(x, y, label="y = x^2") plt.xlabel("x") plt.ylabel("y") plt.title("Graphes de fonctions") plt.legend() plt.show() </syntaxhighlight> | [[Fichier:Graphe fct carre Python Matplotlib Jupyter.png|300px]] |- | <syntaxhighlight lang="python"> M = np.random.randn(50) plt.plot(M, np.ones_like(M), "|") plt.hist(M, bins=10, density=1) plt.show() </syntaxhighlight> | [[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|300px]] |} Nous allons approfondir le sujet. == Concepts de base == === Exemple === [[Fichier:Nomenclature figure python matplotlib fct trigo.svg|thumb|upright=2.5|Nom des différents objets constituant une figure de Python/Matplotlib.]] Considérons un tracé un peu plus avancé : il consiste en deux graphiques représentant les graphes des fonctions cosinus et sinus. Voici deux manières de le réaliser : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) fig, liste_axes = plt.subplots(2, 1, layout="constrained") fig.suptitle("Fonctions trigonométriques") liste_axes[0].plot(x, ycos) liste_axes[0].set_title("cosinus") liste_axes[0].set_xlabel("x") liste_axes[0].set_ylabel("y") liste_axes[1].plot(x, ysin) liste_axes[1].set_title("sinus", pad = 5) liste_axes[1].set_xlabel("x") liste_axes[1].set_ylabel("y") plt.savefig("fonctions_trigo_pyplot.svg", format="svg") </syntaxhighlight> Ou bien <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) plt.subplots(layout="constrained") plt.suptitle("Fonctions trigonométriques") plt.subplot(2, 1, 1) plt.plot(x, ycos) plt.title("cosinus") plt.xlabel("x") plt.ylabel("y") plt.subplot(2, 1, 2) plt.plot(x, ysin) plt.title("sinus", pad = 5) plt.xlabel("x") plt.ylabel("y") </syntaxhighlight> === Analyse === ==== Première manière ==== La création de deux graphiques se fait avec la commande <code lang="python">plt.subplot()</code> à laquelle on indique le fait qu'il y a 2 lignes et 1 colonne ; le paramètre <code lang="python">layout="constrained"</code> permet d'avoir une meilleure mise en page. Cette commande retourne deux identifiants : <code lang="python">fig</code>, l'identifiant de la figure, et <code lang="python">liste_axes</code>, les identifiants des deux sous-figures. La méthode <code lang="python">.suptitle()</code> permet de créer un titre général. Pour chaque sous-figure (classe {{lang|en|<code>Axes</code>}}, que l'on pourrait traduire par « système d'axes »), on utilise les méthodes <code lang="python">.plot()</code>pour tracer une courbe, <code>.set_title()</code> pour lui donner un nom et les méthodes <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code> pour les titres des axes. La fonction <code lang="python">plt.savefig()</code> permet d'enregistrer la figure dans un fichier, ici au format [[Découvrir le SVG|SVG]]. Au lieu d'utiliser une matrice <code>liste_axes</code>, on peut aussi utiliser un n-uplet : <syntaxhighlight lang="python"> fig, (axes0, axes1) = plt.subplots(2, 1, layout="constrained") […] axes0.plot(x, ycos) […] axes1.plot(x, ysin) </syntaxhighlight> L'image est constituée de plusieurs objets. Il y en a de deux types : * les contenants qui permettent la mise en page : <code lang="python">Figure</code> (la figure)<ref>{{lien web |url=https://matplotlib.org/stable/api/figure_api.html |titre=matplotlib.figure |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> et <code>Axes</code> (les systèmes d'axes)<ref>{{lien web |url=https://matplotlib.org/stable/api/axes_api.html |titre=matplotlib.axes |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> ; * les primitives : ce sont les objets qui sont tracés à l'écran, essentiellement les <code>Line2D</code> (les courbes)<ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html |titre=matplotlib.lines.Line2D |site=Matplotlib.org |consulté le=2022-05-03}}.</ref>. La <code lang="python">Figure</code> est un grand contenant, c'est lui qui contient tout le dessin ; on parle parfois de « toile » ''({{lang|en|canvas}})''. Les <code>Axes</code> sont les différentes sous-figures ; il y en a ici 2. Les <code lang="python">axis</code> (« axe » en français) — à ne pas confondre avec le terme <code lang="python">Axes</code> précédent — sont au nombre de deux par <code lang="python">Axes</code> : l'axe de ''x'' (<code lang="python">XAxis</code>) et l'axe des ''y'' (<code lang="python">YAxis</code>). ==== Seconde manière ==== Chaque graphique est créé par la fonction <code lang="python">plt.subplot(2, 1, 1)</code>. Les paramètres sont trois nombres : le nombre de lignes du tableau de figures, le nombre de colonnes de ce tableau, et le numéro de la cellule au sein du tableau en suivant le sens de lecture latin (de gauche à droite et de haut en bas). La création des graphiques est précédée de deux fonctions : <code lang="python">plt.subplots(layout="constrained")</code> qui impose une répartition harmonieuse des graphiques, et <code lang="python">plt.suptitle()</code> qui permet d'écrire un titre général. Pour chaque graphique, on a les fonctions : * <code lang="python">plt.plot()</code> qui tracent le graphique ; * <code lang="python">plt.title()</code> qui donnent un titre à chaque graphique ; * <code lang="python">plt.xlabel()</code> et <code lang="python">plt.ylabel()</code> qui nomment les axes. === Styles de codage « pyplot » et « OO » === On voit qu'il y a aussi deux styles de codage, deux manières de rédiger. La première est la manière « pyplot » : la figure est décrite comme un automate fini ''({{lang|en|state machine}})'', elle ne peut avoir qu'un nombre fini d'états et les fonctions font des transitions entre deux états. On utilise aussi l'expression « à la manière de Matlab ». On utilise des fonctions de l'espace de nom <code lang="python">matplotlib.pylot (plt)</code>, ici : <code lang="python">plt.subplots()</code>, <code lang="python">plt.savefig()</code> et dans les exemples précédents, <code>plt.plot()</code>, <code>plt.hist()</code lang="python">, <code lang="python">plt.xlabel()</code>, <code lang="python">plt.ylabel()</code>, <code lang="python">plt.title()</code>, <code lang="python">plt.legend()</code> et <code lang="python">plt.show()</code>. La seconde manière est la manière « orientée objet » (OO) : comme nous avons défini des objets (la <code lang="python">Figure</code>, les <code lang="python">Axes</code>), nous pouvons utiliser des méthodes spécifiques à ces classes. C'est ainsi que nous avons les méthodes <code lang="python">fig.suptitle()</code>, <code lang="python">liste_axes[:].plot()</code>, <code lang="python">.set_title()</code>, <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code>. Dans la manière OO, il faut donc connaître les identifiants des objets pour pouvoir utiliser leurs méthodes. La manière la plus simple est de créer explicitement les objets et d'assigner leur identifiant à des variables à cette occasion, par exemple : <syntaxhighlight lang="python"> fig, sysAxes = plt.subplots(1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = fig.add_subplot(1, 1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou encore <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = plt.axes() courbe = sysAxes.plot(x, y) </syntaxhighlight> L'autre manière consiste à laisser pyplot tout créer tout seul, puis à récupérer les identifiants : <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes courbe = sysAxes.lines[0] </syntaxhighlight> ou bien <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = fig.axes[0] courbe = sysAxes.lines[0] </syntaxhighlight> == Mise en forme d'une courbe == Considérons une courbe unique. Nous pouvons changer l'apparence de la courbe en passant des paramètres lors de sa création. La première manière consiste à utiliser une chaîne de caractères comprenant : * une lettre pour la couleur : <code>k</code> pour le noir ''({{lang|en|blac'''k''')}}'', <code>y</code> pour jaune ''({{lang|en|yellow)}}''… * un ou deux caractères pour le type de trait : <code>-</code> pour un trait continu, <code>--</code> pour un trait discontinu… * un caractère pour la forme des marqueurs : <code>o</code> pour des ronds, un <code>s</code> pour un carré ''({{lang|en|square)}}'', un <code>d</code> pour un losange ''({{lang|en|diamond}})'', un <code>v</code> ou un <code>^</code> pour un triangle pointe en bas ou en haut… Par exemple : <syntaxhighlight lang="python"> plt.plot(x, y, "r--") # trait discontinu rouge axes0 = plt.axes() axes0.plot(x, y, "go") # cercles verts </syntaxhighlight> {| class="wikitable" |+ Caractères de mise en forme de courbe |- ! colspan="2" scope="col" | Couleur ! colspan="2" scope="col" | Marqueur |- ! scope="col" | Caractère || Couleur ! scope="col" | Caractère || Symbole |- | <code>b</code> || bleu | <code>.</code> || point • |- | <code>g</code> || vert | <code>,</code> || point d'un pixel ⋅ |- | <code>r</code> || rouge | <code>o</code> || cercle ○ |- | <code>c</code> || cyan | <code>v</code> || triangle pointe en bas ▽ |- | <code>m</code> || magenta | <code>^</code> || triangle pointe en haut △ |- | <code>y</code> || jaune | <code>&lt;</code> || triangle pointe à gauche ◁ |- | <code>k</code> || noir | <code>&gt;</code> || triangle pointe à droite ▷ |- | <code>w</code> || blanc | <code>s</code> || carré □ |- ! colspan="2" scope="col" | Style de ligne | <code>p</code> || pentagone |- ! scope="col" | Caractère || Style | <code>1</code> à <code>4</code> || étoile à trois branches de différentes orientations |- | <code>-</code> || ligne continue | <code>*</code> || étoile ✭ |- | <code>--</code> || ligne discontinue | <code>h</code>, <code>H</code> || hexagone sur la pointe ⬢ ou sur le plat ⬣ |- | <code>-.</code> || trait mixte | <code>+</code> || croix droite + |- | <code>:</code> || trait pointillé | <code>x</code> || croix de saint André × |- | || | <code>D</code>, <code>d</code> || losange carré ◇ ou étroit ◊ |- | || | <code><nowiki>|</nowiki></code> || trait vertical <nowiki>|</nowiki> |- | || | <code>_</code> || trait horizontal — |} Notez la différence entre <code>".-"</code> qui affiche à la fois un marqueur point et un trait continu, et <code>"-."</code> qui crée un trait mixte. '''Méthodes avancées''' Il est possible de passer les paramètres de manière plus explicite : <syntaxhighlight lang="python"> plt.plot(x, y, color="b", linestyle="dashed", marker="o") </syntaxhighlight> L'attribut <code>color</code> peut être spécifié de plusieurs manières : * par une lettre, comme ci-dessus ; * par un mot, le nom de la couleur ; il y a une cinquantaine de nom définis comme par exemple <code>blue</code>, <code>lightblue</code>, <code>darkblue</code>, <code>grey</code>, <code>chocolate</code>, <code>fuschia</code><ref>voir {{lien web | url = https://matplotlib.org/tutorials/colors/colors.html | titre = Specifying colors | site = Matplotlib | lang = en | consulté le = 2019-03-30 }}.</ref>… * avec le nom de la couleur dans la palette T10 ; les dix noms sont <code>tab:blue</code>, <code>tab:orange</code>, <code>tab:green</code>, <code>tab:red</code>, <code>tab:purple</code>, <code>tab:brown</code>, <code>tab:pink</code>, <code>tab:gray</code>, <code>tab:olive</code> et <code>tab:cyan</code> ; ce sont les couleurs utilisées par défaut ; * par un code RVB, les composante R, V et B étant indiquées en hexadécimal entre <code>00</code> et <code>FF</code> : <code>color = "#00FF00"</code> (bleu) ; on peut utiliser le canal alpha en quatrième composante (RVBA) : <code>color = "#00FF0080"</code> ; la composante A va de <code>00</code> pour du parfaitement transparent à <code>FF</code> pour du totalement opaque. L'attribut <code>linestyle</code> peut être indiqué par des caractères comme précédemment ; on peut également utiliser les noms : <code>dashed</code> (discontinu), <code>dashdot</code> (mixte), <code>dotted</code> (pointillés), <code>solid</code> (continu) ou bien <code>None</code> ou une chaîne vide (pas de tracé). On peut ajouter d'autres attributs, en particulier * <code>linewidth</code> ou <code>lw</code> qui définit l'épaisseur du trait ; * <code>linestyle</code> ou <code>ls</code> qui définit le style du trait ; peut prendre les valeurs <code>"solid"</code> (<code>"-"</code>), <code>"dotted"</code> (<code>":"</code>), <code>"dashed"</code> (<code>"--"</code>) ou <code>"dashdot"</code> (<code>"-."</code>) ;<br /> le paramètre peut aussi prendre un n-uplet <code>(décalage, (longeur, espace))</code> ou <code>(décalage, (longeur1, espace1, loongueur2, espace2))</code> (une longueur de 1 désigne un point) ; * <code>dashes</code> : permet de définir un trait discontinu avec un doublet (2-uplet) indiquant le nombre de points affichés et le nombre de points non-affichés, par exemple <code>dashes=(4, 2)</code> ; on peut alterner plusieurs couples comme <code>dashes=(8, 2, 4, 2)</code> * <code>markeredgecolor</code> : couleur du trait du symbole marqueur ; * <code>markeredgewidth</code> : épaisseur du trait du symbole marqueur (en points) ; * <code>markerfacecolor</code> : couleur de remplissage du symbole marqueur ; * <code>fillstyle</code> : permet de ne remplir qu'une moitié du symbole marqueur ; prend les valeurs <code>top</code>, <code>right</code>, <code>bottom</code> et <code>left</code> pour indiquer la moitié remplie ; * <code>markersize</code> : taille du symbole marqueur (en points). Avec le style de codage orienté objet, cela donne : <syntaxhighlight lang="python"> courbe = plt.plot(x, y) courbe[0].set_linestyle("--") # ou bien courbe, = plt.plot(x, y) courbe.set_linestyle("--") # ou encore plt.plot(x, y) axes = plt.gca() courbe = axes.lines[0] courbe.set_linestyle("--") </syntaxhighlight> Les principales méthodes des objets Line2D sont : <code>.set_color()</code>, <code>.set_linestyle()</code>, <code>.set_linewidth()</code>, <code>.set_dashes()</code>, <code>.set_marker()</code> et tous les <code>.set_marker…()</code> (<code>edgecolor</code>, <code>edgewidth</code><code>facecolor</code>, <code>size</code>). ; Ressources * {{lien web | url = https://matplotlib.org/tutorials/introductory/pyplot.html | titre = Pyplot tutorial | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot | titre = matplotlib.pyplot.plot | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle | titre = matplotlib.lines.Line2D.set_linestyle | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} == Annotations == Nous parlons ici le fait de placer des annotations sur une figure et non pas la notion d'annotation en programmation. Il est possible de placer du texte avec la commande <code>plt.text(x, y, chaine)</code> où (''x'', ''y'') sont les coordonnées, dans le repère du tracé, où l'on veut placer le texte, et ''chaine'' est une chaîne de caractères. On peut modifier l'orientation de ce texte avec le paramètre <code lang="python">rotation</code> exprimé en degrés, par exemple : <syntaxhighlight lang="python"> plt.text(0, 0, "origine", rotation=90) </syntaxhighlight> Par ailleurs, la classe <code>Axes</code> dispose d'une méthode <code>.annotate()</code> ; on peut aussi utiliser la fonction <code>plt.annotate()</code>.. Dans sa forme la plus simple, on indique une chaîne correspondant à l'étiquette et un doublet (2-uplet) ou une liste indiquant les coordonnées où placer l'étiquette. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) courbe = plt.plot(x, ycos) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes ymin = ycos.min() # trouve la veleur minimale de ycos imin = ycos.argmin() # trouve l'indice correspondant au minimum xmin = x[imin] sysAxes.annotate("min", (xmin, ymin)) </syntaxhighlight> Telle quelle, l'étiquette empiète sur la courbe. On peut placer l'étiquette à des coordonnées particulières avec l'attribut <code>xytext</code> cet attribut reçoit un doublet ou une liste de coordonnées (''x'', ''y''). Par ailleurs, on peut relier l'étiquette au point visé avec l'attribut <code>arrowsprop</code> (''{{lang|en|arrow's properties}}'', propriétés de la flèche). Cet attribut reçoit un dictionnaire de propriétés, <code>arrowsprop=dict(…)</code> ou bien <code>arrowsprop={…}</code>. Par exemple, pour avoir simplement un trait, ce dictionnaire contient <code>arrowstyle="-"</code> ; pour une flèche, <code>arrowstyle="->"</code> ou <code>arrowstyle="<-"</code>, et pour une flèche double <code>arrowstyle="<->"</code>. Par exemple, avec l'exemple précédent : <syntaxhighlight lang="python"> sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops=dict(arrowstyle="->")) # ou bien sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops={"arrowstyle":"->"}) </syntaxhighlight> ; Ressource : {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html | titre = matplotlib.axes.Axes.annotate | lang = en | site = Matplotlib | consulté le = 2019-04-07 }} == Autres exemples de tracés 2D == [[Fichier:Sinus trace matplotlib escalier batons fleches.svg |vignette |Trois types de tracés de la fonction sinus avec Python/Matplotlib]] Par exemple avec : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = np.sin(x) fig, listeAxes = plt.subplots(3, 1, layout="constrained") # Tracé en escalier listeAxes[0].step(x, y) # tracé en bâtons listeAxes[1].bar(x, y, width = 0.03) # Tracé en flèches listeAxes[2].quiver(x[:-1], y[:-1], np.diff(x), np.diff(y), scale_units="xy", scale=1, angles="xy", width=0.02) </syntaxhighlight> == Gestion des échelles == Pour fixer les valeurs extrêmes des axes, on utilise les commandes <code lang="python">plt.xlim(''min'', ''max'')</code> et <code lang="python">plt.ylim(''min'', ''max'')</code>. Pour avoir une échelle logarithmique, respectivement en ''x'' et en ''y'', on utilise les commandes <code lang="python">plt.xscale("log")</code> et <code lang="python">plt.yscale("log")</code>. Ces fonctions peuvent recevoir les paramètres suivants : * <code>linear</code> : échelle linéaire (valeur par défaut) ; * <code>log</code> : échelle logarithmique ; * <code>symlog</code> : échelle logarithmique symétrique, c'est-à-dire avec la transformation <math>\mathrm{Y} = \sgn(y) \cdot \log_{10}(1 + |y/\mathrm{C}|)</math> avec C = 1/ln(10) ; nous avons ainsi des valeurs positives et négative sans avoir la singularité en 0 ; * <code>logit</code> : l'échelle est transformée par la fonction [[w:fr:Logit|logit]]. On peut superposer une grille avec la commande <code lang="python">plt.grid(True)</code>. S'il y a trop de graduations sur un axe, on peut réduire le nombre de graduations avec : <syntaxhighlight lang="python"> from matplotlib.ticker import NullFormatter # […] plt.gca().yaxis.set_minor_formatter(NullFormatter()) </syntaxhighlight> On peut imposer les valeurs graduées : <syntaxhighlight lang="python"> plt.gca().set_xticks([0, 1, 2, 3]) </syntaxhighlight> On peut imposer le fait d'avoir les mêmes échelles en ''x'' ou en ''y'' avec les mots-clefs <code lang="python">sharex</code> et <code lang="python">sharey</code>. Par exemple : <syntaxhighlight lang="python"> fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig, axs = plt.subplots(2,1, sharex=True) </syntaxhighlight> Si l'on veut que l'échelle en ''x'' soit la même que l'échelle en ''y'', on peut utiliser la méthode <code lang="python">set_aspect()</code><ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html |titre=matplotlib.axes.Axes.set_aspect |site=Matplotlib.org |consulté le=2022-05-03}}</ref> des objets <code lang="python">axes</code>, par exemple <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> Si l'on veut que le graphique soit carré, on utilise le mot-clef <code lang="python">square</code> de l'objet <code lang="python">axis</code> : <syntaxhighlight lang="python"> plt.axis("square") </syntaxhighlight> Si l'on veut que les échelles sur les axes ''x'' et ''y'' soient de pas identiques, par exemple pour qu'un carré soit un carré et un demi-cercle ne soit pas une demie ellipse, on utilise : <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> == Plusieurs courbes sur un même système d'axes == Pour mettre plusieurs courbes sur un même système d'axes, on peut soit les créer les unes après les autres : <syntaxhighlight lang="python"> plt.plot(x1, y1) plt.plot(x2, y2) </syntaxhighlight> Soit les mettre dans la même commande : <syntaxhighlight lang="python"> plt.plot(x1, y1, x2, y2) </syntaxhighlight> Matplotlib définit lui-même des couleurs différentes. On peut bien évidemment forcer le style des courbes. On peut également ajouter une étiquette ''({{lang|en|label}})'' qui sera ensuite affichée dans la légende : <syntaxhighlight lang="python"> plt.plot(x1, y1, "k", label="courbe 1") plt.plot(x2, y2, "b", label="courbe 1") plt.legend() # ou bien courbes = plt.plot(x1, y1, "k", x2, y2, "b") courbes[0].set_label("courbe 1") courbes[1].set_label("courbe 2") plt.legend() # ou bien courbes = plt.plot(x1, y1, x2, y2) courbes[0].set(color="k", label="courbe 1") courbes[1].set(color="b", label="courbe 2") plt.legend() </syntaxhighlight> On peut choisir l'emplacement de la légende avec le paramètre <code lang="python">loc</code> qui peut prendre les valeurs <code lang="python">"upper left"</code>, <code lang="python">"upper center"</code>, <code lang="python">"upper right"</code>, <code lang="python">"center left"</code>… la valeur est composée de deux adjectifs : * premier adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">upper</code> signifie en haut, ** <code lang="en">lower</code> signifie en bas ; * second adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">left</code> signifie à gauche, ** <code lang="en">right</code> signifie à droite. Par exemple : <syntaxhighlight lang="python"> plt.legend(loc="upper right") </syntaxhighlight> Si l'on veut des courbes avec des échelles en ''y'' différentes, il faut créer un axe ''x'' « jumeau » ''({{lang|en|twin}})'' avec la méthode <code>.twinx()</code>. Par exemple : <syntaxhighlight lang="python"> fig, axe = plt.subplots(figsize=(5, 5)) plt.suptitle("Chargement") axe2 = axe.twinx() axe.plot(forces) axe.set_xlabel("Étape") axe.set_ylabel("F (N)") axe2.plot(contraintes) axe2.set_ylabel("σ (MPa)") </syntaxhighlight> == Tracé polaire == [[Fichier:Courbe polaire rayon aleatoire python matplotlib.svg |vignette |Exemple de courbe polaire avec Python/Matplotlib.]] [[File:Rose des vents exemple Python.svg|thumb|Rose des vents avec des données arbitraires, utilisé pour un exemple de création de graphique avec le langage Python/Matplotlib.]] Un tracé polaire s'obtient avec la commande <code>plt.polar()</code>, par exemple : <syntaxhighlight lang="python"> theta = np.linspace(0, 2*np.pi, 20) # angle r = 1 + 0.2*np.random.randn(20) # rayon plt.polar(theta, r) # courbe polaire </syntaxhighlight> Voici un exemple avec deux courbes superposées et une mise en forme des graduations et de la légende : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt # ************** # * Constantes * # ************** # positions angulaires angles = 2*np.pi*np.linspace(0, 1, 9) # huitièmes de cercle radDeg = 180/np.pi # conversion radians → degrés etoile = np.array([1, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1]) # Tracé de l'étoile vents = np.array([2.85, 3.34, 5.2, 4.025, 4.9, 9.63, 7.5, 2.35, 2.85]) # Fréquence (unité arbitraire) vents = vents/vents.max() # normalisation # *********** # * Traçage * # *********** courbes = plt.polar(angles, etoile, angles, vents) # tracé # mise en forme axes = plt.gca() courbes[0].set(color="gray") courbes[1].set(color="b", label="Fréquence des vents") plt.legend(bbox_to_anchor=(1.45, 1.05), loc="upper right") # affichage à l'extérieur du tracé axes.set_rticks([0.2, 0.4, 0.6, 0.8, 1]) # graduations radiales axes.set_thetagrids(angles=radDeg*angles[0:-1], labels=("E", "NE", "N", "NO", "O", "SO", "S", "SE")) # graduations angulaires plt.title("Rose des vents") plt.savefig("rose_des_vents.svg", format="svg") plt.show() </syntaxhighlight> == Cartes de valeurs et de vecteurs == [[File:Cartes couleur sinFoisSin python matplotlib.svg|thumb|Lignes de niveau et cartes couleur de ''z'' = sin(''x'') × sin(''y'') par Python/Matplotlib.]] Lorsque l'on a une surface dans un espace à trois dimensions, de type ''z'' = ƒ(''x''&htinsp;, ''y''&thinsp;), on peut afficher les données sur la forme d'une carte : * lignes de niveau : on utilise la fonction <code>np.contour()</code> ; * surfaces de niveau : <code>np.contourf()</code> ; * carte de couleurs : <code>np.pcolormesh()</code>. La fonction <code>colorbar()</code> permet d'afficher l'échelle de couleurs. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) fig, liste_axes = plt.subplots(2, 2, layout="constrained") im1 = liste_axes[0, 0].contour(X, Y, Z) fig.colorbar(im1, ax=liste_axes[0, 0]) im2 = liste_axes[0, 1].contourf(X, Y, Z) fig.colorbar(im2, ax=liste_axes[0, 1]) im3 = liste_axes[1, 0].pcolormesh(X, Y, Z) fig.colorbar(im3, ax=liste_axes[1, 0]) </syntaxhighlight> La palette de couleurs ''({{lang|en|color map}})'' par défaut est ''viridis''. On peut choisir d'autres palettes de couleur avec le paramètre <code>cmap</code> : <syntaxhighlight lang="python"> im3 = liste_axes[1, 0].pcolormesh(X, Y, Z, cmap="Greens") </syntaxhighlight> Les échelles de couleur disponibles sont données à la page : : {{lien web | url = https://matplotlib.org/api/pyplot_summary.html#matplotlib.pyplot.colormaps | titre = Colors in matplotlib | site = matplotlib | lang = en | consulté le = 2019-04-05 }}. [[Fichier:Champ vecteurs python matplotlib.svg|vignette|Champ de vecteur tracé par Python/Matplotlib.]] On peut aussi faire une carte d'un champ de vecteurs avec la commande <code>plt.quiver()</code> vue précédemment : <syntaxhighlight lang="python"> base = np.arange(10) x, y = np.meshgrid(base, base) ux = -0.1*y uy = 0.1*x plt.quiver(x, y, ux, uy, scale_units="xy", scale = 1, angles="xy") </syntaxhighlight> == Surfaces 3D == [[Fichier:Surface3D sinFoisSin python matplotlib.svg|vignette|Surface ''z'' = sin(''x'') × sin(''y'') tracée avec Python/Matplotlib.]] Il est également possible de tracer des surfaces 3D. Il faut pour cela charger <code>Axes3D</code> du module <code>mpl_toolkits.mplot3d</code> ; cela donne accès au paramètre <code>projection="3d"</code> lorsque l'on définit le système d'axes. Par exemple : <syntaxhighlight lang="python"> from mpl_toolkits.mplot3d import Axes3D # permet d'utiliser l'attribut projection="3d" x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) plt.figure() ax = plt.axes(projection="3d") ax.contour(X, Y, Z, zdir="z", offset=-1) # projection sur le plan z = -1 ax.plot_surface(X, Y, Z, alpha=0.8) </syntaxhighlight> On peut changer l'angle de vue du système d'axes avec les paramètres <code>elev</code> (élévation) et<code>azim</code> (azimut). Par exemple <syntaxhighlight lang="python"> ax = plt.axes(projection="3d", elev = 10, azim = 90) </syntaxhighlight> == Mise en forme de la figure == La figure dispose de paramètres de mise en forme : * <code lang="python">figsize</code> : liste des dimensions (largeur, hauteur) en pouces (valeur par défaut <code>[6.4, 4.8]</code>) ; * <code lang="python">dpi</code> : résolution en points par pouce (valeur par défaut <code>100</code>) ; * <code lang="python">facecolor</code> : couleur de fond (valeur par défaut <code>white</code>) ; * <code lang="python">edgecolor</code> : couleur du filet de bordure (valeur par défaut <code>white</code>) ; * <code lang="python">layout</code> : définit le placement des objets pour éviter les effets indésirables (par exemple le recouvrement, valeur par défaut <code>none</code>). Par exemple : <syntaxhighlight lang="python"> M = np.random.randn(50) fig = plt.figure(figsize = [10, 6]) plt.plot(M) </syntaxhighlight> == Mise en forme du texte == Si l'on veut utiliser le style LaTeX, on utilise : <syntaxhighlight lang="python"> plt.rcParams["text.usetex"] = True […] plt.xlabel("$x$") </syntaxhighlight> == Dessins == Les dessins portent le nom de « pièces » ''({{lang|en|patch}})''. Les fonctions pour les créer se trouvent dans le module <code>matplotlib.patches</code>. Ces fonctions permettent de ''créer'' les pièces mais pour les ''dessiner'' (c'est-à-dire les mettre sur la « toile »), il faut utiliser la méthode <code>.add_patch()</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # système d'axes occupant toute la figure ax.set_xlim(0, 2) # axes gradués de 0 à 2 ax.set_ylim(0, 2) # Création des pièces cercle = Circle((0.25, 0.25), 0.1) # cercle de centre (0,25 ; 0,25) et de rayon 0,1 polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) # polygone à trois sommets (triangle) # Dessin des pièces ax.add_patch(cercle) ax.add_patch(polygone) </syntaxhighlight> Le dessin des pièces une par une est un processus assez long. Il est intéressant de créer une collection et de dessiner cette collection d'un seul tenant. On a pour cela recours au module <code>matplotlib.collections</code>. Le code devient donc : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon from matplotlib.collections import PatchCollection fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) cercle = Circle((0.25, 0.25), 0.1) polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) coll = PatchCollection((cercle, polygone)) ax.add_collection(coll) </syntaxhighlight> Il est possible de dessiner des chemins ''({{lang|en|path}})''. {{loupe|Découvrir le SVG/Chemins}} On a pour cela recours au module <code>matplotlib.path</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import PathPatch from matplotlib.path import Path fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) # Création du chemin chemin = Path([[0.25, 0.5], [0.25, 1.5], [0.75, 1.5]], [Path.MOVETO, Path.CURVE3, Path.CURVE3]) # Création de la pièce à partir du chemin pieceChemin = PathPatch(chemin) # Dessin de la pièce ax.add_patch(pieceChemin) </syntaxhighlight> Ici, nous disons à la « plume » de se rendre ''({{lang|en|move to}})'' au point de coordonnées (0,25 ; 0,25), puis de tracer une courbe de Bézier quadratique ''({{lang|en|curve 3}})'' jusqu'au point (0,75 ; 1,5) avec comme point de contrôle intermédiaire (0,25 ; 1,5). == Transformation des objets graphiques == Il est possible de faire subir des transformations linéaires aux objets graphiques<ref>{{lien web |url=https://matplotlib.org/stable/api/transformations.html |titre=matplotlib.transforms |site=Matplotlib.org |consulté le=2023-04-14}}.</ref>. On utilise pour cela le module <code lang="python">matplotlib.transforms</code> (au pluriel) et l'attribut <code lang="python">transform</code> (au singulier) des commandes pyplot. Par exemple, pour tourner un objet de 90° : <syntaxhighlight lang="python"> import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as transforms donnees = np.random.randn(20) # points au hasard base = plt.gca().transData # base de la transformation rotation = transforms.Affine2D().rotate_deg(90) # rotation de 90° plt.plot(donnees, transform = rotation + base) </syntaxhighlight> La transformation <code>transforms.Affine2D()</code> a normalement pour argument une matrice 3 × 3 classique en géométrie. Lorsque l'on est en deux dimensions, cette matrice a la forme : <math>\begin{pmatrix} a & b & 0 \\ c & d & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> {{loupe|w:Matrice de transformation}} Les méthodes d'<code>Affine2D()</code> permettent de générer automatiquement cette matrice. Par exemple, <code>transforms.Affine2D().rotate(θ)</code> (angle θ en radians ; on utilise <code>.rotate_deg()</code> pour des angles en degrés) crée la matrice de rotation : <math>\begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> On peut donner directement la matrice M (de type <code>np.array()</code> avec <code>transforms.Affine2D().set_matrix(M)</code>. On peut indiquer les valeurs sous la forme d'une liste avec <code>transforms.Affine2D().from_values(a, c, b, d, 0, 0)</code> (notez l'ordre des paramètres). == Créer un GIF animé == Il existe plusieurs modules permettant de créer un GIF animé dans Python. === Avec le module PIL (Python imaging library) === La première étape consiste à créer un n-uplet contenant les noms de tous les fichiers image, dans l'ordre ; nous l'appelons <code>imgs</code>. Puis, nous créons un n-uplet contenant les pointeurs vers les images, ouverte avec <code>PIL.Images.open()</code> ; nous l'appelons <code>trames</code>. Nous créons le fichier GIF animé en utilisant la méthode <code>.save()</code> du n-uplet <code>trames</code> <syntaxhighlight lang="python"> from PIL import Image imgs=[] # initialisation du n-uplet for i in range(10): # nom des images : "fichieri.png", i étant un entier ("fichier0.png", "fichier1.png" etc.) imgs.append("fichier"+str(i)+".png") trames = [] for i in imgs: nouv_trame = Image.open(i) trames.append(nouv_trame) trames[0].save("animation.gif", format="GIF", append_images=trames[1:], save_all=True, duration=300, # durée en milliseconde loop=0) # pour boucler ; </syntaxhighlight> ; Ressources * https://pillow.readthedocs.io/ == Les couches de <code>matplotlib</code> == : {{lien web | url=https://matplotlib.org/tutorials/intermediate/artists.html | titre = Artist tutorial | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} : {{lien web | url=https://matplotlib.org/api/artist_api.html | titre = Artist API | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} Pour bien comprendre la documentation du module <code>matplotlib</code>, il faut comprendre sa structure en couches. Cela n'est pas indispensable pour l'utilisation élémentaire du module, mais connaître ce vocabulaire devient important pour une utilisation avancée. Le module <code>matplotlib</code> est organisé en trois couches : * la toile ({{lang|en|<code>FigureCanvas</code>}}) : c'est l'espace sur lequel le tracé est fait ; * le restituteur ({{lang|en|<code>Renderer</code>}}) : c'est l'objet chargé d'effectuer les tracés sur la toile ; * les artistes ({{lang|en|<code>Artist</code>}}) : ce sont les classes des objets destinés à être tracés. Il faut distinguer le tracé ''({{lang|en|plot}})'', qui consiste à traduire les données en objets à tracer en utilisant les artistes, et la publication ''({{lang|en|show}})'' qui consiste à afficher les tracés à l'écran ou à les écrire dans un fichier. La publication est le rôle de la « face cachée » ''({{lang|en|backend}})''. Cette structure en trois couches facilite la tâche de l'utilisateur : vous n'avez à vous concentrer qu'aux données et au type et style de tracé (en manipulant les artistes), la face cachée s'occupe de gérer la partie logicielle et matérielle (différence de système d'exploitation, de carte graphique, de format de fichier). La face cachée est donc une couche « abstraite », que l'utilisateur ne voit quasiment jamais. Dans les cas les plus simples, l'utilisation d'un artiste provoque aussi sa publication : si l'on fait un <code>.plot()</code>, la courbe s'affiche à l'écran. Mais dans certains cas, il faut indiquer à Python de publier le graphique ; par exemple, s'il y a des opérations de tracé longues à faire, on a intérêt à tout afficher à la fin, une fois toutes les opérations faites. C'est la raison d'être des fonctions et méthodes <code>.show()</code> ou <code>.draw()</code>. On distingue ainsi deux types d'artistes : les contenants et les primitives. Nous avons ainsi l'organisation suivante : * face cachée ({{lang|en|<code>backend</code>}}) ** toile ({{lang|en|<code>FigureCanvas</code>}}) ** restituteur ({{lang|en|<code>Renderer</code>}}) * artistes ({{lang|en|<code>Artist</code>}}) ** conteneurs ({{lang|en|<code>container</code>}}) *** figure ({{lang|en|<code>Figure</code>}}) **** systèmes d'axes ({{lang|en|<code>Axes</code>}}) ***** axes ({{lang|en|<code>axis</code>}}) ****** graduations ({{lang|en|<code>ticks</code>}}) ***** légendes ({{lang|en|<code>legend</code>}}) **** … ** primitives ({{lang|en|<code>primitive</code>}}) *** courbes ({{lang|en|<code>Line2D</code>}}) *** textes ({{lang|en|<code>Text</code>}}) *** bords ({{lang|en|<code>Spine</code>}}) *** pièces ({{lang|en|<code>Patch</code>}}) *** … == Notes et références == {{références}} ---- [[../Éléments de programmation|Éléments de programmation]] &lt; [[../|↑]] &gt; [[../Manipulation de matrices|Manipulation de matrices]] [[Catégorie:Python pour le calcul scientifique (livre)]] ao77ok1r668jp8pbbcxny0v43ypgecn 772224 772220 2026-09-15T07:44:36Z Cdang 1202 /* Annotations */ styles de flèche 772224 wikitext text/x-wiki Rappel : les programmes commencent par : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt </syntaxhighlight> Nous avons déjà vu un premier tracé élémentaire : ''[[../Découverte de Python et de Jupyter#Premier tracé graphique|Découverte de Python et de Jupyter &gt; Premier tracé graphique]]'' ; nous en présentons un autre plus loin : ''[[../Statistiques#Fréquence, histogramme|Statistiques &gt; Fréquence, histogramme]]''. {| class="wikitable" border="0" |- | <syntaxhighlight lang="python"> x = np.arange(0, 2, 0.1) y = x**2 plt.plot(x, y, label="y = x^2") plt.xlabel("x") plt.ylabel("y") plt.title("Graphes de fonctions") plt.legend() plt.show() </syntaxhighlight> | [[Fichier:Graphe fct carre Python Matplotlib Jupyter.png|300px]] |- | <syntaxhighlight lang="python"> M = np.random.randn(50) plt.plot(M, np.ones_like(M), "|") plt.hist(M, bins=10, density=1) plt.show() </syntaxhighlight> | [[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|300px]] |} Nous allons approfondir le sujet. == Concepts de base == === Exemple === [[Fichier:Nomenclature figure python matplotlib fct trigo.svg|thumb|upright=2.5|Nom des différents objets constituant une figure de Python/Matplotlib.]] Considérons un tracé un peu plus avancé : il consiste en deux graphiques représentant les graphes des fonctions cosinus et sinus. Voici deux manières de le réaliser : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) fig, liste_axes = plt.subplots(2, 1, layout="constrained") fig.suptitle("Fonctions trigonométriques") liste_axes[0].plot(x, ycos) liste_axes[0].set_title("cosinus") liste_axes[0].set_xlabel("x") liste_axes[0].set_ylabel("y") liste_axes[1].plot(x, ysin) liste_axes[1].set_title("sinus", pad = 5) liste_axes[1].set_xlabel("x") liste_axes[1].set_ylabel("y") plt.savefig("fonctions_trigo_pyplot.svg", format="svg") </syntaxhighlight> Ou bien <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) plt.subplots(layout="constrained") plt.suptitle("Fonctions trigonométriques") plt.subplot(2, 1, 1) plt.plot(x, ycos) plt.title("cosinus") plt.xlabel("x") plt.ylabel("y") plt.subplot(2, 1, 2) plt.plot(x, ysin) plt.title("sinus", pad = 5) plt.xlabel("x") plt.ylabel("y") </syntaxhighlight> === Analyse === ==== Première manière ==== La création de deux graphiques se fait avec la commande <code lang="python">plt.subplot()</code> à laquelle on indique le fait qu'il y a 2 lignes et 1 colonne ; le paramètre <code lang="python">layout="constrained"</code> permet d'avoir une meilleure mise en page. Cette commande retourne deux identifiants : <code lang="python">fig</code>, l'identifiant de la figure, et <code lang="python">liste_axes</code>, les identifiants des deux sous-figures. La méthode <code lang="python">.suptitle()</code> permet de créer un titre général. Pour chaque sous-figure (classe {{lang|en|<code>Axes</code>}}, que l'on pourrait traduire par « système d'axes »), on utilise les méthodes <code lang="python">.plot()</code>pour tracer une courbe, <code>.set_title()</code> pour lui donner un nom et les méthodes <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code> pour les titres des axes. La fonction <code lang="python">plt.savefig()</code> permet d'enregistrer la figure dans un fichier, ici au format [[Découvrir le SVG|SVG]]. Au lieu d'utiliser une matrice <code>liste_axes</code>, on peut aussi utiliser un n-uplet : <syntaxhighlight lang="python"> fig, (axes0, axes1) = plt.subplots(2, 1, layout="constrained") […] axes0.plot(x, ycos) […] axes1.plot(x, ysin) </syntaxhighlight> L'image est constituée de plusieurs objets. Il y en a de deux types : * les contenants qui permettent la mise en page : <code lang="python">Figure</code> (la figure)<ref>{{lien web |url=https://matplotlib.org/stable/api/figure_api.html |titre=matplotlib.figure |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> et <code>Axes</code> (les systèmes d'axes)<ref>{{lien web |url=https://matplotlib.org/stable/api/axes_api.html |titre=matplotlib.axes |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> ; * les primitives : ce sont les objets qui sont tracés à l'écran, essentiellement les <code>Line2D</code> (les courbes)<ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html |titre=matplotlib.lines.Line2D |site=Matplotlib.org |consulté le=2022-05-03}}.</ref>. La <code lang="python">Figure</code> est un grand contenant, c'est lui qui contient tout le dessin ; on parle parfois de « toile » ''({{lang|en|canvas}})''. Les <code>Axes</code> sont les différentes sous-figures ; il y en a ici 2. Les <code lang="python">axis</code> (« axe » en français) — à ne pas confondre avec le terme <code lang="python">Axes</code> précédent — sont au nombre de deux par <code lang="python">Axes</code> : l'axe de ''x'' (<code lang="python">XAxis</code>) et l'axe des ''y'' (<code lang="python">YAxis</code>). ==== Seconde manière ==== Chaque graphique est créé par la fonction <code lang="python">plt.subplot(2, 1, 1)</code>. Les paramètres sont trois nombres : le nombre de lignes du tableau de figures, le nombre de colonnes de ce tableau, et le numéro de la cellule au sein du tableau en suivant le sens de lecture latin (de gauche à droite et de haut en bas). La création des graphiques est précédée de deux fonctions : <code lang="python">plt.subplots(layout="constrained")</code> qui impose une répartition harmonieuse des graphiques, et <code lang="python">plt.suptitle()</code> qui permet d'écrire un titre général. Pour chaque graphique, on a les fonctions : * <code lang="python">plt.plot()</code> qui tracent le graphique ; * <code lang="python">plt.title()</code> qui donnent un titre à chaque graphique ; * <code lang="python">plt.xlabel()</code> et <code lang="python">plt.ylabel()</code> qui nomment les axes. === Styles de codage « pyplot » et « OO » === On voit qu'il y a aussi deux styles de codage, deux manières de rédiger. La première est la manière « pyplot » : la figure est décrite comme un automate fini ''({{lang|en|state machine}})'', elle ne peut avoir qu'un nombre fini d'états et les fonctions font des transitions entre deux états. On utilise aussi l'expression « à la manière de Matlab ». On utilise des fonctions de l'espace de nom <code lang="python">matplotlib.pylot (plt)</code>, ici : <code lang="python">plt.subplots()</code>, <code lang="python">plt.savefig()</code> et dans les exemples précédents, <code>plt.plot()</code>, <code>plt.hist()</code lang="python">, <code lang="python">plt.xlabel()</code>, <code lang="python">plt.ylabel()</code>, <code lang="python">plt.title()</code>, <code lang="python">plt.legend()</code> et <code lang="python">plt.show()</code>. La seconde manière est la manière « orientée objet » (OO) : comme nous avons défini des objets (la <code lang="python">Figure</code>, les <code lang="python">Axes</code>), nous pouvons utiliser des méthodes spécifiques à ces classes. C'est ainsi que nous avons les méthodes <code lang="python">fig.suptitle()</code>, <code lang="python">liste_axes[:].plot()</code>, <code lang="python">.set_title()</code>, <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code>. Dans la manière OO, il faut donc connaître les identifiants des objets pour pouvoir utiliser leurs méthodes. La manière la plus simple est de créer explicitement les objets et d'assigner leur identifiant à des variables à cette occasion, par exemple : <syntaxhighlight lang="python"> fig, sysAxes = plt.subplots(1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = fig.add_subplot(1, 1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou encore <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = plt.axes() courbe = sysAxes.plot(x, y) </syntaxhighlight> L'autre manière consiste à laisser pyplot tout créer tout seul, puis à récupérer les identifiants : <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes courbe = sysAxes.lines[0] </syntaxhighlight> ou bien <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = fig.axes[0] courbe = sysAxes.lines[0] </syntaxhighlight> == Mise en forme d'une courbe == Considérons une courbe unique. Nous pouvons changer l'apparence de la courbe en passant des paramètres lors de sa création. La première manière consiste à utiliser une chaîne de caractères comprenant : * une lettre pour la couleur : <code>k</code> pour le noir ''({{lang|en|blac'''k''')}}'', <code>y</code> pour jaune ''({{lang|en|yellow)}}''… * un ou deux caractères pour le type de trait : <code>-</code> pour un trait continu, <code>--</code> pour un trait discontinu… * un caractère pour la forme des marqueurs : <code>o</code> pour des ronds, un <code>s</code> pour un carré ''({{lang|en|square)}}'', un <code>d</code> pour un losange ''({{lang|en|diamond}})'', un <code>v</code> ou un <code>^</code> pour un triangle pointe en bas ou en haut… Par exemple : <syntaxhighlight lang="python"> plt.plot(x, y, "r--") # trait discontinu rouge axes0 = plt.axes() axes0.plot(x, y, "go") # cercles verts </syntaxhighlight> {| class="wikitable" |+ Caractères de mise en forme de courbe |- ! colspan="2" scope="col" | Couleur ! colspan="2" scope="col" | Marqueur |- ! scope="col" | Caractère || Couleur ! scope="col" | Caractère || Symbole |- | <code>b</code> || bleu | <code>.</code> || point • |- | <code>g</code> || vert | <code>,</code> || point d'un pixel ⋅ |- | <code>r</code> || rouge | <code>o</code> || cercle ○ |- | <code>c</code> || cyan | <code>v</code> || triangle pointe en bas ▽ |- | <code>m</code> || magenta | <code>^</code> || triangle pointe en haut △ |- | <code>y</code> || jaune | <code>&lt;</code> || triangle pointe à gauche ◁ |- | <code>k</code> || noir | <code>&gt;</code> || triangle pointe à droite ▷ |- | <code>w</code> || blanc | <code>s</code> || carré □ |- ! colspan="2" scope="col" | Style de ligne | <code>p</code> || pentagone |- ! scope="col" | Caractère || Style | <code>1</code> à <code>4</code> || étoile à trois branches de différentes orientations |- | <code>-</code> || ligne continue | <code>*</code> || étoile ✭ |- | <code>--</code> || ligne discontinue | <code>h</code>, <code>H</code> || hexagone sur la pointe ⬢ ou sur le plat ⬣ |- | <code>-.</code> || trait mixte | <code>+</code> || croix droite + |- | <code>:</code> || trait pointillé | <code>x</code> || croix de saint André × |- | || | <code>D</code>, <code>d</code> || losange carré ◇ ou étroit ◊ |- | || | <code><nowiki>|</nowiki></code> || trait vertical <nowiki>|</nowiki> |- | || | <code>_</code> || trait horizontal — |} Notez la différence entre <code>".-"</code> qui affiche à la fois un marqueur point et un trait continu, et <code>"-."</code> qui crée un trait mixte. '''Méthodes avancées''' Il est possible de passer les paramètres de manière plus explicite : <syntaxhighlight lang="python"> plt.plot(x, y, color="b", linestyle="dashed", marker="o") </syntaxhighlight> L'attribut <code>color</code> peut être spécifié de plusieurs manières : * par une lettre, comme ci-dessus ; * par un mot, le nom de la couleur ; il y a une cinquantaine de nom définis comme par exemple <code>blue</code>, <code>lightblue</code>, <code>darkblue</code>, <code>grey</code>, <code>chocolate</code>, <code>fuschia</code><ref>voir {{lien web | url = https://matplotlib.org/tutorials/colors/colors.html | titre = Specifying colors | site = Matplotlib | lang = en | consulté le = 2019-03-30 }}.</ref>… * avec le nom de la couleur dans la palette T10 ; les dix noms sont <code>tab:blue</code>, <code>tab:orange</code>, <code>tab:green</code>, <code>tab:red</code>, <code>tab:purple</code>, <code>tab:brown</code>, <code>tab:pink</code>, <code>tab:gray</code>, <code>tab:olive</code> et <code>tab:cyan</code> ; ce sont les couleurs utilisées par défaut ; * par un code RVB, les composante R, V et B étant indiquées en hexadécimal entre <code>00</code> et <code>FF</code> : <code>color = "#00FF00"</code> (bleu) ; on peut utiliser le canal alpha en quatrième composante (RVBA) : <code>color = "#00FF0080"</code> ; la composante A va de <code>00</code> pour du parfaitement transparent à <code>FF</code> pour du totalement opaque. L'attribut <code>linestyle</code> peut être indiqué par des caractères comme précédemment ; on peut également utiliser les noms : <code>dashed</code> (discontinu), <code>dashdot</code> (mixte), <code>dotted</code> (pointillés), <code>solid</code> (continu) ou bien <code>None</code> ou une chaîne vide (pas de tracé). On peut ajouter d'autres attributs, en particulier * <code>linewidth</code> ou <code>lw</code> qui définit l'épaisseur du trait ; * <code>linestyle</code> ou <code>ls</code> qui définit le style du trait ; peut prendre les valeurs <code>"solid"</code> (<code>"-"</code>), <code>"dotted"</code> (<code>":"</code>), <code>"dashed"</code> (<code>"--"</code>) ou <code>"dashdot"</code> (<code>"-."</code>) ;<br /> le paramètre peut aussi prendre un n-uplet <code>(décalage, (longeur, espace))</code> ou <code>(décalage, (longeur1, espace1, loongueur2, espace2))</code> (une longueur de 1 désigne un point) ; * <code>dashes</code> : permet de définir un trait discontinu avec un doublet (2-uplet) indiquant le nombre de points affichés et le nombre de points non-affichés, par exemple <code>dashes=(4, 2)</code> ; on peut alterner plusieurs couples comme <code>dashes=(8, 2, 4, 2)</code> * <code>markeredgecolor</code> : couleur du trait du symbole marqueur ; * <code>markeredgewidth</code> : épaisseur du trait du symbole marqueur (en points) ; * <code>markerfacecolor</code> : couleur de remplissage du symbole marqueur ; * <code>fillstyle</code> : permet de ne remplir qu'une moitié du symbole marqueur ; prend les valeurs <code>top</code>, <code>right</code>, <code>bottom</code> et <code>left</code> pour indiquer la moitié remplie ; * <code>markersize</code> : taille du symbole marqueur (en points). Avec le style de codage orienté objet, cela donne : <syntaxhighlight lang="python"> courbe = plt.plot(x, y) courbe[0].set_linestyle("--") # ou bien courbe, = plt.plot(x, y) courbe.set_linestyle("--") # ou encore plt.plot(x, y) axes = plt.gca() courbe = axes.lines[0] courbe.set_linestyle("--") </syntaxhighlight> Les principales méthodes des objets Line2D sont : <code>.set_color()</code>, <code>.set_linestyle()</code>, <code>.set_linewidth()</code>, <code>.set_dashes()</code>, <code>.set_marker()</code> et tous les <code>.set_marker…()</code> (<code>edgecolor</code>, <code>edgewidth</code><code>facecolor</code>, <code>size</code>). ; Ressources * {{lien web | url = https://matplotlib.org/tutorials/introductory/pyplot.html | titre = Pyplot tutorial | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot | titre = matplotlib.pyplot.plot | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle | titre = matplotlib.lines.Line2D.set_linestyle | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} == Annotations == Nous parlons ici le fait de placer des annotations sur une figure et non pas la notion d'annotation en programmation. Il est possible de placer du texte avec la commande <code>plt.text(x, y, chaine)</code> où (''x'', ''y'') sont les coordonnées, dans le repère du tracé, où l'on veut placer le texte, et ''chaine'' est une chaîne de caractères. On peut modifier l'orientation de ce texte avec le paramètre <code lang="python">rotation</code> exprimé en degrés, par exemple : <syntaxhighlight lang="python"> plt.text(0, 0, "origine", rotation=90) </syntaxhighlight> Par ailleurs, la classe <code>Axes</code> dispose d'une méthode <code>.annotate()</code> ; on peut aussi utiliser la fonction <code>plt.annotate()</code>.. Dans sa forme la plus simple, on indique une chaîne correspondant à l'étiquette et un doublet (2-uplet) ou une liste indiquant les coordonnées où placer l'étiquette. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) courbe = plt.plot(x, ycos) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes ymin = ycos.min() # trouve la veleur minimale de ycos imin = ycos.argmin() # trouve l'indice correspondant au minimum xmin = x[imin] sysAxes.annotate("min", (xmin, ymin)) </syntaxhighlight> Telle quelle, l'étiquette empiète sur la courbe. On peut placer l'étiquette à des coordonnées particulières avec l'attribut <code>xytext</code> cet attribut reçoit un doublet ou une liste de coordonnées (''x'', ''y''). Par ailleurs, on peut relier l'étiquette au point visé avec l'attribut <code>arrowsprop</code> (''{{lang|en|arrow's properties}}'', propriétés de la flèche). Cet attribut reçoit un dictionnaire de propriétés, <code>arrowsprop=dict(…)</code> ou bien <code>arrowsprop={…}</code>. Par exemple, pour avoir simplement un trait, ce dictionnaire contient <code>arrowstyle="-"</code> ; pour une flèche, <code>arrowstyle="->"</code> ou <code>arrowstyle="<-"</code>, et pour une flèche double <code>arrowstyle="<->"</code>. Par exemple, avec l'exemple précédent : <syntaxhighlight lang="python"> sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops=dict(arrowstyle="->")) # ou bien sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops={"arrowstyle":"->"}) </syntaxhighlight> Les styles de flèche ''({{lang|en|arrowstyle}})'' disponibles sont : : <code>-</code>, <code>&lt;-</code>, <code>-&gt;</code>, <code>&lt;-&gt;</code>, <code>&lt;|-</code>, <code>-|&gt;</code>, <code>&lt;|-|&gt;</code>, <code>]-</code>, <code>-[</code>, <code>]-[</code>, <code>|-|</code>, <code>]-&gt;</code>, <code>&lt;-[</code>, <code>simple</code>, <code>fancy</code>, <code>wedge</code>. ; Ressource : {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html | titre = matplotlib.axes.Axes.annotate | lang = en | site = Matplotlib | consulté le = 2019-04-07 }} == Autres exemples de tracés 2D == [[Fichier:Sinus trace matplotlib escalier batons fleches.svg |vignette |Trois types de tracés de la fonction sinus avec Python/Matplotlib]] Par exemple avec : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = np.sin(x) fig, listeAxes = plt.subplots(3, 1, layout="constrained") # Tracé en escalier listeAxes[0].step(x, y) # tracé en bâtons listeAxes[1].bar(x, y, width = 0.03) # Tracé en flèches listeAxes[2].quiver(x[:-1], y[:-1], np.diff(x), np.diff(y), scale_units="xy", scale=1, angles="xy", width=0.02) </syntaxhighlight> == Gestion des échelles == Pour fixer les valeurs extrêmes des axes, on utilise les commandes <code lang="python">plt.xlim(''min'', ''max'')</code> et <code lang="python">plt.ylim(''min'', ''max'')</code>. Pour avoir une échelle logarithmique, respectivement en ''x'' et en ''y'', on utilise les commandes <code lang="python">plt.xscale("log")</code> et <code lang="python">plt.yscale("log")</code>. Ces fonctions peuvent recevoir les paramètres suivants : * <code>linear</code> : échelle linéaire (valeur par défaut) ; * <code>log</code> : échelle logarithmique ; * <code>symlog</code> : échelle logarithmique symétrique, c'est-à-dire avec la transformation <math>\mathrm{Y} = \sgn(y) \cdot \log_{10}(1 + |y/\mathrm{C}|)</math> avec C = 1/ln(10) ; nous avons ainsi des valeurs positives et négative sans avoir la singularité en 0 ; * <code>logit</code> : l'échelle est transformée par la fonction [[w:fr:Logit|logit]]. On peut superposer une grille avec la commande <code lang="python">plt.grid(True)</code>. S'il y a trop de graduations sur un axe, on peut réduire le nombre de graduations avec : <syntaxhighlight lang="python"> from matplotlib.ticker import NullFormatter # […] plt.gca().yaxis.set_minor_formatter(NullFormatter()) </syntaxhighlight> On peut imposer les valeurs graduées : <syntaxhighlight lang="python"> plt.gca().set_xticks([0, 1, 2, 3]) </syntaxhighlight> On peut imposer le fait d'avoir les mêmes échelles en ''x'' ou en ''y'' avec les mots-clefs <code lang="python">sharex</code> et <code lang="python">sharey</code>. Par exemple : <syntaxhighlight lang="python"> fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig, axs = plt.subplots(2,1, sharex=True) </syntaxhighlight> Si l'on veut que l'échelle en ''x'' soit la même que l'échelle en ''y'', on peut utiliser la méthode <code lang="python">set_aspect()</code><ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html |titre=matplotlib.axes.Axes.set_aspect |site=Matplotlib.org |consulté le=2022-05-03}}</ref> des objets <code lang="python">axes</code>, par exemple <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> Si l'on veut que le graphique soit carré, on utilise le mot-clef <code lang="python">square</code> de l'objet <code lang="python">axis</code> : <syntaxhighlight lang="python"> plt.axis("square") </syntaxhighlight> Si l'on veut que les échelles sur les axes ''x'' et ''y'' soient de pas identiques, par exemple pour qu'un carré soit un carré et un demi-cercle ne soit pas une demie ellipse, on utilise : <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> == Plusieurs courbes sur un même système d'axes == Pour mettre plusieurs courbes sur un même système d'axes, on peut soit les créer les unes après les autres : <syntaxhighlight lang="python"> plt.plot(x1, y1) plt.plot(x2, y2) </syntaxhighlight> Soit les mettre dans la même commande : <syntaxhighlight lang="python"> plt.plot(x1, y1, x2, y2) </syntaxhighlight> Matplotlib définit lui-même des couleurs différentes. On peut bien évidemment forcer le style des courbes. On peut également ajouter une étiquette ''({{lang|en|label}})'' qui sera ensuite affichée dans la légende : <syntaxhighlight lang="python"> plt.plot(x1, y1, "k", label="courbe 1") plt.plot(x2, y2, "b", label="courbe 1") plt.legend() # ou bien courbes = plt.plot(x1, y1, "k", x2, y2, "b") courbes[0].set_label("courbe 1") courbes[1].set_label("courbe 2") plt.legend() # ou bien courbes = plt.plot(x1, y1, x2, y2) courbes[0].set(color="k", label="courbe 1") courbes[1].set(color="b", label="courbe 2") plt.legend() </syntaxhighlight> On peut choisir l'emplacement de la légende avec le paramètre <code lang="python">loc</code> qui peut prendre les valeurs <code lang="python">"upper left"</code>, <code lang="python">"upper center"</code>, <code lang="python">"upper right"</code>, <code lang="python">"center left"</code>… la valeur est composée de deux adjectifs : * premier adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">upper</code> signifie en haut, ** <code lang="en">lower</code> signifie en bas ; * second adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">left</code> signifie à gauche, ** <code lang="en">right</code> signifie à droite. Par exemple : <syntaxhighlight lang="python"> plt.legend(loc="upper right") </syntaxhighlight> Si l'on veut des courbes avec des échelles en ''y'' différentes, il faut créer un axe ''x'' « jumeau » ''({{lang|en|twin}})'' avec la méthode <code>.twinx()</code>. Par exemple : <syntaxhighlight lang="python"> fig, axe = plt.subplots(figsize=(5, 5)) plt.suptitle("Chargement") axe2 = axe.twinx() axe.plot(forces) axe.set_xlabel("Étape") axe.set_ylabel("F (N)") axe2.plot(contraintes) axe2.set_ylabel("σ (MPa)") </syntaxhighlight> == Tracé polaire == [[Fichier:Courbe polaire rayon aleatoire python matplotlib.svg |vignette |Exemple de courbe polaire avec Python/Matplotlib.]] [[File:Rose des vents exemple Python.svg|thumb|Rose des vents avec des données arbitraires, utilisé pour un exemple de création de graphique avec le langage Python/Matplotlib.]] Un tracé polaire s'obtient avec la commande <code>plt.polar()</code>, par exemple : <syntaxhighlight lang="python"> theta = np.linspace(0, 2*np.pi, 20) # angle r = 1 + 0.2*np.random.randn(20) # rayon plt.polar(theta, r) # courbe polaire </syntaxhighlight> Voici un exemple avec deux courbes superposées et une mise en forme des graduations et de la légende : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt # ************** # * Constantes * # ************** # positions angulaires angles = 2*np.pi*np.linspace(0, 1, 9) # huitièmes de cercle radDeg = 180/np.pi # conversion radians → degrés etoile = np.array([1, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1]) # Tracé de l'étoile vents = np.array([2.85, 3.34, 5.2, 4.025, 4.9, 9.63, 7.5, 2.35, 2.85]) # Fréquence (unité arbitraire) vents = vents/vents.max() # normalisation # *********** # * Traçage * # *********** courbes = plt.polar(angles, etoile, angles, vents) # tracé # mise en forme axes = plt.gca() courbes[0].set(color="gray") courbes[1].set(color="b", label="Fréquence des vents") plt.legend(bbox_to_anchor=(1.45, 1.05), loc="upper right") # affichage à l'extérieur du tracé axes.set_rticks([0.2, 0.4, 0.6, 0.8, 1]) # graduations radiales axes.set_thetagrids(angles=radDeg*angles[0:-1], labels=("E", "NE", "N", "NO", "O", "SO", "S", "SE")) # graduations angulaires plt.title("Rose des vents") plt.savefig("rose_des_vents.svg", format="svg") plt.show() </syntaxhighlight> == Cartes de valeurs et de vecteurs == [[File:Cartes couleur sinFoisSin python matplotlib.svg|thumb|Lignes de niveau et cartes couleur de ''z'' = sin(''x'') × sin(''y'') par Python/Matplotlib.]] Lorsque l'on a une surface dans un espace à trois dimensions, de type ''z'' = ƒ(''x''&htinsp;, ''y''&thinsp;), on peut afficher les données sur la forme d'une carte : * lignes de niveau : on utilise la fonction <code>np.contour()</code> ; * surfaces de niveau : <code>np.contourf()</code> ; * carte de couleurs : <code>np.pcolormesh()</code>. La fonction <code>colorbar()</code> permet d'afficher l'échelle de couleurs. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) fig, liste_axes = plt.subplots(2, 2, layout="constrained") im1 = liste_axes[0, 0].contour(X, Y, Z) fig.colorbar(im1, ax=liste_axes[0, 0]) im2 = liste_axes[0, 1].contourf(X, Y, Z) fig.colorbar(im2, ax=liste_axes[0, 1]) im3 = liste_axes[1, 0].pcolormesh(X, Y, Z) fig.colorbar(im3, ax=liste_axes[1, 0]) </syntaxhighlight> La palette de couleurs ''({{lang|en|color map}})'' par défaut est ''viridis''. On peut choisir d'autres palettes de couleur avec le paramètre <code>cmap</code> : <syntaxhighlight lang="python"> im3 = liste_axes[1, 0].pcolormesh(X, Y, Z, cmap="Greens") </syntaxhighlight> Les échelles de couleur disponibles sont données à la page : : {{lien web | url = https://matplotlib.org/api/pyplot_summary.html#matplotlib.pyplot.colormaps | titre = Colors in matplotlib | site = matplotlib | lang = en | consulté le = 2019-04-05 }}. [[Fichier:Champ vecteurs python matplotlib.svg|vignette|Champ de vecteur tracé par Python/Matplotlib.]] On peut aussi faire une carte d'un champ de vecteurs avec la commande <code>plt.quiver()</code> vue précédemment : <syntaxhighlight lang="python"> base = np.arange(10) x, y = np.meshgrid(base, base) ux = -0.1*y uy = 0.1*x plt.quiver(x, y, ux, uy, scale_units="xy", scale = 1, angles="xy") </syntaxhighlight> == Surfaces 3D == [[Fichier:Surface3D sinFoisSin python matplotlib.svg|vignette|Surface ''z'' = sin(''x'') × sin(''y'') tracée avec Python/Matplotlib.]] Il est également possible de tracer des surfaces 3D. Il faut pour cela charger <code>Axes3D</code> du module <code>mpl_toolkits.mplot3d</code> ; cela donne accès au paramètre <code>projection="3d"</code> lorsque l'on définit le système d'axes. Par exemple : <syntaxhighlight lang="python"> from mpl_toolkits.mplot3d import Axes3D # permet d'utiliser l'attribut projection="3d" x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) plt.figure() ax = plt.axes(projection="3d") ax.contour(X, Y, Z, zdir="z", offset=-1) # projection sur le plan z = -1 ax.plot_surface(X, Y, Z, alpha=0.8) </syntaxhighlight> On peut changer l'angle de vue du système d'axes avec les paramètres <code>elev</code> (élévation) et<code>azim</code> (azimut). Par exemple <syntaxhighlight lang="python"> ax = plt.axes(projection="3d", elev = 10, azim = 90) </syntaxhighlight> == Mise en forme de la figure == La figure dispose de paramètres de mise en forme : * <code lang="python">figsize</code> : liste des dimensions (largeur, hauteur) en pouces (valeur par défaut <code>[6.4, 4.8]</code>) ; * <code lang="python">dpi</code> : résolution en points par pouce (valeur par défaut <code>100</code>) ; * <code lang="python">facecolor</code> : couleur de fond (valeur par défaut <code>white</code>) ; * <code lang="python">edgecolor</code> : couleur du filet de bordure (valeur par défaut <code>white</code>) ; * <code lang="python">layout</code> : définit le placement des objets pour éviter les effets indésirables (par exemple le recouvrement, valeur par défaut <code>none</code>). Par exemple : <syntaxhighlight lang="python"> M = np.random.randn(50) fig = plt.figure(figsize = [10, 6]) plt.plot(M) </syntaxhighlight> == Mise en forme du texte == Si l'on veut utiliser le style LaTeX, on utilise : <syntaxhighlight lang="python"> plt.rcParams["text.usetex"] = True […] plt.xlabel("$x$") </syntaxhighlight> == Dessins == Les dessins portent le nom de « pièces » ''({{lang|en|patch}})''. Les fonctions pour les créer se trouvent dans le module <code>matplotlib.patches</code>. Ces fonctions permettent de ''créer'' les pièces mais pour les ''dessiner'' (c'est-à-dire les mettre sur la « toile »), il faut utiliser la méthode <code>.add_patch()</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # système d'axes occupant toute la figure ax.set_xlim(0, 2) # axes gradués de 0 à 2 ax.set_ylim(0, 2) # Création des pièces cercle = Circle((0.25, 0.25), 0.1) # cercle de centre (0,25 ; 0,25) et de rayon 0,1 polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) # polygone à trois sommets (triangle) # Dessin des pièces ax.add_patch(cercle) ax.add_patch(polygone) </syntaxhighlight> Le dessin des pièces une par une est un processus assez long. Il est intéressant de créer une collection et de dessiner cette collection d'un seul tenant. On a pour cela recours au module <code>matplotlib.collections</code>. Le code devient donc : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon from matplotlib.collections import PatchCollection fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) cercle = Circle((0.25, 0.25), 0.1) polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) coll = PatchCollection((cercle, polygone)) ax.add_collection(coll) </syntaxhighlight> Il est possible de dessiner des chemins ''({{lang|en|path}})''. {{loupe|Découvrir le SVG/Chemins}} On a pour cela recours au module <code>matplotlib.path</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import PathPatch from matplotlib.path import Path fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) # Création du chemin chemin = Path([[0.25, 0.5], [0.25, 1.5], [0.75, 1.5]], [Path.MOVETO, Path.CURVE3, Path.CURVE3]) # Création de la pièce à partir du chemin pieceChemin = PathPatch(chemin) # Dessin de la pièce ax.add_patch(pieceChemin) </syntaxhighlight> Ici, nous disons à la « plume » de se rendre ''({{lang|en|move to}})'' au point de coordonnées (0,25 ; 0,25), puis de tracer une courbe de Bézier quadratique ''({{lang|en|curve 3}})'' jusqu'au point (0,75 ; 1,5) avec comme point de contrôle intermédiaire (0,25 ; 1,5). == Transformation des objets graphiques == Il est possible de faire subir des transformations linéaires aux objets graphiques<ref>{{lien web |url=https://matplotlib.org/stable/api/transformations.html |titre=matplotlib.transforms |site=Matplotlib.org |consulté le=2023-04-14}}.</ref>. On utilise pour cela le module <code lang="python">matplotlib.transforms</code> (au pluriel) et l'attribut <code lang="python">transform</code> (au singulier) des commandes pyplot. Par exemple, pour tourner un objet de 90° : <syntaxhighlight lang="python"> import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as transforms donnees = np.random.randn(20) # points au hasard base = plt.gca().transData # base de la transformation rotation = transforms.Affine2D().rotate_deg(90) # rotation de 90° plt.plot(donnees, transform = rotation + base) </syntaxhighlight> La transformation <code>transforms.Affine2D()</code> a normalement pour argument une matrice 3 × 3 classique en géométrie. Lorsque l'on est en deux dimensions, cette matrice a la forme : <math>\begin{pmatrix} a & b & 0 \\ c & d & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> {{loupe|w:Matrice de transformation}} Les méthodes d'<code>Affine2D()</code> permettent de générer automatiquement cette matrice. Par exemple, <code>transforms.Affine2D().rotate(θ)</code> (angle θ en radians ; on utilise <code>.rotate_deg()</code> pour des angles en degrés) crée la matrice de rotation : <math>\begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> On peut donner directement la matrice M (de type <code>np.array()</code> avec <code>transforms.Affine2D().set_matrix(M)</code>. On peut indiquer les valeurs sous la forme d'une liste avec <code>transforms.Affine2D().from_values(a, c, b, d, 0, 0)</code> (notez l'ordre des paramètres). == Créer un GIF animé == Il existe plusieurs modules permettant de créer un GIF animé dans Python. === Avec le module PIL (Python imaging library) === La première étape consiste à créer un n-uplet contenant les noms de tous les fichiers image, dans l'ordre ; nous l'appelons <code>imgs</code>. Puis, nous créons un n-uplet contenant les pointeurs vers les images, ouverte avec <code>PIL.Images.open()</code> ; nous l'appelons <code>trames</code>. Nous créons le fichier GIF animé en utilisant la méthode <code>.save()</code> du n-uplet <code>trames</code> <syntaxhighlight lang="python"> from PIL import Image imgs=[] # initialisation du n-uplet for i in range(10): # nom des images : "fichieri.png", i étant un entier ("fichier0.png", "fichier1.png" etc.) imgs.append("fichier"+str(i)+".png") trames = [] for i in imgs: nouv_trame = Image.open(i) trames.append(nouv_trame) trames[0].save("animation.gif", format="GIF", append_images=trames[1:], save_all=True, duration=300, # durée en milliseconde loop=0) # pour boucler ; </syntaxhighlight> ; Ressources * https://pillow.readthedocs.io/ == Les couches de <code>matplotlib</code> == : {{lien web | url=https://matplotlib.org/tutorials/intermediate/artists.html | titre = Artist tutorial | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} : {{lien web | url=https://matplotlib.org/api/artist_api.html | titre = Artist API | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} Pour bien comprendre la documentation du module <code>matplotlib</code>, il faut comprendre sa structure en couches. Cela n'est pas indispensable pour l'utilisation élémentaire du module, mais connaître ce vocabulaire devient important pour une utilisation avancée. Le module <code>matplotlib</code> est organisé en trois couches : * la toile ({{lang|en|<code>FigureCanvas</code>}}) : c'est l'espace sur lequel le tracé est fait ; * le restituteur ({{lang|en|<code>Renderer</code>}}) : c'est l'objet chargé d'effectuer les tracés sur la toile ; * les artistes ({{lang|en|<code>Artist</code>}}) : ce sont les classes des objets destinés à être tracés. Il faut distinguer le tracé ''({{lang|en|plot}})'', qui consiste à traduire les données en objets à tracer en utilisant les artistes, et la publication ''({{lang|en|show}})'' qui consiste à afficher les tracés à l'écran ou à les écrire dans un fichier. La publication est le rôle de la « face cachée » ''({{lang|en|backend}})''. Cette structure en trois couches facilite la tâche de l'utilisateur : vous n'avez à vous concentrer qu'aux données et au type et style de tracé (en manipulant les artistes), la face cachée s'occupe de gérer la partie logicielle et matérielle (différence de système d'exploitation, de carte graphique, de format de fichier). La face cachée est donc une couche « abstraite », que l'utilisateur ne voit quasiment jamais. Dans les cas les plus simples, l'utilisation d'un artiste provoque aussi sa publication : si l'on fait un <code>.plot()</code>, la courbe s'affiche à l'écran. Mais dans certains cas, il faut indiquer à Python de publier le graphique ; par exemple, s'il y a des opérations de tracé longues à faire, on a intérêt à tout afficher à la fin, une fois toutes les opérations faites. C'est la raison d'être des fonctions et méthodes <code>.show()</code> ou <code>.draw()</code>. On distingue ainsi deux types d'artistes : les contenants et les primitives. Nous avons ainsi l'organisation suivante : * face cachée ({{lang|en|<code>backend</code>}}) ** toile ({{lang|en|<code>FigureCanvas</code>}}) ** restituteur ({{lang|en|<code>Renderer</code>}}) * artistes ({{lang|en|<code>Artist</code>}}) ** conteneurs ({{lang|en|<code>container</code>}}) *** figure ({{lang|en|<code>Figure</code>}}) **** systèmes d'axes ({{lang|en|<code>Axes</code>}}) ***** axes ({{lang|en|<code>axis</code>}}) ****** graduations ({{lang|en|<code>ticks</code>}}) ***** légendes ({{lang|en|<code>legend</code>}}) **** … ** primitives ({{lang|en|<code>primitive</code>}}) *** courbes ({{lang|en|<code>Line2D</code>}}) *** textes ({{lang|en|<code>Text</code>}}) *** bords ({{lang|en|<code>Spine</code>}}) *** pièces ({{lang|en|<code>Patch</code>}}) *** … == Notes et références == {{références}} ---- [[../Éléments de programmation|Éléments de programmation]] &lt; [[../|↑]] &gt; [[../Manipulation de matrices|Manipulation de matrices]] [[Catégorie:Python pour le calcul scientifique (livre)]] 4c97lqi8al4nrup55qvhkn3qqqkry5n 772226 772224 2026-09-15T07:49:55Z Cdang 1202 /* Annotations */ précisions 772226 wikitext text/x-wiki Rappel : les programmes commencent par : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt </syntaxhighlight> Nous avons déjà vu un premier tracé élémentaire : ''[[../Découverte de Python et de Jupyter#Premier tracé graphique|Découverte de Python et de Jupyter &gt; Premier tracé graphique]]'' ; nous en présentons un autre plus loin : ''[[../Statistiques#Fréquence, histogramme|Statistiques &gt; Fréquence, histogramme]]''. {| class="wikitable" border="0" |- | <syntaxhighlight lang="python"> x = np.arange(0, 2, 0.1) y = x**2 plt.plot(x, y, label="y = x^2") plt.xlabel("x") plt.ylabel("y") plt.title("Graphes de fonctions") plt.legend() plt.show() </syntaxhighlight> | [[Fichier:Graphe fct carre Python Matplotlib Jupyter.png|300px]] |- | <syntaxhighlight lang="python"> M = np.random.randn(50) plt.plot(M, np.ones_like(M), "|") plt.hist(M, bins=10, density=1) plt.show() </syntaxhighlight> | [[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|300px]] |} Nous allons approfondir le sujet. == Concepts de base == === Exemple === [[Fichier:Nomenclature figure python matplotlib fct trigo.svg|thumb|upright=2.5|Nom des différents objets constituant une figure de Python/Matplotlib.]] Considérons un tracé un peu plus avancé : il consiste en deux graphiques représentant les graphes des fonctions cosinus et sinus. Voici deux manières de le réaliser : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) fig, liste_axes = plt.subplots(2, 1, layout="constrained") fig.suptitle("Fonctions trigonométriques") liste_axes[0].plot(x, ycos) liste_axes[0].set_title("cosinus") liste_axes[0].set_xlabel("x") liste_axes[0].set_ylabel("y") liste_axes[1].plot(x, ysin) liste_axes[1].set_title("sinus", pad = 5) liste_axes[1].set_xlabel("x") liste_axes[1].set_ylabel("y") plt.savefig("fonctions_trigo_pyplot.svg", format="svg") </syntaxhighlight> Ou bien <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) plt.subplots(layout="constrained") plt.suptitle("Fonctions trigonométriques") plt.subplot(2, 1, 1) plt.plot(x, ycos) plt.title("cosinus") plt.xlabel("x") plt.ylabel("y") plt.subplot(2, 1, 2) plt.plot(x, ysin) plt.title("sinus", pad = 5) plt.xlabel("x") plt.ylabel("y") </syntaxhighlight> === Analyse === ==== Première manière ==== La création de deux graphiques se fait avec la commande <code lang="python">plt.subplot()</code> à laquelle on indique le fait qu'il y a 2 lignes et 1 colonne ; le paramètre <code lang="python">layout="constrained"</code> permet d'avoir une meilleure mise en page. Cette commande retourne deux identifiants : <code lang="python">fig</code>, l'identifiant de la figure, et <code lang="python">liste_axes</code>, les identifiants des deux sous-figures. La méthode <code lang="python">.suptitle()</code> permet de créer un titre général. Pour chaque sous-figure (classe {{lang|en|<code>Axes</code>}}, que l'on pourrait traduire par « système d'axes »), on utilise les méthodes <code lang="python">.plot()</code>pour tracer une courbe, <code>.set_title()</code> pour lui donner un nom et les méthodes <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code> pour les titres des axes. La fonction <code lang="python">plt.savefig()</code> permet d'enregistrer la figure dans un fichier, ici au format [[Découvrir le SVG|SVG]]. Au lieu d'utiliser une matrice <code>liste_axes</code>, on peut aussi utiliser un n-uplet : <syntaxhighlight lang="python"> fig, (axes0, axes1) = plt.subplots(2, 1, layout="constrained") […] axes0.plot(x, ycos) […] axes1.plot(x, ysin) </syntaxhighlight> L'image est constituée de plusieurs objets. Il y en a de deux types : * les contenants qui permettent la mise en page : <code lang="python">Figure</code> (la figure)<ref>{{lien web |url=https://matplotlib.org/stable/api/figure_api.html |titre=matplotlib.figure |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> et <code>Axes</code> (les systèmes d'axes)<ref>{{lien web |url=https://matplotlib.org/stable/api/axes_api.html |titre=matplotlib.axes |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> ; * les primitives : ce sont les objets qui sont tracés à l'écran, essentiellement les <code>Line2D</code> (les courbes)<ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html |titre=matplotlib.lines.Line2D |site=Matplotlib.org |consulté le=2022-05-03}}.</ref>. La <code lang="python">Figure</code> est un grand contenant, c'est lui qui contient tout le dessin ; on parle parfois de « toile » ''({{lang|en|canvas}})''. Les <code>Axes</code> sont les différentes sous-figures ; il y en a ici 2. Les <code lang="python">axis</code> (« axe » en français) — à ne pas confondre avec le terme <code lang="python">Axes</code> précédent — sont au nombre de deux par <code lang="python">Axes</code> : l'axe de ''x'' (<code lang="python">XAxis</code>) et l'axe des ''y'' (<code lang="python">YAxis</code>). ==== Seconde manière ==== Chaque graphique est créé par la fonction <code lang="python">plt.subplot(2, 1, 1)</code>. Les paramètres sont trois nombres : le nombre de lignes du tableau de figures, le nombre de colonnes de ce tableau, et le numéro de la cellule au sein du tableau en suivant le sens de lecture latin (de gauche à droite et de haut en bas). La création des graphiques est précédée de deux fonctions : <code lang="python">plt.subplots(layout="constrained")</code> qui impose une répartition harmonieuse des graphiques, et <code lang="python">plt.suptitle()</code> qui permet d'écrire un titre général. Pour chaque graphique, on a les fonctions : * <code lang="python">plt.plot()</code> qui tracent le graphique ; * <code lang="python">plt.title()</code> qui donnent un titre à chaque graphique ; * <code lang="python">plt.xlabel()</code> et <code lang="python">plt.ylabel()</code> qui nomment les axes. === Styles de codage « pyplot » et « OO » === On voit qu'il y a aussi deux styles de codage, deux manières de rédiger. La première est la manière « pyplot » : la figure est décrite comme un automate fini ''({{lang|en|state machine}})'', elle ne peut avoir qu'un nombre fini d'états et les fonctions font des transitions entre deux états. On utilise aussi l'expression « à la manière de Matlab ». On utilise des fonctions de l'espace de nom <code lang="python">matplotlib.pylot (plt)</code>, ici : <code lang="python">plt.subplots()</code>, <code lang="python">plt.savefig()</code> et dans les exemples précédents, <code>plt.plot()</code>, <code>plt.hist()</code lang="python">, <code lang="python">plt.xlabel()</code>, <code lang="python">plt.ylabel()</code>, <code lang="python">plt.title()</code>, <code lang="python">plt.legend()</code> et <code lang="python">plt.show()</code>. La seconde manière est la manière « orientée objet » (OO) : comme nous avons défini des objets (la <code lang="python">Figure</code>, les <code lang="python">Axes</code>), nous pouvons utiliser des méthodes spécifiques à ces classes. C'est ainsi que nous avons les méthodes <code lang="python">fig.suptitle()</code>, <code lang="python">liste_axes[:].plot()</code>, <code lang="python">.set_title()</code>, <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code>. Dans la manière OO, il faut donc connaître les identifiants des objets pour pouvoir utiliser leurs méthodes. La manière la plus simple est de créer explicitement les objets et d'assigner leur identifiant à des variables à cette occasion, par exemple : <syntaxhighlight lang="python"> fig, sysAxes = plt.subplots(1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = fig.add_subplot(1, 1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou encore <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = plt.axes() courbe = sysAxes.plot(x, y) </syntaxhighlight> L'autre manière consiste à laisser pyplot tout créer tout seul, puis à récupérer les identifiants : <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes courbe = sysAxes.lines[0] </syntaxhighlight> ou bien <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = fig.axes[0] courbe = sysAxes.lines[0] </syntaxhighlight> == Mise en forme d'une courbe == Considérons une courbe unique. Nous pouvons changer l'apparence de la courbe en passant des paramètres lors de sa création. La première manière consiste à utiliser une chaîne de caractères comprenant : * une lettre pour la couleur : <code>k</code> pour le noir ''({{lang|en|blac'''k''')}}'', <code>y</code> pour jaune ''({{lang|en|yellow)}}''… * un ou deux caractères pour le type de trait : <code>-</code> pour un trait continu, <code>--</code> pour un trait discontinu… * un caractère pour la forme des marqueurs : <code>o</code> pour des ronds, un <code>s</code> pour un carré ''({{lang|en|square)}}'', un <code>d</code> pour un losange ''({{lang|en|diamond}})'', un <code>v</code> ou un <code>^</code> pour un triangle pointe en bas ou en haut… Par exemple : <syntaxhighlight lang="python"> plt.plot(x, y, "r--") # trait discontinu rouge axes0 = plt.axes() axes0.plot(x, y, "go") # cercles verts </syntaxhighlight> {| class="wikitable" |+ Caractères de mise en forme de courbe |- ! colspan="2" scope="col" | Couleur ! colspan="2" scope="col" | Marqueur |- ! scope="col" | Caractère || Couleur ! scope="col" | Caractère || Symbole |- | <code>b</code> || bleu | <code>.</code> || point • |- | <code>g</code> || vert | <code>,</code> || point d'un pixel ⋅ |- | <code>r</code> || rouge | <code>o</code> || cercle ○ |- | <code>c</code> || cyan | <code>v</code> || triangle pointe en bas ▽ |- | <code>m</code> || magenta | <code>^</code> || triangle pointe en haut △ |- | <code>y</code> || jaune | <code>&lt;</code> || triangle pointe à gauche ◁ |- | <code>k</code> || noir | <code>&gt;</code> || triangle pointe à droite ▷ |- | <code>w</code> || blanc | <code>s</code> || carré □ |- ! colspan="2" scope="col" | Style de ligne | <code>p</code> || pentagone |- ! scope="col" | Caractère || Style | <code>1</code> à <code>4</code> || étoile à trois branches de différentes orientations |- | <code>-</code> || ligne continue | <code>*</code> || étoile ✭ |- | <code>--</code> || ligne discontinue | <code>h</code>, <code>H</code> || hexagone sur la pointe ⬢ ou sur le plat ⬣ |- | <code>-.</code> || trait mixte | <code>+</code> || croix droite + |- | <code>:</code> || trait pointillé | <code>x</code> || croix de saint André × |- | || | <code>D</code>, <code>d</code> || losange carré ◇ ou étroit ◊ |- | || | <code><nowiki>|</nowiki></code> || trait vertical <nowiki>|</nowiki> |- | || | <code>_</code> || trait horizontal — |} Notez la différence entre <code>".-"</code> qui affiche à la fois un marqueur point et un trait continu, et <code>"-."</code> qui crée un trait mixte. '''Méthodes avancées''' Il est possible de passer les paramètres de manière plus explicite : <syntaxhighlight lang="python"> plt.plot(x, y, color="b", linestyle="dashed", marker="o") </syntaxhighlight> L'attribut <code>color</code> peut être spécifié de plusieurs manières : * par une lettre, comme ci-dessus ; * par un mot, le nom de la couleur ; il y a une cinquantaine de nom définis comme par exemple <code>blue</code>, <code>lightblue</code>, <code>darkblue</code>, <code>grey</code>, <code>chocolate</code>, <code>fuschia</code><ref>voir {{lien web | url = https://matplotlib.org/tutorials/colors/colors.html | titre = Specifying colors | site = Matplotlib | lang = en | consulté le = 2019-03-30 }}.</ref>… * avec le nom de la couleur dans la palette T10 ; les dix noms sont <code>tab:blue</code>, <code>tab:orange</code>, <code>tab:green</code>, <code>tab:red</code>, <code>tab:purple</code>, <code>tab:brown</code>, <code>tab:pink</code>, <code>tab:gray</code>, <code>tab:olive</code> et <code>tab:cyan</code> ; ce sont les couleurs utilisées par défaut ; * par un code RVB, les composante R, V et B étant indiquées en hexadécimal entre <code>00</code> et <code>FF</code> : <code>color = "#00FF00"</code> (bleu) ; on peut utiliser le canal alpha en quatrième composante (RVBA) : <code>color = "#00FF0080"</code> ; la composante A va de <code>00</code> pour du parfaitement transparent à <code>FF</code> pour du totalement opaque. L'attribut <code>linestyle</code> peut être indiqué par des caractères comme précédemment ; on peut également utiliser les noms : <code>dashed</code> (discontinu), <code>dashdot</code> (mixte), <code>dotted</code> (pointillés), <code>solid</code> (continu) ou bien <code>None</code> ou une chaîne vide (pas de tracé). On peut ajouter d'autres attributs, en particulier * <code>linewidth</code> ou <code>lw</code> qui définit l'épaisseur du trait ; * <code>linestyle</code> ou <code>ls</code> qui définit le style du trait ; peut prendre les valeurs <code>"solid"</code> (<code>"-"</code>), <code>"dotted"</code> (<code>":"</code>), <code>"dashed"</code> (<code>"--"</code>) ou <code>"dashdot"</code> (<code>"-."</code>) ;<br /> le paramètre peut aussi prendre un n-uplet <code>(décalage, (longeur, espace))</code> ou <code>(décalage, (longeur1, espace1, loongueur2, espace2))</code> (une longueur de 1 désigne un point) ; * <code>dashes</code> : permet de définir un trait discontinu avec un doublet (2-uplet) indiquant le nombre de points affichés et le nombre de points non-affichés, par exemple <code>dashes=(4, 2)</code> ; on peut alterner plusieurs couples comme <code>dashes=(8, 2, 4, 2)</code> * <code>markeredgecolor</code> : couleur du trait du symbole marqueur ; * <code>markeredgewidth</code> : épaisseur du trait du symbole marqueur (en points) ; * <code>markerfacecolor</code> : couleur de remplissage du symbole marqueur ; * <code>fillstyle</code> : permet de ne remplir qu'une moitié du symbole marqueur ; prend les valeurs <code>top</code>, <code>right</code>, <code>bottom</code> et <code>left</code> pour indiquer la moitié remplie ; * <code>markersize</code> : taille du symbole marqueur (en points). Avec le style de codage orienté objet, cela donne : <syntaxhighlight lang="python"> courbe = plt.plot(x, y) courbe[0].set_linestyle("--") # ou bien courbe, = plt.plot(x, y) courbe.set_linestyle("--") # ou encore plt.plot(x, y) axes = plt.gca() courbe = axes.lines[0] courbe.set_linestyle("--") </syntaxhighlight> Les principales méthodes des objets Line2D sont : <code>.set_color()</code>, <code>.set_linestyle()</code>, <code>.set_linewidth()</code>, <code>.set_dashes()</code>, <code>.set_marker()</code> et tous les <code>.set_marker…()</code> (<code>edgecolor</code>, <code>edgewidth</code><code>facecolor</code>, <code>size</code>). ; Ressources * {{lien web | url = https://matplotlib.org/tutorials/introductory/pyplot.html | titre = Pyplot tutorial | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot | titre = matplotlib.pyplot.plot | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle | titre = matplotlib.lines.Line2D.set_linestyle | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} == Annotations == Nous parlons ici le fait de placer des annotations sur une figure et non pas la notion d'annotation en programmation. Il est possible de placer du texte avec la commande <code>plt.text(x, y, chaine)</code> où (''x'', ''y'') sont les coordonnées, dans le repère du tracé, où l'on veut placer le texte, et ''chaine'' est une chaîne de caractères. On peut modifier l'orientation de ce texte avec le paramètre <code lang="python">rotation</code> exprimé en degrés, par exemple : <syntaxhighlight lang="python"> plt.text(0, 0, "origine", rotation=90) </syntaxhighlight> Par ailleurs, la classe <code>Axes</code> dispose d'une méthode <code>.annotate()</code> ; on peut aussi utiliser la fonction <code>plt.annotate()</code>.. Dans sa forme la plus simple, on indique une chaîne correspondant à l'étiquette et un doublet (2-uplet) ou une liste indiquant les coordonnées où placer l'étiquette. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) courbe = plt.plot(x, ycos) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes ymin = ycos.min() # trouve la veleur minimale de ycos imin = ycos.argmin() # trouve l'indice correspondant au minimum xmin = x[imin] sysAxes.annotate("min", (xmin, ymin)) </syntaxhighlight> Telle quelle, l'étiquette empiète sur la courbe. On peut placer l'étiquette à des coordonnées particulières avec l'attribut <code>xytext</code> cet attribut reçoit un doublet ou une liste de coordonnées (''x'', ''y''). Par ailleurs, on peut relier l'étiquette au point visé avec l'attribut <code>arrowsprop</code> (''{{lang|en|arrow's properties}}'', propriétés de la flèche). Cet attribut reçoit un dictionnaire de propriétés, <code>arrowsprop=dict(…)</code> ou bien <code>arrowsprop={…}</code>. Par exemple, pour avoir simplement un trait, ce dictionnaire contient <code>arrowstyle="-"</code> ; pour une flèche, <code>arrowstyle="->"</code> ou <code>arrowstyle="<-"</code>, et pour une flèche double <code>arrowstyle="<->"</code>. Par exemple, avec l'exemple précédent : <syntaxhighlight lang="python"> sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops=dict(arrowstyle="->")) # ou bien sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops={"arrowstyle":"->"}) </syntaxhighlight> Les styles de flèche ''({{lang|en|arrowstyle}})'' disponibles sont : * <code>-</code> : trait simple ; * <code>&lt;-</code>, <code>-&gt;</code> : flèches ; * <code>&lt;-&gt;</code>, <code>&lt;|-</code>, <code>-|&gt;</code>, <code>&lt;|-|&gt;</code> : têtes triangulaires ; * <code>]-</code>, <code>-[</code>, <code>]-[</code> : crochets ; * <code>|-|</code> : barre ; <code>]-&gt;</code>, <code>&lt;-[</code> : crochet d'un côté, flèche de l'autre ; * <code>simple</code>, <code>fancy</code>, <code>wedge</code> : variantes de <code>-&gt;</code>. ; Ressource : {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html | titre = matplotlib.axes.Axes.annotate | lang = en | site = Matplotlib | consulté le = 2019-04-07 }} == Autres exemples de tracés 2D == [[Fichier:Sinus trace matplotlib escalier batons fleches.svg |vignette |Trois types de tracés de la fonction sinus avec Python/Matplotlib]] Par exemple avec : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = np.sin(x) fig, listeAxes = plt.subplots(3, 1, layout="constrained") # Tracé en escalier listeAxes[0].step(x, y) # tracé en bâtons listeAxes[1].bar(x, y, width = 0.03) # Tracé en flèches listeAxes[2].quiver(x[:-1], y[:-1], np.diff(x), np.diff(y), scale_units="xy", scale=1, angles="xy", width=0.02) </syntaxhighlight> == Gestion des échelles == Pour fixer les valeurs extrêmes des axes, on utilise les commandes <code lang="python">plt.xlim(''min'', ''max'')</code> et <code lang="python">plt.ylim(''min'', ''max'')</code>. Pour avoir une échelle logarithmique, respectivement en ''x'' et en ''y'', on utilise les commandes <code lang="python">plt.xscale("log")</code> et <code lang="python">plt.yscale("log")</code>. Ces fonctions peuvent recevoir les paramètres suivants : * <code>linear</code> : échelle linéaire (valeur par défaut) ; * <code>log</code> : échelle logarithmique ; * <code>symlog</code> : échelle logarithmique symétrique, c'est-à-dire avec la transformation <math>\mathrm{Y} = \sgn(y) \cdot \log_{10}(1 + |y/\mathrm{C}|)</math> avec C = 1/ln(10) ; nous avons ainsi des valeurs positives et négative sans avoir la singularité en 0 ; * <code>logit</code> : l'échelle est transformée par la fonction [[w:fr:Logit|logit]]. On peut superposer une grille avec la commande <code lang="python">plt.grid(True)</code>. S'il y a trop de graduations sur un axe, on peut réduire le nombre de graduations avec : <syntaxhighlight lang="python"> from matplotlib.ticker import NullFormatter # […] plt.gca().yaxis.set_minor_formatter(NullFormatter()) </syntaxhighlight> On peut imposer les valeurs graduées : <syntaxhighlight lang="python"> plt.gca().set_xticks([0, 1, 2, 3]) </syntaxhighlight> On peut imposer le fait d'avoir les mêmes échelles en ''x'' ou en ''y'' avec les mots-clefs <code lang="python">sharex</code> et <code lang="python">sharey</code>. Par exemple : <syntaxhighlight lang="python"> fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig, axs = plt.subplots(2,1, sharex=True) </syntaxhighlight> Si l'on veut que l'échelle en ''x'' soit la même que l'échelle en ''y'', on peut utiliser la méthode <code lang="python">set_aspect()</code><ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html |titre=matplotlib.axes.Axes.set_aspect |site=Matplotlib.org |consulté le=2022-05-03}}</ref> des objets <code lang="python">axes</code>, par exemple <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> Si l'on veut que le graphique soit carré, on utilise le mot-clef <code lang="python">square</code> de l'objet <code lang="python">axis</code> : <syntaxhighlight lang="python"> plt.axis("square") </syntaxhighlight> Si l'on veut que les échelles sur les axes ''x'' et ''y'' soient de pas identiques, par exemple pour qu'un carré soit un carré et un demi-cercle ne soit pas une demie ellipse, on utilise : <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> == Plusieurs courbes sur un même système d'axes == Pour mettre plusieurs courbes sur un même système d'axes, on peut soit les créer les unes après les autres : <syntaxhighlight lang="python"> plt.plot(x1, y1) plt.plot(x2, y2) </syntaxhighlight> Soit les mettre dans la même commande : <syntaxhighlight lang="python"> plt.plot(x1, y1, x2, y2) </syntaxhighlight> Matplotlib définit lui-même des couleurs différentes. On peut bien évidemment forcer le style des courbes. On peut également ajouter une étiquette ''({{lang|en|label}})'' qui sera ensuite affichée dans la légende : <syntaxhighlight lang="python"> plt.plot(x1, y1, "k", label="courbe 1") plt.plot(x2, y2, "b", label="courbe 1") plt.legend() # ou bien courbes = plt.plot(x1, y1, "k", x2, y2, "b") courbes[0].set_label("courbe 1") courbes[1].set_label("courbe 2") plt.legend() # ou bien courbes = plt.plot(x1, y1, x2, y2) courbes[0].set(color="k", label="courbe 1") courbes[1].set(color="b", label="courbe 2") plt.legend() </syntaxhighlight> On peut choisir l'emplacement de la légende avec le paramètre <code lang="python">loc</code> qui peut prendre les valeurs <code lang="python">"upper left"</code>, <code lang="python">"upper center"</code>, <code lang="python">"upper right"</code>, <code lang="python">"center left"</code>… la valeur est composée de deux adjectifs : * premier adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">upper</code> signifie en haut, ** <code lang="en">lower</code> signifie en bas ; * second adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">left</code> signifie à gauche, ** <code lang="en">right</code> signifie à droite. Par exemple : <syntaxhighlight lang="python"> plt.legend(loc="upper right") </syntaxhighlight> Si l'on veut des courbes avec des échelles en ''y'' différentes, il faut créer un axe ''x'' « jumeau » ''({{lang|en|twin}})'' avec la méthode <code>.twinx()</code>. Par exemple : <syntaxhighlight lang="python"> fig, axe = plt.subplots(figsize=(5, 5)) plt.suptitle("Chargement") axe2 = axe.twinx() axe.plot(forces) axe.set_xlabel("Étape") axe.set_ylabel("F (N)") axe2.plot(contraintes) axe2.set_ylabel("σ (MPa)") </syntaxhighlight> == Tracé polaire == [[Fichier:Courbe polaire rayon aleatoire python matplotlib.svg |vignette |Exemple de courbe polaire avec Python/Matplotlib.]] [[File:Rose des vents exemple Python.svg|thumb|Rose des vents avec des données arbitraires, utilisé pour un exemple de création de graphique avec le langage Python/Matplotlib.]] Un tracé polaire s'obtient avec la commande <code>plt.polar()</code>, par exemple : <syntaxhighlight lang="python"> theta = np.linspace(0, 2*np.pi, 20) # angle r = 1 + 0.2*np.random.randn(20) # rayon plt.polar(theta, r) # courbe polaire </syntaxhighlight> Voici un exemple avec deux courbes superposées et une mise en forme des graduations et de la légende : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt # ************** # * Constantes * # ************** # positions angulaires angles = 2*np.pi*np.linspace(0, 1, 9) # huitièmes de cercle radDeg = 180/np.pi # conversion radians → degrés etoile = np.array([1, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1]) # Tracé de l'étoile vents = np.array([2.85, 3.34, 5.2, 4.025, 4.9, 9.63, 7.5, 2.35, 2.85]) # Fréquence (unité arbitraire) vents = vents/vents.max() # normalisation # *********** # * Traçage * # *********** courbes = plt.polar(angles, etoile, angles, vents) # tracé # mise en forme axes = plt.gca() courbes[0].set(color="gray") courbes[1].set(color="b", label="Fréquence des vents") plt.legend(bbox_to_anchor=(1.45, 1.05), loc="upper right") # affichage à l'extérieur du tracé axes.set_rticks([0.2, 0.4, 0.6, 0.8, 1]) # graduations radiales axes.set_thetagrids(angles=radDeg*angles[0:-1], labels=("E", "NE", "N", "NO", "O", "SO", "S", "SE")) # graduations angulaires plt.title("Rose des vents") plt.savefig("rose_des_vents.svg", format="svg") plt.show() </syntaxhighlight> == Cartes de valeurs et de vecteurs == [[File:Cartes couleur sinFoisSin python matplotlib.svg|thumb|Lignes de niveau et cartes couleur de ''z'' = sin(''x'') × sin(''y'') par Python/Matplotlib.]] Lorsque l'on a une surface dans un espace à trois dimensions, de type ''z'' = ƒ(''x''&htinsp;, ''y''&thinsp;), on peut afficher les données sur la forme d'une carte : * lignes de niveau : on utilise la fonction <code>np.contour()</code> ; * surfaces de niveau : <code>np.contourf()</code> ; * carte de couleurs : <code>np.pcolormesh()</code>. La fonction <code>colorbar()</code> permet d'afficher l'échelle de couleurs. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) fig, liste_axes = plt.subplots(2, 2, layout="constrained") im1 = liste_axes[0, 0].contour(X, Y, Z) fig.colorbar(im1, ax=liste_axes[0, 0]) im2 = liste_axes[0, 1].contourf(X, Y, Z) fig.colorbar(im2, ax=liste_axes[0, 1]) im3 = liste_axes[1, 0].pcolormesh(X, Y, Z) fig.colorbar(im3, ax=liste_axes[1, 0]) </syntaxhighlight> La palette de couleurs ''({{lang|en|color map}})'' par défaut est ''viridis''. On peut choisir d'autres palettes de couleur avec le paramètre <code>cmap</code> : <syntaxhighlight lang="python"> im3 = liste_axes[1, 0].pcolormesh(X, Y, Z, cmap="Greens") </syntaxhighlight> Les échelles de couleur disponibles sont données à la page : : {{lien web | url = https://matplotlib.org/api/pyplot_summary.html#matplotlib.pyplot.colormaps | titre = Colors in matplotlib | site = matplotlib | lang = en | consulté le = 2019-04-05 }}. [[Fichier:Champ vecteurs python matplotlib.svg|vignette|Champ de vecteur tracé par Python/Matplotlib.]] On peut aussi faire une carte d'un champ de vecteurs avec la commande <code>plt.quiver()</code> vue précédemment : <syntaxhighlight lang="python"> base = np.arange(10) x, y = np.meshgrid(base, base) ux = -0.1*y uy = 0.1*x plt.quiver(x, y, ux, uy, scale_units="xy", scale = 1, angles="xy") </syntaxhighlight> == Surfaces 3D == [[Fichier:Surface3D sinFoisSin python matplotlib.svg|vignette|Surface ''z'' = sin(''x'') × sin(''y'') tracée avec Python/Matplotlib.]] Il est également possible de tracer des surfaces 3D. Il faut pour cela charger <code>Axes3D</code> du module <code>mpl_toolkits.mplot3d</code> ; cela donne accès au paramètre <code>projection="3d"</code> lorsque l'on définit le système d'axes. Par exemple : <syntaxhighlight lang="python"> from mpl_toolkits.mplot3d import Axes3D # permet d'utiliser l'attribut projection="3d" x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) plt.figure() ax = plt.axes(projection="3d") ax.contour(X, Y, Z, zdir="z", offset=-1) # projection sur le plan z = -1 ax.plot_surface(X, Y, Z, alpha=0.8) </syntaxhighlight> On peut changer l'angle de vue du système d'axes avec les paramètres <code>elev</code> (élévation) et<code>azim</code> (azimut). Par exemple <syntaxhighlight lang="python"> ax = plt.axes(projection="3d", elev = 10, azim = 90) </syntaxhighlight> == Mise en forme de la figure == La figure dispose de paramètres de mise en forme : * <code lang="python">figsize</code> : liste des dimensions (largeur, hauteur) en pouces (valeur par défaut <code>[6.4, 4.8]</code>) ; * <code lang="python">dpi</code> : résolution en points par pouce (valeur par défaut <code>100</code>) ; * <code lang="python">facecolor</code> : couleur de fond (valeur par défaut <code>white</code>) ; * <code lang="python">edgecolor</code> : couleur du filet de bordure (valeur par défaut <code>white</code>) ; * <code lang="python">layout</code> : définit le placement des objets pour éviter les effets indésirables (par exemple le recouvrement, valeur par défaut <code>none</code>). Par exemple : <syntaxhighlight lang="python"> M = np.random.randn(50) fig = plt.figure(figsize = [10, 6]) plt.plot(M) </syntaxhighlight> == Mise en forme du texte == Si l'on veut utiliser le style LaTeX, on utilise : <syntaxhighlight lang="python"> plt.rcParams["text.usetex"] = True […] plt.xlabel("$x$") </syntaxhighlight> == Dessins == Les dessins portent le nom de « pièces » ''({{lang|en|patch}})''. Les fonctions pour les créer se trouvent dans le module <code>matplotlib.patches</code>. Ces fonctions permettent de ''créer'' les pièces mais pour les ''dessiner'' (c'est-à-dire les mettre sur la « toile »), il faut utiliser la méthode <code>.add_patch()</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # système d'axes occupant toute la figure ax.set_xlim(0, 2) # axes gradués de 0 à 2 ax.set_ylim(0, 2) # Création des pièces cercle = Circle((0.25, 0.25), 0.1) # cercle de centre (0,25 ; 0,25) et de rayon 0,1 polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) # polygone à trois sommets (triangle) # Dessin des pièces ax.add_patch(cercle) ax.add_patch(polygone) </syntaxhighlight> Le dessin des pièces une par une est un processus assez long. Il est intéressant de créer une collection et de dessiner cette collection d'un seul tenant. On a pour cela recours au module <code>matplotlib.collections</code>. Le code devient donc : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon from matplotlib.collections import PatchCollection fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) cercle = Circle((0.25, 0.25), 0.1) polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) coll = PatchCollection((cercle, polygone)) ax.add_collection(coll) </syntaxhighlight> Il est possible de dessiner des chemins ''({{lang|en|path}})''. {{loupe|Découvrir le SVG/Chemins}} On a pour cela recours au module <code>matplotlib.path</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import PathPatch from matplotlib.path import Path fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) # Création du chemin chemin = Path([[0.25, 0.5], [0.25, 1.5], [0.75, 1.5]], [Path.MOVETO, Path.CURVE3, Path.CURVE3]) # Création de la pièce à partir du chemin pieceChemin = PathPatch(chemin) # Dessin de la pièce ax.add_patch(pieceChemin) </syntaxhighlight> Ici, nous disons à la « plume » de se rendre ''({{lang|en|move to}})'' au point de coordonnées (0,25 ; 0,25), puis de tracer une courbe de Bézier quadratique ''({{lang|en|curve 3}})'' jusqu'au point (0,75 ; 1,5) avec comme point de contrôle intermédiaire (0,25 ; 1,5). == Transformation des objets graphiques == Il est possible de faire subir des transformations linéaires aux objets graphiques<ref>{{lien web |url=https://matplotlib.org/stable/api/transformations.html |titre=matplotlib.transforms |site=Matplotlib.org |consulté le=2023-04-14}}.</ref>. On utilise pour cela le module <code lang="python">matplotlib.transforms</code> (au pluriel) et l'attribut <code lang="python">transform</code> (au singulier) des commandes pyplot. Par exemple, pour tourner un objet de 90° : <syntaxhighlight lang="python"> import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as transforms donnees = np.random.randn(20) # points au hasard base = plt.gca().transData # base de la transformation rotation = transforms.Affine2D().rotate_deg(90) # rotation de 90° plt.plot(donnees, transform = rotation + base) </syntaxhighlight> La transformation <code>transforms.Affine2D()</code> a normalement pour argument une matrice 3 × 3 classique en géométrie. Lorsque l'on est en deux dimensions, cette matrice a la forme : <math>\begin{pmatrix} a & b & 0 \\ c & d & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> {{loupe|w:Matrice de transformation}} Les méthodes d'<code>Affine2D()</code> permettent de générer automatiquement cette matrice. Par exemple, <code>transforms.Affine2D().rotate(θ)</code> (angle θ en radians ; on utilise <code>.rotate_deg()</code> pour des angles en degrés) crée la matrice de rotation : <math>\begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> On peut donner directement la matrice M (de type <code>np.array()</code> avec <code>transforms.Affine2D().set_matrix(M)</code>. On peut indiquer les valeurs sous la forme d'une liste avec <code>transforms.Affine2D().from_values(a, c, b, d, 0, 0)</code> (notez l'ordre des paramètres). == Créer un GIF animé == Il existe plusieurs modules permettant de créer un GIF animé dans Python. === Avec le module PIL (Python imaging library) === La première étape consiste à créer un n-uplet contenant les noms de tous les fichiers image, dans l'ordre ; nous l'appelons <code>imgs</code>. Puis, nous créons un n-uplet contenant les pointeurs vers les images, ouverte avec <code>PIL.Images.open()</code> ; nous l'appelons <code>trames</code>. Nous créons le fichier GIF animé en utilisant la méthode <code>.save()</code> du n-uplet <code>trames</code> <syntaxhighlight lang="python"> from PIL import Image imgs=[] # initialisation du n-uplet for i in range(10): # nom des images : "fichieri.png", i étant un entier ("fichier0.png", "fichier1.png" etc.) imgs.append("fichier"+str(i)+".png") trames = [] for i in imgs: nouv_trame = Image.open(i) trames.append(nouv_trame) trames[0].save("animation.gif", format="GIF", append_images=trames[1:], save_all=True, duration=300, # durée en milliseconde loop=0) # pour boucler ; </syntaxhighlight> ; Ressources * https://pillow.readthedocs.io/ == Les couches de <code>matplotlib</code> == : {{lien web | url=https://matplotlib.org/tutorials/intermediate/artists.html | titre = Artist tutorial | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} : {{lien web | url=https://matplotlib.org/api/artist_api.html | titre = Artist API | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} Pour bien comprendre la documentation du module <code>matplotlib</code>, il faut comprendre sa structure en couches. Cela n'est pas indispensable pour l'utilisation élémentaire du module, mais connaître ce vocabulaire devient important pour une utilisation avancée. Le module <code>matplotlib</code> est organisé en trois couches : * la toile ({{lang|en|<code>FigureCanvas</code>}}) : c'est l'espace sur lequel le tracé est fait ; * le restituteur ({{lang|en|<code>Renderer</code>}}) : c'est l'objet chargé d'effectuer les tracés sur la toile ; * les artistes ({{lang|en|<code>Artist</code>}}) : ce sont les classes des objets destinés à être tracés. Il faut distinguer le tracé ''({{lang|en|plot}})'', qui consiste à traduire les données en objets à tracer en utilisant les artistes, et la publication ''({{lang|en|show}})'' qui consiste à afficher les tracés à l'écran ou à les écrire dans un fichier. La publication est le rôle de la « face cachée » ''({{lang|en|backend}})''. Cette structure en trois couches facilite la tâche de l'utilisateur : vous n'avez à vous concentrer qu'aux données et au type et style de tracé (en manipulant les artistes), la face cachée s'occupe de gérer la partie logicielle et matérielle (différence de système d'exploitation, de carte graphique, de format de fichier). La face cachée est donc une couche « abstraite », que l'utilisateur ne voit quasiment jamais. Dans les cas les plus simples, l'utilisation d'un artiste provoque aussi sa publication : si l'on fait un <code>.plot()</code>, la courbe s'affiche à l'écran. Mais dans certains cas, il faut indiquer à Python de publier le graphique ; par exemple, s'il y a des opérations de tracé longues à faire, on a intérêt à tout afficher à la fin, une fois toutes les opérations faites. C'est la raison d'être des fonctions et méthodes <code>.show()</code> ou <code>.draw()</code>. On distingue ainsi deux types d'artistes : les contenants et les primitives. Nous avons ainsi l'organisation suivante : * face cachée ({{lang|en|<code>backend</code>}}) ** toile ({{lang|en|<code>FigureCanvas</code>}}) ** restituteur ({{lang|en|<code>Renderer</code>}}) * artistes ({{lang|en|<code>Artist</code>}}) ** conteneurs ({{lang|en|<code>container</code>}}) *** figure ({{lang|en|<code>Figure</code>}}) **** systèmes d'axes ({{lang|en|<code>Axes</code>}}) ***** axes ({{lang|en|<code>axis</code>}}) ****** graduations ({{lang|en|<code>ticks</code>}}) ***** légendes ({{lang|en|<code>legend</code>}}) **** … ** primitives ({{lang|en|<code>primitive</code>}}) *** courbes ({{lang|en|<code>Line2D</code>}}) *** textes ({{lang|en|<code>Text</code>}}) *** bords ({{lang|en|<code>Spine</code>}}) *** pièces ({{lang|en|<code>Patch</code>}}) *** … == Notes et références == {{références}} ---- [[../Éléments de programmation|Éléments de programmation]] &lt; [[../|↑]] &gt; [[../Manipulation de matrices|Manipulation de matrices]] [[Catégorie:Python pour le calcul scientifique (livre)]] 3uv4227hv7qtqqy2jefluwsxua1n4g7 772227 772226 2026-09-15T07:50:31Z Cdang 1202 /* Annotations */ corr. 772227 wikitext text/x-wiki Rappel : les programmes commencent par : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt </syntaxhighlight> Nous avons déjà vu un premier tracé élémentaire : ''[[../Découverte de Python et de Jupyter#Premier tracé graphique|Découverte de Python et de Jupyter &gt; Premier tracé graphique]]'' ; nous en présentons un autre plus loin : ''[[../Statistiques#Fréquence, histogramme|Statistiques &gt; Fréquence, histogramme]]''. {| class="wikitable" border="0" |- | <syntaxhighlight lang="python"> x = np.arange(0, 2, 0.1) y = x**2 plt.plot(x, y, label="y = x^2") plt.xlabel("x") plt.ylabel("y") plt.title("Graphes de fonctions") plt.legend() plt.show() </syntaxhighlight> | [[Fichier:Graphe fct carre Python Matplotlib Jupyter.png|300px]] |- | <syntaxhighlight lang="python"> M = np.random.randn(50) plt.plot(M, np.ones_like(M), "|") plt.hist(M, bins=10, density=1) plt.show() </syntaxhighlight> | [[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|300px]] |} Nous allons approfondir le sujet. == Concepts de base == === Exemple === [[Fichier:Nomenclature figure python matplotlib fct trigo.svg|thumb|upright=2.5|Nom des différents objets constituant une figure de Python/Matplotlib.]] Considérons un tracé un peu plus avancé : il consiste en deux graphiques représentant les graphes des fonctions cosinus et sinus. Voici deux manières de le réaliser : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) fig, liste_axes = plt.subplots(2, 1, layout="constrained") fig.suptitle("Fonctions trigonométriques") liste_axes[0].plot(x, ycos) liste_axes[0].set_title("cosinus") liste_axes[0].set_xlabel("x") liste_axes[0].set_ylabel("y") liste_axes[1].plot(x, ysin) liste_axes[1].set_title("sinus", pad = 5) liste_axes[1].set_xlabel("x") liste_axes[1].set_ylabel("y") plt.savefig("fonctions_trigo_pyplot.svg", format="svg") </syntaxhighlight> Ou bien <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) plt.subplots(layout="constrained") plt.suptitle("Fonctions trigonométriques") plt.subplot(2, 1, 1) plt.plot(x, ycos) plt.title("cosinus") plt.xlabel("x") plt.ylabel("y") plt.subplot(2, 1, 2) plt.plot(x, ysin) plt.title("sinus", pad = 5) plt.xlabel("x") plt.ylabel("y") </syntaxhighlight> === Analyse === ==== Première manière ==== La création de deux graphiques se fait avec la commande <code lang="python">plt.subplot()</code> à laquelle on indique le fait qu'il y a 2 lignes et 1 colonne ; le paramètre <code lang="python">layout="constrained"</code> permet d'avoir une meilleure mise en page. Cette commande retourne deux identifiants : <code lang="python">fig</code>, l'identifiant de la figure, et <code lang="python">liste_axes</code>, les identifiants des deux sous-figures. La méthode <code lang="python">.suptitle()</code> permet de créer un titre général. Pour chaque sous-figure (classe {{lang|en|<code>Axes</code>}}, que l'on pourrait traduire par « système d'axes »), on utilise les méthodes <code lang="python">.plot()</code>pour tracer une courbe, <code>.set_title()</code> pour lui donner un nom et les méthodes <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code> pour les titres des axes. La fonction <code lang="python">plt.savefig()</code> permet d'enregistrer la figure dans un fichier, ici au format [[Découvrir le SVG|SVG]]. Au lieu d'utiliser une matrice <code>liste_axes</code>, on peut aussi utiliser un n-uplet : <syntaxhighlight lang="python"> fig, (axes0, axes1) = plt.subplots(2, 1, layout="constrained") […] axes0.plot(x, ycos) […] axes1.plot(x, ysin) </syntaxhighlight> L'image est constituée de plusieurs objets. Il y en a de deux types : * les contenants qui permettent la mise en page : <code lang="python">Figure</code> (la figure)<ref>{{lien web |url=https://matplotlib.org/stable/api/figure_api.html |titre=matplotlib.figure |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> et <code>Axes</code> (les systèmes d'axes)<ref>{{lien web |url=https://matplotlib.org/stable/api/axes_api.html |titre=matplotlib.axes |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> ; * les primitives : ce sont les objets qui sont tracés à l'écran, essentiellement les <code>Line2D</code> (les courbes)<ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html |titre=matplotlib.lines.Line2D |site=Matplotlib.org |consulté le=2022-05-03}}.</ref>. La <code lang="python">Figure</code> est un grand contenant, c'est lui qui contient tout le dessin ; on parle parfois de « toile » ''({{lang|en|canvas}})''. Les <code>Axes</code> sont les différentes sous-figures ; il y en a ici 2. Les <code lang="python">axis</code> (« axe » en français) — à ne pas confondre avec le terme <code lang="python">Axes</code> précédent — sont au nombre de deux par <code lang="python">Axes</code> : l'axe de ''x'' (<code lang="python">XAxis</code>) et l'axe des ''y'' (<code lang="python">YAxis</code>). ==== Seconde manière ==== Chaque graphique est créé par la fonction <code lang="python">plt.subplot(2, 1, 1)</code>. Les paramètres sont trois nombres : le nombre de lignes du tableau de figures, le nombre de colonnes de ce tableau, et le numéro de la cellule au sein du tableau en suivant le sens de lecture latin (de gauche à droite et de haut en bas). La création des graphiques est précédée de deux fonctions : <code lang="python">plt.subplots(layout="constrained")</code> qui impose une répartition harmonieuse des graphiques, et <code lang="python">plt.suptitle()</code> qui permet d'écrire un titre général. Pour chaque graphique, on a les fonctions : * <code lang="python">plt.plot()</code> qui tracent le graphique ; * <code lang="python">plt.title()</code> qui donnent un titre à chaque graphique ; * <code lang="python">plt.xlabel()</code> et <code lang="python">plt.ylabel()</code> qui nomment les axes. === Styles de codage « pyplot » et « OO » === On voit qu'il y a aussi deux styles de codage, deux manières de rédiger. La première est la manière « pyplot » : la figure est décrite comme un automate fini ''({{lang|en|state machine}})'', elle ne peut avoir qu'un nombre fini d'états et les fonctions font des transitions entre deux états. On utilise aussi l'expression « à la manière de Matlab ». On utilise des fonctions de l'espace de nom <code lang="python">matplotlib.pylot (plt)</code>, ici : <code lang="python">plt.subplots()</code>, <code lang="python">plt.savefig()</code> et dans les exemples précédents, <code>plt.plot()</code>, <code>plt.hist()</code lang="python">, <code lang="python">plt.xlabel()</code>, <code lang="python">plt.ylabel()</code>, <code lang="python">plt.title()</code>, <code lang="python">plt.legend()</code> et <code lang="python">plt.show()</code>. La seconde manière est la manière « orientée objet » (OO) : comme nous avons défini des objets (la <code lang="python">Figure</code>, les <code lang="python">Axes</code>), nous pouvons utiliser des méthodes spécifiques à ces classes. C'est ainsi que nous avons les méthodes <code lang="python">fig.suptitle()</code>, <code lang="python">liste_axes[:].plot()</code>, <code lang="python">.set_title()</code>, <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code>. Dans la manière OO, il faut donc connaître les identifiants des objets pour pouvoir utiliser leurs méthodes. La manière la plus simple est de créer explicitement les objets et d'assigner leur identifiant à des variables à cette occasion, par exemple : <syntaxhighlight lang="python"> fig, sysAxes = plt.subplots(1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = fig.add_subplot(1, 1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou encore <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = plt.axes() courbe = sysAxes.plot(x, y) </syntaxhighlight> L'autre manière consiste à laisser pyplot tout créer tout seul, puis à récupérer les identifiants : <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes courbe = sysAxes.lines[0] </syntaxhighlight> ou bien <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = fig.axes[0] courbe = sysAxes.lines[0] </syntaxhighlight> == Mise en forme d'une courbe == Considérons une courbe unique. Nous pouvons changer l'apparence de la courbe en passant des paramètres lors de sa création. La première manière consiste à utiliser une chaîne de caractères comprenant : * une lettre pour la couleur : <code>k</code> pour le noir ''({{lang|en|blac'''k''')}}'', <code>y</code> pour jaune ''({{lang|en|yellow)}}''… * un ou deux caractères pour le type de trait : <code>-</code> pour un trait continu, <code>--</code> pour un trait discontinu… * un caractère pour la forme des marqueurs : <code>o</code> pour des ronds, un <code>s</code> pour un carré ''({{lang|en|square)}}'', un <code>d</code> pour un losange ''({{lang|en|diamond}})'', un <code>v</code> ou un <code>^</code> pour un triangle pointe en bas ou en haut… Par exemple : <syntaxhighlight lang="python"> plt.plot(x, y, "r--") # trait discontinu rouge axes0 = plt.axes() axes0.plot(x, y, "go") # cercles verts </syntaxhighlight> {| class="wikitable" |+ Caractères de mise en forme de courbe |- ! colspan="2" scope="col" | Couleur ! colspan="2" scope="col" | Marqueur |- ! scope="col" | Caractère || Couleur ! scope="col" | Caractère || Symbole |- | <code>b</code> || bleu | <code>.</code> || point • |- | <code>g</code> || vert | <code>,</code> || point d'un pixel ⋅ |- | <code>r</code> || rouge | <code>o</code> || cercle ○ |- | <code>c</code> || cyan | <code>v</code> || triangle pointe en bas ▽ |- | <code>m</code> || magenta | <code>^</code> || triangle pointe en haut △ |- | <code>y</code> || jaune | <code>&lt;</code> || triangle pointe à gauche ◁ |- | <code>k</code> || noir | <code>&gt;</code> || triangle pointe à droite ▷ |- | <code>w</code> || blanc | <code>s</code> || carré □ |- ! colspan="2" scope="col" | Style de ligne | <code>p</code> || pentagone |- ! scope="col" | Caractère || Style | <code>1</code> à <code>4</code> || étoile à trois branches de différentes orientations |- | <code>-</code> || ligne continue | <code>*</code> || étoile ✭ |- | <code>--</code> || ligne discontinue | <code>h</code>, <code>H</code> || hexagone sur la pointe ⬢ ou sur le plat ⬣ |- | <code>-.</code> || trait mixte | <code>+</code> || croix droite + |- | <code>:</code> || trait pointillé | <code>x</code> || croix de saint André × |- | || | <code>D</code>, <code>d</code> || losange carré ◇ ou étroit ◊ |- | || | <code><nowiki>|</nowiki></code> || trait vertical <nowiki>|</nowiki> |- | || | <code>_</code> || trait horizontal — |} Notez la différence entre <code>".-"</code> qui affiche à la fois un marqueur point et un trait continu, et <code>"-."</code> qui crée un trait mixte. '''Méthodes avancées''' Il est possible de passer les paramètres de manière plus explicite : <syntaxhighlight lang="python"> plt.plot(x, y, color="b", linestyle="dashed", marker="o") </syntaxhighlight> L'attribut <code>color</code> peut être spécifié de plusieurs manières : * par une lettre, comme ci-dessus ; * par un mot, le nom de la couleur ; il y a une cinquantaine de nom définis comme par exemple <code>blue</code>, <code>lightblue</code>, <code>darkblue</code>, <code>grey</code>, <code>chocolate</code>, <code>fuschia</code><ref>voir {{lien web | url = https://matplotlib.org/tutorials/colors/colors.html | titre = Specifying colors | site = Matplotlib | lang = en | consulté le = 2019-03-30 }}.</ref>… * avec le nom de la couleur dans la palette T10 ; les dix noms sont <code>tab:blue</code>, <code>tab:orange</code>, <code>tab:green</code>, <code>tab:red</code>, <code>tab:purple</code>, <code>tab:brown</code>, <code>tab:pink</code>, <code>tab:gray</code>, <code>tab:olive</code> et <code>tab:cyan</code> ; ce sont les couleurs utilisées par défaut ; * par un code RVB, les composante R, V et B étant indiquées en hexadécimal entre <code>00</code> et <code>FF</code> : <code>color = "#00FF00"</code> (bleu) ; on peut utiliser le canal alpha en quatrième composante (RVBA) : <code>color = "#00FF0080"</code> ; la composante A va de <code>00</code> pour du parfaitement transparent à <code>FF</code> pour du totalement opaque. L'attribut <code>linestyle</code> peut être indiqué par des caractères comme précédemment ; on peut également utiliser les noms : <code>dashed</code> (discontinu), <code>dashdot</code> (mixte), <code>dotted</code> (pointillés), <code>solid</code> (continu) ou bien <code>None</code> ou une chaîne vide (pas de tracé). On peut ajouter d'autres attributs, en particulier * <code>linewidth</code> ou <code>lw</code> qui définit l'épaisseur du trait ; * <code>linestyle</code> ou <code>ls</code> qui définit le style du trait ; peut prendre les valeurs <code>"solid"</code> (<code>"-"</code>), <code>"dotted"</code> (<code>":"</code>), <code>"dashed"</code> (<code>"--"</code>) ou <code>"dashdot"</code> (<code>"-."</code>) ;<br /> le paramètre peut aussi prendre un n-uplet <code>(décalage, (longeur, espace))</code> ou <code>(décalage, (longeur1, espace1, loongueur2, espace2))</code> (une longueur de 1 désigne un point) ; * <code>dashes</code> : permet de définir un trait discontinu avec un doublet (2-uplet) indiquant le nombre de points affichés et le nombre de points non-affichés, par exemple <code>dashes=(4, 2)</code> ; on peut alterner plusieurs couples comme <code>dashes=(8, 2, 4, 2)</code> * <code>markeredgecolor</code> : couleur du trait du symbole marqueur ; * <code>markeredgewidth</code> : épaisseur du trait du symbole marqueur (en points) ; * <code>markerfacecolor</code> : couleur de remplissage du symbole marqueur ; * <code>fillstyle</code> : permet de ne remplir qu'une moitié du symbole marqueur ; prend les valeurs <code>top</code>, <code>right</code>, <code>bottom</code> et <code>left</code> pour indiquer la moitié remplie ; * <code>markersize</code> : taille du symbole marqueur (en points). Avec le style de codage orienté objet, cela donne : <syntaxhighlight lang="python"> courbe = plt.plot(x, y) courbe[0].set_linestyle("--") # ou bien courbe, = plt.plot(x, y) courbe.set_linestyle("--") # ou encore plt.plot(x, y) axes = plt.gca() courbe = axes.lines[0] courbe.set_linestyle("--") </syntaxhighlight> Les principales méthodes des objets Line2D sont : <code>.set_color()</code>, <code>.set_linestyle()</code>, <code>.set_linewidth()</code>, <code>.set_dashes()</code>, <code>.set_marker()</code> et tous les <code>.set_marker…()</code> (<code>edgecolor</code>, <code>edgewidth</code><code>facecolor</code>, <code>size</code>). ; Ressources * {{lien web | url = https://matplotlib.org/tutorials/introductory/pyplot.html | titre = Pyplot tutorial | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot | titre = matplotlib.pyplot.plot | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle | titre = matplotlib.lines.Line2D.set_linestyle | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} == Annotations == Nous parlons ici le fait de placer des annotations sur une figure et non pas la notion d'annotation en programmation. Il est possible de placer du texte avec la commande <code>plt.text(x, y, chaine)</code> où (''x'', ''y'') sont les coordonnées, dans le repère du tracé, où l'on veut placer le texte, et ''chaine'' est une chaîne de caractères. On peut modifier l'orientation de ce texte avec le paramètre <code lang="python">rotation</code> exprimé en degrés, par exemple : <syntaxhighlight lang="python"> plt.text(0, 0, "origine", rotation=90) </syntaxhighlight> Par ailleurs, la classe <code>Axes</code> dispose d'une méthode <code>.annotate()</code> ; on peut aussi utiliser la fonction <code>plt.annotate()</code>.. Dans sa forme la plus simple, on indique une chaîne correspondant à l'étiquette et un doublet (2-uplet) ou une liste indiquant les coordonnées où placer l'étiquette. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) courbe = plt.plot(x, ycos) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes ymin = ycos.min() # trouve la veleur minimale de ycos imin = ycos.argmin() # trouve l'indice correspondant au minimum xmin = x[imin] sysAxes.annotate("min", (xmin, ymin)) </syntaxhighlight> Telle quelle, l'étiquette empiète sur la courbe. On peut placer l'étiquette à des coordonnées particulières avec l'attribut <code>xytext</code> cet attribut reçoit un doublet ou une liste de coordonnées (''x'', ''y''). Par ailleurs, on peut relier l'étiquette au point visé avec l'attribut <code>arrowsprop</code> (''{{lang|en|arrow's properties}}'', propriétés de la flèche). Cet attribut reçoit un dictionnaire de propriétés, <code>arrowsprop=dict(…)</code> ou bien <code>arrowsprop={…}</code>. Par exemple, pour avoir simplement un trait, ce dictionnaire contient <code>arrowstyle="-"</code> ; pour une flèche, <code>arrowstyle="->"</code> ou <code>arrowstyle="<-"</code>, et pour une flèche double <code>arrowstyle="<->"</code>. Par exemple, avec l'exemple précédent : <syntaxhighlight lang="python"> sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops=dict(arrowstyle="->")) # ou bien sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops={"arrowstyle":"->"}) </syntaxhighlight> Les styles de flèche ''({{lang|en|arrowstyle}})'' disponibles sont : * <code>-</code> : trait simple ; * <code>&lt;-</code>, <code>-&gt;</code>, <code>&lt;-&gt;</code> : flèches ; * <code>&lt;|-</code>, <code>-|&gt;</code>, <code>&lt;|-|&gt;</code> : têtes triangulaires ; * <code>]-</code>, <code>-[</code>, <code>]-[</code> : crochets ; * <code>|-|</code> : barre ; <code>]-&gt;</code>, <code>&lt;-[</code> : crochet d'un côté, flèche de l'autre ; * <code>simple</code>, <code>fancy</code>, <code>wedge</code> : variantes de <code>-&gt;</code>. ; Ressource : {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html | titre = matplotlib.axes.Axes.annotate | lang = en | site = Matplotlib | consulté le = 2019-04-07 }} == Autres exemples de tracés 2D == [[Fichier:Sinus trace matplotlib escalier batons fleches.svg |vignette |Trois types de tracés de la fonction sinus avec Python/Matplotlib]] Par exemple avec : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = np.sin(x) fig, listeAxes = plt.subplots(3, 1, layout="constrained") # Tracé en escalier listeAxes[0].step(x, y) # tracé en bâtons listeAxes[1].bar(x, y, width = 0.03) # Tracé en flèches listeAxes[2].quiver(x[:-1], y[:-1], np.diff(x), np.diff(y), scale_units="xy", scale=1, angles="xy", width=0.02) </syntaxhighlight> == Gestion des échelles == Pour fixer les valeurs extrêmes des axes, on utilise les commandes <code lang="python">plt.xlim(''min'', ''max'')</code> et <code lang="python">plt.ylim(''min'', ''max'')</code>. Pour avoir une échelle logarithmique, respectivement en ''x'' et en ''y'', on utilise les commandes <code lang="python">plt.xscale("log")</code> et <code lang="python">plt.yscale("log")</code>. Ces fonctions peuvent recevoir les paramètres suivants : * <code>linear</code> : échelle linéaire (valeur par défaut) ; * <code>log</code> : échelle logarithmique ; * <code>symlog</code> : échelle logarithmique symétrique, c'est-à-dire avec la transformation <math>\mathrm{Y} = \sgn(y) \cdot \log_{10}(1 + |y/\mathrm{C}|)</math> avec C = 1/ln(10) ; nous avons ainsi des valeurs positives et négative sans avoir la singularité en 0 ; * <code>logit</code> : l'échelle est transformée par la fonction [[w:fr:Logit|logit]]. On peut superposer une grille avec la commande <code lang="python">plt.grid(True)</code>. S'il y a trop de graduations sur un axe, on peut réduire le nombre de graduations avec : <syntaxhighlight lang="python"> from matplotlib.ticker import NullFormatter # […] plt.gca().yaxis.set_minor_formatter(NullFormatter()) </syntaxhighlight> On peut imposer les valeurs graduées : <syntaxhighlight lang="python"> plt.gca().set_xticks([0, 1, 2, 3]) </syntaxhighlight> On peut imposer le fait d'avoir les mêmes échelles en ''x'' ou en ''y'' avec les mots-clefs <code lang="python">sharex</code> et <code lang="python">sharey</code>. Par exemple : <syntaxhighlight lang="python"> fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig, axs = plt.subplots(2,1, sharex=True) </syntaxhighlight> Si l'on veut que l'échelle en ''x'' soit la même que l'échelle en ''y'', on peut utiliser la méthode <code lang="python">set_aspect()</code><ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html |titre=matplotlib.axes.Axes.set_aspect |site=Matplotlib.org |consulté le=2022-05-03}}</ref> des objets <code lang="python">axes</code>, par exemple <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> Si l'on veut que le graphique soit carré, on utilise le mot-clef <code lang="python">square</code> de l'objet <code lang="python">axis</code> : <syntaxhighlight lang="python"> plt.axis("square") </syntaxhighlight> Si l'on veut que les échelles sur les axes ''x'' et ''y'' soient de pas identiques, par exemple pour qu'un carré soit un carré et un demi-cercle ne soit pas une demie ellipse, on utilise : <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> == Plusieurs courbes sur un même système d'axes == Pour mettre plusieurs courbes sur un même système d'axes, on peut soit les créer les unes après les autres : <syntaxhighlight lang="python"> plt.plot(x1, y1) plt.plot(x2, y2) </syntaxhighlight> Soit les mettre dans la même commande : <syntaxhighlight lang="python"> plt.plot(x1, y1, x2, y2) </syntaxhighlight> Matplotlib définit lui-même des couleurs différentes. On peut bien évidemment forcer le style des courbes. On peut également ajouter une étiquette ''({{lang|en|label}})'' qui sera ensuite affichée dans la légende : <syntaxhighlight lang="python"> plt.plot(x1, y1, "k", label="courbe 1") plt.plot(x2, y2, "b", label="courbe 1") plt.legend() # ou bien courbes = plt.plot(x1, y1, "k", x2, y2, "b") courbes[0].set_label("courbe 1") courbes[1].set_label("courbe 2") plt.legend() # ou bien courbes = plt.plot(x1, y1, x2, y2) courbes[0].set(color="k", label="courbe 1") courbes[1].set(color="b", label="courbe 2") plt.legend() </syntaxhighlight> On peut choisir l'emplacement de la légende avec le paramètre <code lang="python">loc</code> qui peut prendre les valeurs <code lang="python">"upper left"</code>, <code lang="python">"upper center"</code>, <code lang="python">"upper right"</code>, <code lang="python">"center left"</code>… la valeur est composée de deux adjectifs : * premier adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">upper</code> signifie en haut, ** <code lang="en">lower</code> signifie en bas ; * second adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">left</code> signifie à gauche, ** <code lang="en">right</code> signifie à droite. Par exemple : <syntaxhighlight lang="python"> plt.legend(loc="upper right") </syntaxhighlight> Si l'on veut des courbes avec des échelles en ''y'' différentes, il faut créer un axe ''x'' « jumeau » ''({{lang|en|twin}})'' avec la méthode <code>.twinx()</code>. Par exemple : <syntaxhighlight lang="python"> fig, axe = plt.subplots(figsize=(5, 5)) plt.suptitle("Chargement") axe2 = axe.twinx() axe.plot(forces) axe.set_xlabel("Étape") axe.set_ylabel("F (N)") axe2.plot(contraintes) axe2.set_ylabel("σ (MPa)") </syntaxhighlight> == Tracé polaire == [[Fichier:Courbe polaire rayon aleatoire python matplotlib.svg |vignette |Exemple de courbe polaire avec Python/Matplotlib.]] [[File:Rose des vents exemple Python.svg|thumb|Rose des vents avec des données arbitraires, utilisé pour un exemple de création de graphique avec le langage Python/Matplotlib.]] Un tracé polaire s'obtient avec la commande <code>plt.polar()</code>, par exemple : <syntaxhighlight lang="python"> theta = np.linspace(0, 2*np.pi, 20) # angle r = 1 + 0.2*np.random.randn(20) # rayon plt.polar(theta, r) # courbe polaire </syntaxhighlight> Voici un exemple avec deux courbes superposées et une mise en forme des graduations et de la légende : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt # ************** # * Constantes * # ************** # positions angulaires angles = 2*np.pi*np.linspace(0, 1, 9) # huitièmes de cercle radDeg = 180/np.pi # conversion radians → degrés etoile = np.array([1, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1]) # Tracé de l'étoile vents = np.array([2.85, 3.34, 5.2, 4.025, 4.9, 9.63, 7.5, 2.35, 2.85]) # Fréquence (unité arbitraire) vents = vents/vents.max() # normalisation # *********** # * Traçage * # *********** courbes = plt.polar(angles, etoile, angles, vents) # tracé # mise en forme axes = plt.gca() courbes[0].set(color="gray") courbes[1].set(color="b", label="Fréquence des vents") plt.legend(bbox_to_anchor=(1.45, 1.05), loc="upper right") # affichage à l'extérieur du tracé axes.set_rticks([0.2, 0.4, 0.6, 0.8, 1]) # graduations radiales axes.set_thetagrids(angles=radDeg*angles[0:-1], labels=("E", "NE", "N", "NO", "O", "SO", "S", "SE")) # graduations angulaires plt.title("Rose des vents") plt.savefig("rose_des_vents.svg", format="svg") plt.show() </syntaxhighlight> == Cartes de valeurs et de vecteurs == [[File:Cartes couleur sinFoisSin python matplotlib.svg|thumb|Lignes de niveau et cartes couleur de ''z'' = sin(''x'') × sin(''y'') par Python/Matplotlib.]] Lorsque l'on a une surface dans un espace à trois dimensions, de type ''z'' = ƒ(''x''&htinsp;, ''y''&thinsp;), on peut afficher les données sur la forme d'une carte : * lignes de niveau : on utilise la fonction <code>np.contour()</code> ; * surfaces de niveau : <code>np.contourf()</code> ; * carte de couleurs : <code>np.pcolormesh()</code>. La fonction <code>colorbar()</code> permet d'afficher l'échelle de couleurs. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) fig, liste_axes = plt.subplots(2, 2, layout="constrained") im1 = liste_axes[0, 0].contour(X, Y, Z) fig.colorbar(im1, ax=liste_axes[0, 0]) im2 = liste_axes[0, 1].contourf(X, Y, Z) fig.colorbar(im2, ax=liste_axes[0, 1]) im3 = liste_axes[1, 0].pcolormesh(X, Y, Z) fig.colorbar(im3, ax=liste_axes[1, 0]) </syntaxhighlight> La palette de couleurs ''({{lang|en|color map}})'' par défaut est ''viridis''. On peut choisir d'autres palettes de couleur avec le paramètre <code>cmap</code> : <syntaxhighlight lang="python"> im3 = liste_axes[1, 0].pcolormesh(X, Y, Z, cmap="Greens") </syntaxhighlight> Les échelles de couleur disponibles sont données à la page : : {{lien web | url = https://matplotlib.org/api/pyplot_summary.html#matplotlib.pyplot.colormaps | titre = Colors in matplotlib | site = matplotlib | lang = en | consulté le = 2019-04-05 }}. [[Fichier:Champ vecteurs python matplotlib.svg|vignette|Champ de vecteur tracé par Python/Matplotlib.]] On peut aussi faire une carte d'un champ de vecteurs avec la commande <code>plt.quiver()</code> vue précédemment : <syntaxhighlight lang="python"> base = np.arange(10) x, y = np.meshgrid(base, base) ux = -0.1*y uy = 0.1*x plt.quiver(x, y, ux, uy, scale_units="xy", scale = 1, angles="xy") </syntaxhighlight> == Surfaces 3D == [[Fichier:Surface3D sinFoisSin python matplotlib.svg|vignette|Surface ''z'' = sin(''x'') × sin(''y'') tracée avec Python/Matplotlib.]] Il est également possible de tracer des surfaces 3D. Il faut pour cela charger <code>Axes3D</code> du module <code>mpl_toolkits.mplot3d</code> ; cela donne accès au paramètre <code>projection="3d"</code> lorsque l'on définit le système d'axes. Par exemple : <syntaxhighlight lang="python"> from mpl_toolkits.mplot3d import Axes3D # permet d'utiliser l'attribut projection="3d" x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) plt.figure() ax = plt.axes(projection="3d") ax.contour(X, Y, Z, zdir="z", offset=-1) # projection sur le plan z = -1 ax.plot_surface(X, Y, Z, alpha=0.8) </syntaxhighlight> On peut changer l'angle de vue du système d'axes avec les paramètres <code>elev</code> (élévation) et<code>azim</code> (azimut). Par exemple <syntaxhighlight lang="python"> ax = plt.axes(projection="3d", elev = 10, azim = 90) </syntaxhighlight> == Mise en forme de la figure == La figure dispose de paramètres de mise en forme : * <code lang="python">figsize</code> : liste des dimensions (largeur, hauteur) en pouces (valeur par défaut <code>[6.4, 4.8]</code>) ; * <code lang="python">dpi</code> : résolution en points par pouce (valeur par défaut <code>100</code>) ; * <code lang="python">facecolor</code> : couleur de fond (valeur par défaut <code>white</code>) ; * <code lang="python">edgecolor</code> : couleur du filet de bordure (valeur par défaut <code>white</code>) ; * <code lang="python">layout</code> : définit le placement des objets pour éviter les effets indésirables (par exemple le recouvrement, valeur par défaut <code>none</code>). Par exemple : <syntaxhighlight lang="python"> M = np.random.randn(50) fig = plt.figure(figsize = [10, 6]) plt.plot(M) </syntaxhighlight> == Mise en forme du texte == Si l'on veut utiliser le style LaTeX, on utilise : <syntaxhighlight lang="python"> plt.rcParams["text.usetex"] = True […] plt.xlabel("$x$") </syntaxhighlight> == Dessins == Les dessins portent le nom de « pièces » ''({{lang|en|patch}})''. Les fonctions pour les créer se trouvent dans le module <code>matplotlib.patches</code>. Ces fonctions permettent de ''créer'' les pièces mais pour les ''dessiner'' (c'est-à-dire les mettre sur la « toile »), il faut utiliser la méthode <code>.add_patch()</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # système d'axes occupant toute la figure ax.set_xlim(0, 2) # axes gradués de 0 à 2 ax.set_ylim(0, 2) # Création des pièces cercle = Circle((0.25, 0.25), 0.1) # cercle de centre (0,25 ; 0,25) et de rayon 0,1 polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) # polygone à trois sommets (triangle) # Dessin des pièces ax.add_patch(cercle) ax.add_patch(polygone) </syntaxhighlight> Le dessin des pièces une par une est un processus assez long. Il est intéressant de créer une collection et de dessiner cette collection d'un seul tenant. On a pour cela recours au module <code>matplotlib.collections</code>. Le code devient donc : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon from matplotlib.collections import PatchCollection fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) cercle = Circle((0.25, 0.25), 0.1) polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) coll = PatchCollection((cercle, polygone)) ax.add_collection(coll) </syntaxhighlight> Il est possible de dessiner des chemins ''({{lang|en|path}})''. {{loupe|Découvrir le SVG/Chemins}} On a pour cela recours au module <code>matplotlib.path</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import PathPatch from matplotlib.path import Path fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) # Création du chemin chemin = Path([[0.25, 0.5], [0.25, 1.5], [0.75, 1.5]], [Path.MOVETO, Path.CURVE3, Path.CURVE3]) # Création de la pièce à partir du chemin pieceChemin = PathPatch(chemin) # Dessin de la pièce ax.add_patch(pieceChemin) </syntaxhighlight> Ici, nous disons à la « plume » de se rendre ''({{lang|en|move to}})'' au point de coordonnées (0,25 ; 0,25), puis de tracer une courbe de Bézier quadratique ''({{lang|en|curve 3}})'' jusqu'au point (0,75 ; 1,5) avec comme point de contrôle intermédiaire (0,25 ; 1,5). == Transformation des objets graphiques == Il est possible de faire subir des transformations linéaires aux objets graphiques<ref>{{lien web |url=https://matplotlib.org/stable/api/transformations.html |titre=matplotlib.transforms |site=Matplotlib.org |consulté le=2023-04-14}}.</ref>. On utilise pour cela le module <code lang="python">matplotlib.transforms</code> (au pluriel) et l'attribut <code lang="python">transform</code> (au singulier) des commandes pyplot. Par exemple, pour tourner un objet de 90° : <syntaxhighlight lang="python"> import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as transforms donnees = np.random.randn(20) # points au hasard base = plt.gca().transData # base de la transformation rotation = transforms.Affine2D().rotate_deg(90) # rotation de 90° plt.plot(donnees, transform = rotation + base) </syntaxhighlight> La transformation <code>transforms.Affine2D()</code> a normalement pour argument une matrice 3 × 3 classique en géométrie. Lorsque l'on est en deux dimensions, cette matrice a la forme : <math>\begin{pmatrix} a & b & 0 \\ c & d & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> {{loupe|w:Matrice de transformation}} Les méthodes d'<code>Affine2D()</code> permettent de générer automatiquement cette matrice. Par exemple, <code>transforms.Affine2D().rotate(θ)</code> (angle θ en radians ; on utilise <code>.rotate_deg()</code> pour des angles en degrés) crée la matrice de rotation : <math>\begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> On peut donner directement la matrice M (de type <code>np.array()</code> avec <code>transforms.Affine2D().set_matrix(M)</code>. On peut indiquer les valeurs sous la forme d'une liste avec <code>transforms.Affine2D().from_values(a, c, b, d, 0, 0)</code> (notez l'ordre des paramètres). == Créer un GIF animé == Il existe plusieurs modules permettant de créer un GIF animé dans Python. === Avec le module PIL (Python imaging library) === La première étape consiste à créer un n-uplet contenant les noms de tous les fichiers image, dans l'ordre ; nous l'appelons <code>imgs</code>. Puis, nous créons un n-uplet contenant les pointeurs vers les images, ouverte avec <code>PIL.Images.open()</code> ; nous l'appelons <code>trames</code>. Nous créons le fichier GIF animé en utilisant la méthode <code>.save()</code> du n-uplet <code>trames</code> <syntaxhighlight lang="python"> from PIL import Image imgs=[] # initialisation du n-uplet for i in range(10): # nom des images : "fichieri.png", i étant un entier ("fichier0.png", "fichier1.png" etc.) imgs.append("fichier"+str(i)+".png") trames = [] for i in imgs: nouv_trame = Image.open(i) trames.append(nouv_trame) trames[0].save("animation.gif", format="GIF", append_images=trames[1:], save_all=True, duration=300, # durée en milliseconde loop=0) # pour boucler ; </syntaxhighlight> ; Ressources * https://pillow.readthedocs.io/ == Les couches de <code>matplotlib</code> == : {{lien web | url=https://matplotlib.org/tutorials/intermediate/artists.html | titre = Artist tutorial | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} : {{lien web | url=https://matplotlib.org/api/artist_api.html | titre = Artist API | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} Pour bien comprendre la documentation du module <code>matplotlib</code>, il faut comprendre sa structure en couches. Cela n'est pas indispensable pour l'utilisation élémentaire du module, mais connaître ce vocabulaire devient important pour une utilisation avancée. Le module <code>matplotlib</code> est organisé en trois couches : * la toile ({{lang|en|<code>FigureCanvas</code>}}) : c'est l'espace sur lequel le tracé est fait ; * le restituteur ({{lang|en|<code>Renderer</code>}}) : c'est l'objet chargé d'effectuer les tracés sur la toile ; * les artistes ({{lang|en|<code>Artist</code>}}) : ce sont les classes des objets destinés à être tracés. Il faut distinguer le tracé ''({{lang|en|plot}})'', qui consiste à traduire les données en objets à tracer en utilisant les artistes, et la publication ''({{lang|en|show}})'' qui consiste à afficher les tracés à l'écran ou à les écrire dans un fichier. La publication est le rôle de la « face cachée » ''({{lang|en|backend}})''. Cette structure en trois couches facilite la tâche de l'utilisateur : vous n'avez à vous concentrer qu'aux données et au type et style de tracé (en manipulant les artistes), la face cachée s'occupe de gérer la partie logicielle et matérielle (différence de système d'exploitation, de carte graphique, de format de fichier). La face cachée est donc une couche « abstraite », que l'utilisateur ne voit quasiment jamais. Dans les cas les plus simples, l'utilisation d'un artiste provoque aussi sa publication : si l'on fait un <code>.plot()</code>, la courbe s'affiche à l'écran. Mais dans certains cas, il faut indiquer à Python de publier le graphique ; par exemple, s'il y a des opérations de tracé longues à faire, on a intérêt à tout afficher à la fin, une fois toutes les opérations faites. C'est la raison d'être des fonctions et méthodes <code>.show()</code> ou <code>.draw()</code>. On distingue ainsi deux types d'artistes : les contenants et les primitives. Nous avons ainsi l'organisation suivante : * face cachée ({{lang|en|<code>backend</code>}}) ** toile ({{lang|en|<code>FigureCanvas</code>}}) ** restituteur ({{lang|en|<code>Renderer</code>}}) * artistes ({{lang|en|<code>Artist</code>}}) ** conteneurs ({{lang|en|<code>container</code>}}) *** figure ({{lang|en|<code>Figure</code>}}) **** systèmes d'axes ({{lang|en|<code>Axes</code>}}) ***** axes ({{lang|en|<code>axis</code>}}) ****** graduations ({{lang|en|<code>ticks</code>}}) ***** légendes ({{lang|en|<code>legend</code>}}) **** … ** primitives ({{lang|en|<code>primitive</code>}}) *** courbes ({{lang|en|<code>Line2D</code>}}) *** textes ({{lang|en|<code>Text</code>}}) *** bords ({{lang|en|<code>Spine</code>}}) *** pièces ({{lang|en|<code>Patch</code>}}) *** … == Notes et références == {{références}} ---- [[../Éléments de programmation|Éléments de programmation]] &lt; [[../|↑]] &gt; [[../Manipulation de matrices|Manipulation de matrices]] [[Catégorie:Python pour le calcul scientifique (livre)]] f7is2760av634anqss08klffismvkxj 772228 772227 2026-09-15T07:50:56Z Cdang 1202 /* Annotations */ typo 772228 wikitext text/x-wiki Rappel : les programmes commencent par : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt </syntaxhighlight> Nous avons déjà vu un premier tracé élémentaire : ''[[../Découverte de Python et de Jupyter#Premier tracé graphique|Découverte de Python et de Jupyter &gt; Premier tracé graphique]]'' ; nous en présentons un autre plus loin : ''[[../Statistiques#Fréquence, histogramme|Statistiques &gt; Fréquence, histogramme]]''. {| class="wikitable" border="0" |- | <syntaxhighlight lang="python"> x = np.arange(0, 2, 0.1) y = x**2 plt.plot(x, y, label="y = x^2") plt.xlabel("x") plt.ylabel("y") plt.title("Graphes de fonctions") plt.legend() plt.show() </syntaxhighlight> | [[Fichier:Graphe fct carre Python Matplotlib Jupyter.png|300px]] |- | <syntaxhighlight lang="python"> M = np.random.randn(50) plt.plot(M, np.ones_like(M), "|") plt.hist(M, bins=10, density=1) plt.show() </syntaxhighlight> | [[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|300px]] |} Nous allons approfondir le sujet. == Concepts de base == === Exemple === [[Fichier:Nomenclature figure python matplotlib fct trigo.svg|thumb|upright=2.5|Nom des différents objets constituant une figure de Python/Matplotlib.]] Considérons un tracé un peu plus avancé : il consiste en deux graphiques représentant les graphes des fonctions cosinus et sinus. Voici deux manières de le réaliser : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) fig, liste_axes = plt.subplots(2, 1, layout="constrained") fig.suptitle("Fonctions trigonométriques") liste_axes[0].plot(x, ycos) liste_axes[0].set_title("cosinus") liste_axes[0].set_xlabel("x") liste_axes[0].set_ylabel("y") liste_axes[1].plot(x, ysin) liste_axes[1].set_title("sinus", pad = 5) liste_axes[1].set_xlabel("x") liste_axes[1].set_ylabel("y") plt.savefig("fonctions_trigo_pyplot.svg", format="svg") </syntaxhighlight> Ou bien <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) plt.subplots(layout="constrained") plt.suptitle("Fonctions trigonométriques") plt.subplot(2, 1, 1) plt.plot(x, ycos) plt.title("cosinus") plt.xlabel("x") plt.ylabel("y") plt.subplot(2, 1, 2) plt.plot(x, ysin) plt.title("sinus", pad = 5) plt.xlabel("x") plt.ylabel("y") </syntaxhighlight> === Analyse === ==== Première manière ==== La création de deux graphiques se fait avec la commande <code lang="python">plt.subplot()</code> à laquelle on indique le fait qu'il y a 2 lignes et 1 colonne ; le paramètre <code lang="python">layout="constrained"</code> permet d'avoir une meilleure mise en page. Cette commande retourne deux identifiants : <code lang="python">fig</code>, l'identifiant de la figure, et <code lang="python">liste_axes</code>, les identifiants des deux sous-figures. La méthode <code lang="python">.suptitle()</code> permet de créer un titre général. Pour chaque sous-figure (classe {{lang|en|<code>Axes</code>}}, que l'on pourrait traduire par « système d'axes »), on utilise les méthodes <code lang="python">.plot()</code>pour tracer une courbe, <code>.set_title()</code> pour lui donner un nom et les méthodes <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code> pour les titres des axes. La fonction <code lang="python">plt.savefig()</code> permet d'enregistrer la figure dans un fichier, ici au format [[Découvrir le SVG|SVG]]. Au lieu d'utiliser une matrice <code>liste_axes</code>, on peut aussi utiliser un n-uplet : <syntaxhighlight lang="python"> fig, (axes0, axes1) = plt.subplots(2, 1, layout="constrained") […] axes0.plot(x, ycos) […] axes1.plot(x, ysin) </syntaxhighlight> L'image est constituée de plusieurs objets. Il y en a de deux types : * les contenants qui permettent la mise en page : <code lang="python">Figure</code> (la figure)<ref>{{lien web |url=https://matplotlib.org/stable/api/figure_api.html |titre=matplotlib.figure |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> et <code>Axes</code> (les systèmes d'axes)<ref>{{lien web |url=https://matplotlib.org/stable/api/axes_api.html |titre=matplotlib.axes |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> ; * les primitives : ce sont les objets qui sont tracés à l'écran, essentiellement les <code>Line2D</code> (les courbes)<ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html |titre=matplotlib.lines.Line2D |site=Matplotlib.org |consulté le=2022-05-03}}.</ref>. La <code lang="python">Figure</code> est un grand contenant, c'est lui qui contient tout le dessin ; on parle parfois de « toile » ''({{lang|en|canvas}})''. Les <code>Axes</code> sont les différentes sous-figures ; il y en a ici 2. Les <code lang="python">axis</code> (« axe » en français) — à ne pas confondre avec le terme <code lang="python">Axes</code> précédent — sont au nombre de deux par <code lang="python">Axes</code> : l'axe de ''x'' (<code lang="python">XAxis</code>) et l'axe des ''y'' (<code lang="python">YAxis</code>). ==== Seconde manière ==== Chaque graphique est créé par la fonction <code lang="python">plt.subplot(2, 1, 1)</code>. Les paramètres sont trois nombres : le nombre de lignes du tableau de figures, le nombre de colonnes de ce tableau, et le numéro de la cellule au sein du tableau en suivant le sens de lecture latin (de gauche à droite et de haut en bas). La création des graphiques est précédée de deux fonctions : <code lang="python">plt.subplots(layout="constrained")</code> qui impose une répartition harmonieuse des graphiques, et <code lang="python">plt.suptitle()</code> qui permet d'écrire un titre général. Pour chaque graphique, on a les fonctions : * <code lang="python">plt.plot()</code> qui tracent le graphique ; * <code lang="python">plt.title()</code> qui donnent un titre à chaque graphique ; * <code lang="python">plt.xlabel()</code> et <code lang="python">plt.ylabel()</code> qui nomment les axes. === Styles de codage « pyplot » et « OO » === On voit qu'il y a aussi deux styles de codage, deux manières de rédiger. La première est la manière « pyplot » : la figure est décrite comme un automate fini ''({{lang|en|state machine}})'', elle ne peut avoir qu'un nombre fini d'états et les fonctions font des transitions entre deux états. On utilise aussi l'expression « à la manière de Matlab ». On utilise des fonctions de l'espace de nom <code lang="python">matplotlib.pylot (plt)</code>, ici : <code lang="python">plt.subplots()</code>, <code lang="python">plt.savefig()</code> et dans les exemples précédents, <code>plt.plot()</code>, <code>plt.hist()</code lang="python">, <code lang="python">plt.xlabel()</code>, <code lang="python">plt.ylabel()</code>, <code lang="python">plt.title()</code>, <code lang="python">plt.legend()</code> et <code lang="python">plt.show()</code>. La seconde manière est la manière « orientée objet » (OO) : comme nous avons défini des objets (la <code lang="python">Figure</code>, les <code lang="python">Axes</code>), nous pouvons utiliser des méthodes spécifiques à ces classes. C'est ainsi que nous avons les méthodes <code lang="python">fig.suptitle()</code>, <code lang="python">liste_axes[:].plot()</code>, <code lang="python">.set_title()</code>, <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code>. Dans la manière OO, il faut donc connaître les identifiants des objets pour pouvoir utiliser leurs méthodes. La manière la plus simple est de créer explicitement les objets et d'assigner leur identifiant à des variables à cette occasion, par exemple : <syntaxhighlight lang="python"> fig, sysAxes = plt.subplots(1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = fig.add_subplot(1, 1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou encore <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = plt.axes() courbe = sysAxes.plot(x, y) </syntaxhighlight> L'autre manière consiste à laisser pyplot tout créer tout seul, puis à récupérer les identifiants : <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes courbe = sysAxes.lines[0] </syntaxhighlight> ou bien <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = fig.axes[0] courbe = sysAxes.lines[0] </syntaxhighlight> == Mise en forme d'une courbe == Considérons une courbe unique. Nous pouvons changer l'apparence de la courbe en passant des paramètres lors de sa création. La première manière consiste à utiliser une chaîne de caractères comprenant : * une lettre pour la couleur : <code>k</code> pour le noir ''({{lang|en|blac'''k''')}}'', <code>y</code> pour jaune ''({{lang|en|yellow)}}''… * un ou deux caractères pour le type de trait : <code>-</code> pour un trait continu, <code>--</code> pour un trait discontinu… * un caractère pour la forme des marqueurs : <code>o</code> pour des ronds, un <code>s</code> pour un carré ''({{lang|en|square)}}'', un <code>d</code> pour un losange ''({{lang|en|diamond}})'', un <code>v</code> ou un <code>^</code> pour un triangle pointe en bas ou en haut… Par exemple : <syntaxhighlight lang="python"> plt.plot(x, y, "r--") # trait discontinu rouge axes0 = plt.axes() axes0.plot(x, y, "go") # cercles verts </syntaxhighlight> {| class="wikitable" |+ Caractères de mise en forme de courbe |- ! colspan="2" scope="col" | Couleur ! colspan="2" scope="col" | Marqueur |- ! scope="col" | Caractère || Couleur ! scope="col" | Caractère || Symbole |- | <code>b</code> || bleu | <code>.</code> || point • |- | <code>g</code> || vert | <code>,</code> || point d'un pixel ⋅ |- | <code>r</code> || rouge | <code>o</code> || cercle ○ |- | <code>c</code> || cyan | <code>v</code> || triangle pointe en bas ▽ |- | <code>m</code> || magenta | <code>^</code> || triangle pointe en haut △ |- | <code>y</code> || jaune | <code>&lt;</code> || triangle pointe à gauche ◁ |- | <code>k</code> || noir | <code>&gt;</code> || triangle pointe à droite ▷ |- | <code>w</code> || blanc | <code>s</code> || carré □ |- ! colspan="2" scope="col" | Style de ligne | <code>p</code> || pentagone |- ! scope="col" | Caractère || Style | <code>1</code> à <code>4</code> || étoile à trois branches de différentes orientations |- | <code>-</code> || ligne continue | <code>*</code> || étoile ✭ |- | <code>--</code> || ligne discontinue | <code>h</code>, <code>H</code> || hexagone sur la pointe ⬢ ou sur le plat ⬣ |- | <code>-.</code> || trait mixte | <code>+</code> || croix droite + |- | <code>:</code> || trait pointillé | <code>x</code> || croix de saint André × |- | || | <code>D</code>, <code>d</code> || losange carré ◇ ou étroit ◊ |- | || | <code><nowiki>|</nowiki></code> || trait vertical <nowiki>|</nowiki> |- | || | <code>_</code> || trait horizontal — |} Notez la différence entre <code>".-"</code> qui affiche à la fois un marqueur point et un trait continu, et <code>"-."</code> qui crée un trait mixte. '''Méthodes avancées''' Il est possible de passer les paramètres de manière plus explicite : <syntaxhighlight lang="python"> plt.plot(x, y, color="b", linestyle="dashed", marker="o") </syntaxhighlight> L'attribut <code>color</code> peut être spécifié de plusieurs manières : * par une lettre, comme ci-dessus ; * par un mot, le nom de la couleur ; il y a une cinquantaine de nom définis comme par exemple <code>blue</code>, <code>lightblue</code>, <code>darkblue</code>, <code>grey</code>, <code>chocolate</code>, <code>fuschia</code><ref>voir {{lien web | url = https://matplotlib.org/tutorials/colors/colors.html | titre = Specifying colors | site = Matplotlib | lang = en | consulté le = 2019-03-30 }}.</ref>… * avec le nom de la couleur dans la palette T10 ; les dix noms sont <code>tab:blue</code>, <code>tab:orange</code>, <code>tab:green</code>, <code>tab:red</code>, <code>tab:purple</code>, <code>tab:brown</code>, <code>tab:pink</code>, <code>tab:gray</code>, <code>tab:olive</code> et <code>tab:cyan</code> ; ce sont les couleurs utilisées par défaut ; * par un code RVB, les composante R, V et B étant indiquées en hexadécimal entre <code>00</code> et <code>FF</code> : <code>color = "#00FF00"</code> (bleu) ; on peut utiliser le canal alpha en quatrième composante (RVBA) : <code>color = "#00FF0080"</code> ; la composante A va de <code>00</code> pour du parfaitement transparent à <code>FF</code> pour du totalement opaque. L'attribut <code>linestyle</code> peut être indiqué par des caractères comme précédemment ; on peut également utiliser les noms : <code>dashed</code> (discontinu), <code>dashdot</code> (mixte), <code>dotted</code> (pointillés), <code>solid</code> (continu) ou bien <code>None</code> ou une chaîne vide (pas de tracé). On peut ajouter d'autres attributs, en particulier * <code>linewidth</code> ou <code>lw</code> qui définit l'épaisseur du trait ; * <code>linestyle</code> ou <code>ls</code> qui définit le style du trait ; peut prendre les valeurs <code>"solid"</code> (<code>"-"</code>), <code>"dotted"</code> (<code>":"</code>), <code>"dashed"</code> (<code>"--"</code>) ou <code>"dashdot"</code> (<code>"-."</code>) ;<br /> le paramètre peut aussi prendre un n-uplet <code>(décalage, (longeur, espace))</code> ou <code>(décalage, (longeur1, espace1, loongueur2, espace2))</code> (une longueur de 1 désigne un point) ; * <code>dashes</code> : permet de définir un trait discontinu avec un doublet (2-uplet) indiquant le nombre de points affichés et le nombre de points non-affichés, par exemple <code>dashes=(4, 2)</code> ; on peut alterner plusieurs couples comme <code>dashes=(8, 2, 4, 2)</code> * <code>markeredgecolor</code> : couleur du trait du symbole marqueur ; * <code>markeredgewidth</code> : épaisseur du trait du symbole marqueur (en points) ; * <code>markerfacecolor</code> : couleur de remplissage du symbole marqueur ; * <code>fillstyle</code> : permet de ne remplir qu'une moitié du symbole marqueur ; prend les valeurs <code>top</code>, <code>right</code>, <code>bottom</code> et <code>left</code> pour indiquer la moitié remplie ; * <code>markersize</code> : taille du symbole marqueur (en points). Avec le style de codage orienté objet, cela donne : <syntaxhighlight lang="python"> courbe = plt.plot(x, y) courbe[0].set_linestyle("--") # ou bien courbe, = plt.plot(x, y) courbe.set_linestyle("--") # ou encore plt.plot(x, y) axes = plt.gca() courbe = axes.lines[0] courbe.set_linestyle("--") </syntaxhighlight> Les principales méthodes des objets Line2D sont : <code>.set_color()</code>, <code>.set_linestyle()</code>, <code>.set_linewidth()</code>, <code>.set_dashes()</code>, <code>.set_marker()</code> et tous les <code>.set_marker…()</code> (<code>edgecolor</code>, <code>edgewidth</code><code>facecolor</code>, <code>size</code>). ; Ressources * {{lien web | url = https://matplotlib.org/tutorials/introductory/pyplot.html | titre = Pyplot tutorial | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot | titre = matplotlib.pyplot.plot | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle | titre = matplotlib.lines.Line2D.set_linestyle | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} == Annotations == Nous parlons ici le fait de placer des annotations sur une figure et non pas la notion d'annotation en programmation. Il est possible de placer du texte avec la commande <code>plt.text(x, y, chaine)</code> où (''x'', ''y'') sont les coordonnées, dans le repère du tracé, où l'on veut placer le texte, et ''chaine'' est une chaîne de caractères. On peut modifier l'orientation de ce texte avec le paramètre <code lang="python">rotation</code> exprimé en degrés, par exemple : <syntaxhighlight lang="python"> plt.text(0, 0, "origine", rotation=90) </syntaxhighlight> Par ailleurs, la classe <code>Axes</code> dispose d'une méthode <code>.annotate()</code> ; on peut aussi utiliser la fonction <code>plt.annotate()</code>.. Dans sa forme la plus simple, on indique une chaîne correspondant à l'étiquette et un doublet (2-uplet) ou une liste indiquant les coordonnées où placer l'étiquette. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) courbe = plt.plot(x, ycos) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes ymin = ycos.min() # trouve la veleur minimale de ycos imin = ycos.argmin() # trouve l'indice correspondant au minimum xmin = x[imin] sysAxes.annotate("min", (xmin, ymin)) </syntaxhighlight> Telle quelle, l'étiquette empiète sur la courbe. On peut placer l'étiquette à des coordonnées particulières avec l'attribut <code>xytext</code> cet attribut reçoit un doublet ou une liste de coordonnées (''x'', ''y''). Par ailleurs, on peut relier l'étiquette au point visé avec l'attribut <code>arrowsprop</code> (''{{lang|en|arrow's properties}}'', propriétés de la flèche). Cet attribut reçoit un dictionnaire de propriétés, <code>arrowsprop=dict(…)</code> ou bien <code>arrowsprop={…}</code>. Par exemple, pour avoir simplement un trait, ce dictionnaire contient <code>arrowstyle="-"</code> ; pour une flèche, <code>arrowstyle="->"</code> ou <code>arrowstyle="<-"</code>, et pour une flèche double <code>arrowstyle="<->"</code>. Par exemple, avec l'exemple précédent : <syntaxhighlight lang="python"> sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops=dict(arrowstyle="->")) # ou bien sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops={"arrowstyle":"->"}) </syntaxhighlight> Les styles de flèche ''({{lang|en|arrowstyle}})'' disponibles sont : * <code>-</code> : trait simple ; * <code>&lt;-</code>, <code>-&gt;</code>, <code>&lt;-&gt;</code> : flèches ; * <code>&lt;|-</code>, <code>-|&gt;</code>, <code>&lt;|-|&gt;</code> : têtes triangulaires ; * <code>]-</code>, <code>-[</code>, <code>]-[</code> : crochets ; * <code>|-|</code> : barre ; * <code>]-&gt;</code>, <code>&lt;-[</code> : crochet d'un côté, flèche de l'autre ; * <code>simple</code>, <code>fancy</code>, <code>wedge</code> : variantes de <code>-&gt;</code>. ; Ressource : {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html | titre = matplotlib.axes.Axes.annotate | lang = en | site = Matplotlib | consulté le = 2019-04-07 }} == Autres exemples de tracés 2D == [[Fichier:Sinus trace matplotlib escalier batons fleches.svg |vignette |Trois types de tracés de la fonction sinus avec Python/Matplotlib]] Par exemple avec : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = np.sin(x) fig, listeAxes = plt.subplots(3, 1, layout="constrained") # Tracé en escalier listeAxes[0].step(x, y) # tracé en bâtons listeAxes[1].bar(x, y, width = 0.03) # Tracé en flèches listeAxes[2].quiver(x[:-1], y[:-1], np.diff(x), np.diff(y), scale_units="xy", scale=1, angles="xy", width=0.02) </syntaxhighlight> == Gestion des échelles == Pour fixer les valeurs extrêmes des axes, on utilise les commandes <code lang="python">plt.xlim(''min'', ''max'')</code> et <code lang="python">plt.ylim(''min'', ''max'')</code>. Pour avoir une échelle logarithmique, respectivement en ''x'' et en ''y'', on utilise les commandes <code lang="python">plt.xscale("log")</code> et <code lang="python">plt.yscale("log")</code>. Ces fonctions peuvent recevoir les paramètres suivants : * <code>linear</code> : échelle linéaire (valeur par défaut) ; * <code>log</code> : échelle logarithmique ; * <code>symlog</code> : échelle logarithmique symétrique, c'est-à-dire avec la transformation <math>\mathrm{Y} = \sgn(y) \cdot \log_{10}(1 + |y/\mathrm{C}|)</math> avec C = 1/ln(10) ; nous avons ainsi des valeurs positives et négative sans avoir la singularité en 0 ; * <code>logit</code> : l'échelle est transformée par la fonction [[w:fr:Logit|logit]]. On peut superposer une grille avec la commande <code lang="python">plt.grid(True)</code>. S'il y a trop de graduations sur un axe, on peut réduire le nombre de graduations avec : <syntaxhighlight lang="python"> from matplotlib.ticker import NullFormatter # […] plt.gca().yaxis.set_minor_formatter(NullFormatter()) </syntaxhighlight> On peut imposer les valeurs graduées : <syntaxhighlight lang="python"> plt.gca().set_xticks([0, 1, 2, 3]) </syntaxhighlight> On peut imposer le fait d'avoir les mêmes échelles en ''x'' ou en ''y'' avec les mots-clefs <code lang="python">sharex</code> et <code lang="python">sharey</code>. Par exemple : <syntaxhighlight lang="python"> fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig, axs = plt.subplots(2,1, sharex=True) </syntaxhighlight> Si l'on veut que l'échelle en ''x'' soit la même que l'échelle en ''y'', on peut utiliser la méthode <code lang="python">set_aspect()</code><ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html |titre=matplotlib.axes.Axes.set_aspect |site=Matplotlib.org |consulté le=2022-05-03}}</ref> des objets <code lang="python">axes</code>, par exemple <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> Si l'on veut que le graphique soit carré, on utilise le mot-clef <code lang="python">square</code> de l'objet <code lang="python">axis</code> : <syntaxhighlight lang="python"> plt.axis("square") </syntaxhighlight> Si l'on veut que les échelles sur les axes ''x'' et ''y'' soient de pas identiques, par exemple pour qu'un carré soit un carré et un demi-cercle ne soit pas une demie ellipse, on utilise : <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> == Plusieurs courbes sur un même système d'axes == Pour mettre plusieurs courbes sur un même système d'axes, on peut soit les créer les unes après les autres : <syntaxhighlight lang="python"> plt.plot(x1, y1) plt.plot(x2, y2) </syntaxhighlight> Soit les mettre dans la même commande : <syntaxhighlight lang="python"> plt.plot(x1, y1, x2, y2) </syntaxhighlight> Matplotlib définit lui-même des couleurs différentes. On peut bien évidemment forcer le style des courbes. On peut également ajouter une étiquette ''({{lang|en|label}})'' qui sera ensuite affichée dans la légende : <syntaxhighlight lang="python"> plt.plot(x1, y1, "k", label="courbe 1") plt.plot(x2, y2, "b", label="courbe 1") plt.legend() # ou bien courbes = plt.plot(x1, y1, "k", x2, y2, "b") courbes[0].set_label("courbe 1") courbes[1].set_label("courbe 2") plt.legend() # ou bien courbes = plt.plot(x1, y1, x2, y2) courbes[0].set(color="k", label="courbe 1") courbes[1].set(color="b", label="courbe 2") plt.legend() </syntaxhighlight> On peut choisir l'emplacement de la légende avec le paramètre <code lang="python">loc</code> qui peut prendre les valeurs <code lang="python">"upper left"</code>, <code lang="python">"upper center"</code>, <code lang="python">"upper right"</code>, <code lang="python">"center left"</code>… la valeur est composée de deux adjectifs : * premier adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">upper</code> signifie en haut, ** <code lang="en">lower</code> signifie en bas ; * second adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">left</code> signifie à gauche, ** <code lang="en">right</code> signifie à droite. Par exemple : <syntaxhighlight lang="python"> plt.legend(loc="upper right") </syntaxhighlight> Si l'on veut des courbes avec des échelles en ''y'' différentes, il faut créer un axe ''x'' « jumeau » ''({{lang|en|twin}})'' avec la méthode <code>.twinx()</code>. Par exemple : <syntaxhighlight lang="python"> fig, axe = plt.subplots(figsize=(5, 5)) plt.suptitle("Chargement") axe2 = axe.twinx() axe.plot(forces) axe.set_xlabel("Étape") axe.set_ylabel("F (N)") axe2.plot(contraintes) axe2.set_ylabel("σ (MPa)") </syntaxhighlight> == Tracé polaire == [[Fichier:Courbe polaire rayon aleatoire python matplotlib.svg |vignette |Exemple de courbe polaire avec Python/Matplotlib.]] [[File:Rose des vents exemple Python.svg|thumb|Rose des vents avec des données arbitraires, utilisé pour un exemple de création de graphique avec le langage Python/Matplotlib.]] Un tracé polaire s'obtient avec la commande <code>plt.polar()</code>, par exemple : <syntaxhighlight lang="python"> theta = np.linspace(0, 2*np.pi, 20) # angle r = 1 + 0.2*np.random.randn(20) # rayon plt.polar(theta, r) # courbe polaire </syntaxhighlight> Voici un exemple avec deux courbes superposées et une mise en forme des graduations et de la légende : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt # ************** # * Constantes * # ************** # positions angulaires angles = 2*np.pi*np.linspace(0, 1, 9) # huitièmes de cercle radDeg = 180/np.pi # conversion radians → degrés etoile = np.array([1, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1]) # Tracé de l'étoile vents = np.array([2.85, 3.34, 5.2, 4.025, 4.9, 9.63, 7.5, 2.35, 2.85]) # Fréquence (unité arbitraire) vents = vents/vents.max() # normalisation # *********** # * Traçage * # *********** courbes = plt.polar(angles, etoile, angles, vents) # tracé # mise en forme axes = plt.gca() courbes[0].set(color="gray") courbes[1].set(color="b", label="Fréquence des vents") plt.legend(bbox_to_anchor=(1.45, 1.05), loc="upper right") # affichage à l'extérieur du tracé axes.set_rticks([0.2, 0.4, 0.6, 0.8, 1]) # graduations radiales axes.set_thetagrids(angles=radDeg*angles[0:-1], labels=("E", "NE", "N", "NO", "O", "SO", "S", "SE")) # graduations angulaires plt.title("Rose des vents") plt.savefig("rose_des_vents.svg", format="svg") plt.show() </syntaxhighlight> == Cartes de valeurs et de vecteurs == [[File:Cartes couleur sinFoisSin python matplotlib.svg|thumb|Lignes de niveau et cartes couleur de ''z'' = sin(''x'') × sin(''y'') par Python/Matplotlib.]] Lorsque l'on a une surface dans un espace à trois dimensions, de type ''z'' = ƒ(''x''&htinsp;, ''y''&thinsp;), on peut afficher les données sur la forme d'une carte : * lignes de niveau : on utilise la fonction <code>np.contour()</code> ; * surfaces de niveau : <code>np.contourf()</code> ; * carte de couleurs : <code>np.pcolormesh()</code>. La fonction <code>colorbar()</code> permet d'afficher l'échelle de couleurs. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) fig, liste_axes = plt.subplots(2, 2, layout="constrained") im1 = liste_axes[0, 0].contour(X, Y, Z) fig.colorbar(im1, ax=liste_axes[0, 0]) im2 = liste_axes[0, 1].contourf(X, Y, Z) fig.colorbar(im2, ax=liste_axes[0, 1]) im3 = liste_axes[1, 0].pcolormesh(X, Y, Z) fig.colorbar(im3, ax=liste_axes[1, 0]) </syntaxhighlight> La palette de couleurs ''({{lang|en|color map}})'' par défaut est ''viridis''. On peut choisir d'autres palettes de couleur avec le paramètre <code>cmap</code> : <syntaxhighlight lang="python"> im3 = liste_axes[1, 0].pcolormesh(X, Y, Z, cmap="Greens") </syntaxhighlight> Les échelles de couleur disponibles sont données à la page : : {{lien web | url = https://matplotlib.org/api/pyplot_summary.html#matplotlib.pyplot.colormaps | titre = Colors in matplotlib | site = matplotlib | lang = en | consulté le = 2019-04-05 }}. [[Fichier:Champ vecteurs python matplotlib.svg|vignette|Champ de vecteur tracé par Python/Matplotlib.]] On peut aussi faire une carte d'un champ de vecteurs avec la commande <code>plt.quiver()</code> vue précédemment : <syntaxhighlight lang="python"> base = np.arange(10) x, y = np.meshgrid(base, base) ux = -0.1*y uy = 0.1*x plt.quiver(x, y, ux, uy, scale_units="xy", scale = 1, angles="xy") </syntaxhighlight> == Surfaces 3D == [[Fichier:Surface3D sinFoisSin python matplotlib.svg|vignette|Surface ''z'' = sin(''x'') × sin(''y'') tracée avec Python/Matplotlib.]] Il est également possible de tracer des surfaces 3D. Il faut pour cela charger <code>Axes3D</code> du module <code>mpl_toolkits.mplot3d</code> ; cela donne accès au paramètre <code>projection="3d"</code> lorsque l'on définit le système d'axes. Par exemple : <syntaxhighlight lang="python"> from mpl_toolkits.mplot3d import Axes3D # permet d'utiliser l'attribut projection="3d" x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) plt.figure() ax = plt.axes(projection="3d") ax.contour(X, Y, Z, zdir="z", offset=-1) # projection sur le plan z = -1 ax.plot_surface(X, Y, Z, alpha=0.8) </syntaxhighlight> On peut changer l'angle de vue du système d'axes avec les paramètres <code>elev</code> (élévation) et<code>azim</code> (azimut). Par exemple <syntaxhighlight lang="python"> ax = plt.axes(projection="3d", elev = 10, azim = 90) </syntaxhighlight> == Mise en forme de la figure == La figure dispose de paramètres de mise en forme : * <code lang="python">figsize</code> : liste des dimensions (largeur, hauteur) en pouces (valeur par défaut <code>[6.4, 4.8]</code>) ; * <code lang="python">dpi</code> : résolution en points par pouce (valeur par défaut <code>100</code>) ; * <code lang="python">facecolor</code> : couleur de fond (valeur par défaut <code>white</code>) ; * <code lang="python">edgecolor</code> : couleur du filet de bordure (valeur par défaut <code>white</code>) ; * <code lang="python">layout</code> : définit le placement des objets pour éviter les effets indésirables (par exemple le recouvrement, valeur par défaut <code>none</code>). Par exemple : <syntaxhighlight lang="python"> M = np.random.randn(50) fig = plt.figure(figsize = [10, 6]) plt.plot(M) </syntaxhighlight> == Mise en forme du texte == Si l'on veut utiliser le style LaTeX, on utilise : <syntaxhighlight lang="python"> plt.rcParams["text.usetex"] = True […] plt.xlabel("$x$") </syntaxhighlight> == Dessins == Les dessins portent le nom de « pièces » ''({{lang|en|patch}})''. Les fonctions pour les créer se trouvent dans le module <code>matplotlib.patches</code>. Ces fonctions permettent de ''créer'' les pièces mais pour les ''dessiner'' (c'est-à-dire les mettre sur la « toile »), il faut utiliser la méthode <code>.add_patch()</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # système d'axes occupant toute la figure ax.set_xlim(0, 2) # axes gradués de 0 à 2 ax.set_ylim(0, 2) # Création des pièces cercle = Circle((0.25, 0.25), 0.1) # cercle de centre (0,25 ; 0,25) et de rayon 0,1 polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) # polygone à trois sommets (triangle) # Dessin des pièces ax.add_patch(cercle) ax.add_patch(polygone) </syntaxhighlight> Le dessin des pièces une par une est un processus assez long. Il est intéressant de créer une collection et de dessiner cette collection d'un seul tenant. On a pour cela recours au module <code>matplotlib.collections</code>. Le code devient donc : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon from matplotlib.collections import PatchCollection fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) cercle = Circle((0.25, 0.25), 0.1) polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) coll = PatchCollection((cercle, polygone)) ax.add_collection(coll) </syntaxhighlight> Il est possible de dessiner des chemins ''({{lang|en|path}})''. {{loupe|Découvrir le SVG/Chemins}} On a pour cela recours au module <code>matplotlib.path</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import PathPatch from matplotlib.path import Path fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) # Création du chemin chemin = Path([[0.25, 0.5], [0.25, 1.5], [0.75, 1.5]], [Path.MOVETO, Path.CURVE3, Path.CURVE3]) # Création de la pièce à partir du chemin pieceChemin = PathPatch(chemin) # Dessin de la pièce ax.add_patch(pieceChemin) </syntaxhighlight> Ici, nous disons à la « plume » de se rendre ''({{lang|en|move to}})'' au point de coordonnées (0,25 ; 0,25), puis de tracer une courbe de Bézier quadratique ''({{lang|en|curve 3}})'' jusqu'au point (0,75 ; 1,5) avec comme point de contrôle intermédiaire (0,25 ; 1,5). == Transformation des objets graphiques == Il est possible de faire subir des transformations linéaires aux objets graphiques<ref>{{lien web |url=https://matplotlib.org/stable/api/transformations.html |titre=matplotlib.transforms |site=Matplotlib.org |consulté le=2023-04-14}}.</ref>. On utilise pour cela le module <code lang="python">matplotlib.transforms</code> (au pluriel) et l'attribut <code lang="python">transform</code> (au singulier) des commandes pyplot. Par exemple, pour tourner un objet de 90° : <syntaxhighlight lang="python"> import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as transforms donnees = np.random.randn(20) # points au hasard base = plt.gca().transData # base de la transformation rotation = transforms.Affine2D().rotate_deg(90) # rotation de 90° plt.plot(donnees, transform = rotation + base) </syntaxhighlight> La transformation <code>transforms.Affine2D()</code> a normalement pour argument une matrice 3 × 3 classique en géométrie. Lorsque l'on est en deux dimensions, cette matrice a la forme : <math>\begin{pmatrix} a & b & 0 \\ c & d & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> {{loupe|w:Matrice de transformation}} Les méthodes d'<code>Affine2D()</code> permettent de générer automatiquement cette matrice. Par exemple, <code>transforms.Affine2D().rotate(θ)</code> (angle θ en radians ; on utilise <code>.rotate_deg()</code> pour des angles en degrés) crée la matrice de rotation : <math>\begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> On peut donner directement la matrice M (de type <code>np.array()</code> avec <code>transforms.Affine2D().set_matrix(M)</code>. On peut indiquer les valeurs sous la forme d'une liste avec <code>transforms.Affine2D().from_values(a, c, b, d, 0, 0)</code> (notez l'ordre des paramètres). == Créer un GIF animé == Il existe plusieurs modules permettant de créer un GIF animé dans Python. === Avec le module PIL (Python imaging library) === La première étape consiste à créer un n-uplet contenant les noms de tous les fichiers image, dans l'ordre ; nous l'appelons <code>imgs</code>. Puis, nous créons un n-uplet contenant les pointeurs vers les images, ouverte avec <code>PIL.Images.open()</code> ; nous l'appelons <code>trames</code>. Nous créons le fichier GIF animé en utilisant la méthode <code>.save()</code> du n-uplet <code>trames</code> <syntaxhighlight lang="python"> from PIL import Image imgs=[] # initialisation du n-uplet for i in range(10): # nom des images : "fichieri.png", i étant un entier ("fichier0.png", "fichier1.png" etc.) imgs.append("fichier"+str(i)+".png") trames = [] for i in imgs: nouv_trame = Image.open(i) trames.append(nouv_trame) trames[0].save("animation.gif", format="GIF", append_images=trames[1:], save_all=True, duration=300, # durée en milliseconde loop=0) # pour boucler ; </syntaxhighlight> ; Ressources * https://pillow.readthedocs.io/ == Les couches de <code>matplotlib</code> == : {{lien web | url=https://matplotlib.org/tutorials/intermediate/artists.html | titre = Artist tutorial | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} : {{lien web | url=https://matplotlib.org/api/artist_api.html | titre = Artist API | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} Pour bien comprendre la documentation du module <code>matplotlib</code>, il faut comprendre sa structure en couches. Cela n'est pas indispensable pour l'utilisation élémentaire du module, mais connaître ce vocabulaire devient important pour une utilisation avancée. Le module <code>matplotlib</code> est organisé en trois couches : * la toile ({{lang|en|<code>FigureCanvas</code>}}) : c'est l'espace sur lequel le tracé est fait ; * le restituteur ({{lang|en|<code>Renderer</code>}}) : c'est l'objet chargé d'effectuer les tracés sur la toile ; * les artistes ({{lang|en|<code>Artist</code>}}) : ce sont les classes des objets destinés à être tracés. Il faut distinguer le tracé ''({{lang|en|plot}})'', qui consiste à traduire les données en objets à tracer en utilisant les artistes, et la publication ''({{lang|en|show}})'' qui consiste à afficher les tracés à l'écran ou à les écrire dans un fichier. La publication est le rôle de la « face cachée » ''({{lang|en|backend}})''. Cette structure en trois couches facilite la tâche de l'utilisateur : vous n'avez à vous concentrer qu'aux données et au type et style de tracé (en manipulant les artistes), la face cachée s'occupe de gérer la partie logicielle et matérielle (différence de système d'exploitation, de carte graphique, de format de fichier). La face cachée est donc une couche « abstraite », que l'utilisateur ne voit quasiment jamais. Dans les cas les plus simples, l'utilisation d'un artiste provoque aussi sa publication : si l'on fait un <code>.plot()</code>, la courbe s'affiche à l'écran. Mais dans certains cas, il faut indiquer à Python de publier le graphique ; par exemple, s'il y a des opérations de tracé longues à faire, on a intérêt à tout afficher à la fin, une fois toutes les opérations faites. C'est la raison d'être des fonctions et méthodes <code>.show()</code> ou <code>.draw()</code>. On distingue ainsi deux types d'artistes : les contenants et les primitives. Nous avons ainsi l'organisation suivante : * face cachée ({{lang|en|<code>backend</code>}}) ** toile ({{lang|en|<code>FigureCanvas</code>}}) ** restituteur ({{lang|en|<code>Renderer</code>}}) * artistes ({{lang|en|<code>Artist</code>}}) ** conteneurs ({{lang|en|<code>container</code>}}) *** figure ({{lang|en|<code>Figure</code>}}) **** systèmes d'axes ({{lang|en|<code>Axes</code>}}) ***** axes ({{lang|en|<code>axis</code>}}) ****** graduations ({{lang|en|<code>ticks</code>}}) ***** légendes ({{lang|en|<code>legend</code>}}) **** … ** primitives ({{lang|en|<code>primitive</code>}}) *** courbes ({{lang|en|<code>Line2D</code>}}) *** textes ({{lang|en|<code>Text</code>}}) *** bords ({{lang|en|<code>Spine</code>}}) *** pièces ({{lang|en|<code>Patch</code>}}) *** … == Notes et références == {{références}} ---- [[../Éléments de programmation|Éléments de programmation]] &lt; [[../|↑]] &gt; [[../Manipulation de matrices|Manipulation de matrices]] [[Catégorie:Python pour le calcul scientifique (livre)]] fp79ybxdanzqcn1s2e6jagw1gipj6l3 772233 772228 2026-09-15T08:25:24Z Cdang 1202 /* Annotations */ image flèches 772233 wikitext text/x-wiki Rappel : les programmes commencent par : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt </syntaxhighlight> Nous avons déjà vu un premier tracé élémentaire : ''[[../Découverte de Python et de Jupyter#Premier tracé graphique|Découverte de Python et de Jupyter &gt; Premier tracé graphique]]'' ; nous en présentons un autre plus loin : ''[[../Statistiques#Fréquence, histogramme|Statistiques &gt; Fréquence, histogramme]]''. {| class="wikitable" border="0" |- | <syntaxhighlight lang="python"> x = np.arange(0, 2, 0.1) y = x**2 plt.plot(x, y, label="y = x^2") plt.xlabel("x") plt.ylabel("y") plt.title("Graphes de fonctions") plt.legend() plt.show() </syntaxhighlight> | [[Fichier:Graphe fct carre Python Matplotlib Jupyter.png|300px]] |- | <syntaxhighlight lang="python"> M = np.random.randn(50) plt.plot(M, np.ones_like(M), "|") plt.hist(M, bins=10, density=1) plt.show() </syntaxhighlight> | [[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|300px]] |} Nous allons approfondir le sujet. == Concepts de base == === Exemple === [[Fichier:Nomenclature figure python matplotlib fct trigo.svg|thumb|upright=2.5|Nom des différents objets constituant une figure de Python/Matplotlib.]] Considérons un tracé un peu plus avancé : il consiste en deux graphiques représentant les graphes des fonctions cosinus et sinus. Voici deux manières de le réaliser : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) fig, liste_axes = plt.subplots(2, 1, layout="constrained") fig.suptitle("Fonctions trigonométriques") liste_axes[0].plot(x, ycos) liste_axes[0].set_title("cosinus") liste_axes[0].set_xlabel("x") liste_axes[0].set_ylabel("y") liste_axes[1].plot(x, ysin) liste_axes[1].set_title("sinus", pad = 5) liste_axes[1].set_xlabel("x") liste_axes[1].set_ylabel("y") plt.savefig("fonctions_trigo_pyplot.svg", format="svg") </syntaxhighlight> Ou bien <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) ysin = np.sin(x) plt.subplots(layout="constrained") plt.suptitle("Fonctions trigonométriques") plt.subplot(2, 1, 1) plt.plot(x, ycos) plt.title("cosinus") plt.xlabel("x") plt.ylabel("y") plt.subplot(2, 1, 2) plt.plot(x, ysin) plt.title("sinus", pad = 5) plt.xlabel("x") plt.ylabel("y") </syntaxhighlight> === Analyse === ==== Première manière ==== La création de deux graphiques se fait avec la commande <code lang="python">plt.subplot()</code> à laquelle on indique le fait qu'il y a 2 lignes et 1 colonne ; le paramètre <code lang="python">layout="constrained"</code> permet d'avoir une meilleure mise en page. Cette commande retourne deux identifiants : <code lang="python">fig</code>, l'identifiant de la figure, et <code lang="python">liste_axes</code>, les identifiants des deux sous-figures. La méthode <code lang="python">.suptitle()</code> permet de créer un titre général. Pour chaque sous-figure (classe {{lang|en|<code>Axes</code>}}, que l'on pourrait traduire par « système d'axes »), on utilise les méthodes <code lang="python">.plot()</code>pour tracer une courbe, <code>.set_title()</code> pour lui donner un nom et les méthodes <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code> pour les titres des axes. La fonction <code lang="python">plt.savefig()</code> permet d'enregistrer la figure dans un fichier, ici au format [[Découvrir le SVG|SVG]]. Au lieu d'utiliser une matrice <code>liste_axes</code>, on peut aussi utiliser un n-uplet : <syntaxhighlight lang="python"> fig, (axes0, axes1) = plt.subplots(2, 1, layout="constrained") […] axes0.plot(x, ycos) […] axes1.plot(x, ysin) </syntaxhighlight> L'image est constituée de plusieurs objets. Il y en a de deux types : * les contenants qui permettent la mise en page : <code lang="python">Figure</code> (la figure)<ref>{{lien web |url=https://matplotlib.org/stable/api/figure_api.html |titre=matplotlib.figure |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> et <code>Axes</code> (les systèmes d'axes)<ref>{{lien web |url=https://matplotlib.org/stable/api/axes_api.html |titre=matplotlib.axes |site=Matplotlib.org |consulté le=2022-05-03}}.</ref> ; * les primitives : ce sont les objets qui sont tracés à l'écran, essentiellement les <code>Line2D</code> (les courbes)<ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html |titre=matplotlib.lines.Line2D |site=Matplotlib.org |consulté le=2022-05-03}}.</ref>. La <code lang="python">Figure</code> est un grand contenant, c'est lui qui contient tout le dessin ; on parle parfois de « toile » ''({{lang|en|canvas}})''. Les <code>Axes</code> sont les différentes sous-figures ; il y en a ici 2. Les <code lang="python">axis</code> (« axe » en français) — à ne pas confondre avec le terme <code lang="python">Axes</code> précédent — sont au nombre de deux par <code lang="python">Axes</code> : l'axe de ''x'' (<code lang="python">XAxis</code>) et l'axe des ''y'' (<code lang="python">YAxis</code>). ==== Seconde manière ==== Chaque graphique est créé par la fonction <code lang="python">plt.subplot(2, 1, 1)</code>. Les paramètres sont trois nombres : le nombre de lignes du tableau de figures, le nombre de colonnes de ce tableau, et le numéro de la cellule au sein du tableau en suivant le sens de lecture latin (de gauche à droite et de haut en bas). La création des graphiques est précédée de deux fonctions : <code lang="python">plt.subplots(layout="constrained")</code> qui impose une répartition harmonieuse des graphiques, et <code lang="python">plt.suptitle()</code> qui permet d'écrire un titre général. Pour chaque graphique, on a les fonctions : * <code lang="python">plt.plot()</code> qui tracent le graphique ; * <code lang="python">plt.title()</code> qui donnent un titre à chaque graphique ; * <code lang="python">plt.xlabel()</code> et <code lang="python">plt.ylabel()</code> qui nomment les axes. === Styles de codage « pyplot » et « OO » === On voit qu'il y a aussi deux styles de codage, deux manières de rédiger. La première est la manière « pyplot » : la figure est décrite comme un automate fini ''({{lang|en|state machine}})'', elle ne peut avoir qu'un nombre fini d'états et les fonctions font des transitions entre deux états. On utilise aussi l'expression « à la manière de Matlab ». On utilise des fonctions de l'espace de nom <code lang="python">matplotlib.pylot (plt)</code>, ici : <code lang="python">plt.subplots()</code>, <code lang="python">plt.savefig()</code> et dans les exemples précédents, <code>plt.plot()</code>, <code>plt.hist()</code lang="python">, <code lang="python">plt.xlabel()</code>, <code lang="python">plt.ylabel()</code>, <code lang="python">plt.title()</code>, <code lang="python">plt.legend()</code> et <code lang="python">plt.show()</code>. La seconde manière est la manière « orientée objet » (OO) : comme nous avons défini des objets (la <code lang="python">Figure</code>, les <code lang="python">Axes</code>), nous pouvons utiliser des méthodes spécifiques à ces classes. C'est ainsi que nous avons les méthodes <code lang="python">fig.suptitle()</code>, <code lang="python">liste_axes[:].plot()</code>, <code lang="python">.set_title()</code>, <code lang="python">.set_xlabel()</code> et <code lang="python">.set_ylabel()</code>. Dans la manière OO, il faut donc connaître les identifiants des objets pour pouvoir utiliser leurs méthodes. La manière la plus simple est de créer explicitement les objets et d'assigner leur identifiant à des variables à cette occasion, par exemple : <syntaxhighlight lang="python"> fig, sysAxes = plt.subplots(1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = fig.add_subplot(1, 1, 1) courbe = sysAxes.plot(x, y) </syntaxhighlight> ou encore <syntaxhighlight lang="python"> fig = plt.figure() sysAxes = plt.axes() courbe = sysAxes.plot(x, y) </syntaxhighlight> L'autre manière consiste à laisser pyplot tout créer tout seul, puis à récupérer les identifiants : <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes courbe = sysAxes.lines[0] </syntaxhighlight> ou bien <syntaxhighlight lang="python"> plt.plot(x, y) fig = plt.gcf() # get current figure sysAxes = fig.axes[0] courbe = sysAxes.lines[0] </syntaxhighlight> == Mise en forme d'une courbe == Considérons une courbe unique. Nous pouvons changer l'apparence de la courbe en passant des paramètres lors de sa création. La première manière consiste à utiliser une chaîne de caractères comprenant : * une lettre pour la couleur : <code>k</code> pour le noir ''({{lang|en|blac'''k''')}}'', <code>y</code> pour jaune ''({{lang|en|yellow)}}''… * un ou deux caractères pour le type de trait : <code>-</code> pour un trait continu, <code>--</code> pour un trait discontinu… * un caractère pour la forme des marqueurs : <code>o</code> pour des ronds, un <code>s</code> pour un carré ''({{lang|en|square)}}'', un <code>d</code> pour un losange ''({{lang|en|diamond}})'', un <code>v</code> ou un <code>^</code> pour un triangle pointe en bas ou en haut… Par exemple : <syntaxhighlight lang="python"> plt.plot(x, y, "r--") # trait discontinu rouge axes0 = plt.axes() axes0.plot(x, y, "go") # cercles verts </syntaxhighlight> {| class="wikitable" |+ Caractères de mise en forme de courbe |- ! colspan="2" scope="col" | Couleur ! colspan="2" scope="col" | Marqueur |- ! scope="col" | Caractère || Couleur ! scope="col" | Caractère || Symbole |- | <code>b</code> || bleu | <code>.</code> || point • |- | <code>g</code> || vert | <code>,</code> || point d'un pixel ⋅ |- | <code>r</code> || rouge | <code>o</code> || cercle ○ |- | <code>c</code> || cyan | <code>v</code> || triangle pointe en bas ▽ |- | <code>m</code> || magenta | <code>^</code> || triangle pointe en haut △ |- | <code>y</code> || jaune | <code>&lt;</code> || triangle pointe à gauche ◁ |- | <code>k</code> || noir | <code>&gt;</code> || triangle pointe à droite ▷ |- | <code>w</code> || blanc | <code>s</code> || carré □ |- ! colspan="2" scope="col" | Style de ligne | <code>p</code> || pentagone |- ! scope="col" | Caractère || Style | <code>1</code> à <code>4</code> || étoile à trois branches de différentes orientations |- | <code>-</code> || ligne continue | <code>*</code> || étoile ✭ |- | <code>--</code> || ligne discontinue | <code>h</code>, <code>H</code> || hexagone sur la pointe ⬢ ou sur le plat ⬣ |- | <code>-.</code> || trait mixte | <code>+</code> || croix droite + |- | <code>:</code> || trait pointillé | <code>x</code> || croix de saint André × |- | || | <code>D</code>, <code>d</code> || losange carré ◇ ou étroit ◊ |- | || | <code><nowiki>|</nowiki></code> || trait vertical <nowiki>|</nowiki> |- | || | <code>_</code> || trait horizontal — |} Notez la différence entre <code>".-"</code> qui affiche à la fois un marqueur point et un trait continu, et <code>"-."</code> qui crée un trait mixte. '''Méthodes avancées''' Il est possible de passer les paramètres de manière plus explicite : <syntaxhighlight lang="python"> plt.plot(x, y, color="b", linestyle="dashed", marker="o") </syntaxhighlight> L'attribut <code>color</code> peut être spécifié de plusieurs manières : * par une lettre, comme ci-dessus ; * par un mot, le nom de la couleur ; il y a une cinquantaine de nom définis comme par exemple <code>blue</code>, <code>lightblue</code>, <code>darkblue</code>, <code>grey</code>, <code>chocolate</code>, <code>fuschia</code><ref>voir {{lien web | url = https://matplotlib.org/tutorials/colors/colors.html | titre = Specifying colors | site = Matplotlib | lang = en | consulté le = 2019-03-30 }}.</ref>… * avec le nom de la couleur dans la palette T10 ; les dix noms sont <code>tab:blue</code>, <code>tab:orange</code>, <code>tab:green</code>, <code>tab:red</code>, <code>tab:purple</code>, <code>tab:brown</code>, <code>tab:pink</code>, <code>tab:gray</code>, <code>tab:olive</code> et <code>tab:cyan</code> ; ce sont les couleurs utilisées par défaut ; * par un code RVB, les composante R, V et B étant indiquées en hexadécimal entre <code>00</code> et <code>FF</code> : <code>color = "#00FF00"</code> (bleu) ; on peut utiliser le canal alpha en quatrième composante (RVBA) : <code>color = "#00FF0080"</code> ; la composante A va de <code>00</code> pour du parfaitement transparent à <code>FF</code> pour du totalement opaque. L'attribut <code>linestyle</code> peut être indiqué par des caractères comme précédemment ; on peut également utiliser les noms : <code>dashed</code> (discontinu), <code>dashdot</code> (mixte), <code>dotted</code> (pointillés), <code>solid</code> (continu) ou bien <code>None</code> ou une chaîne vide (pas de tracé). On peut ajouter d'autres attributs, en particulier * <code>linewidth</code> ou <code>lw</code> qui définit l'épaisseur du trait ; * <code>linestyle</code> ou <code>ls</code> qui définit le style du trait ; peut prendre les valeurs <code>"solid"</code> (<code>"-"</code>), <code>"dotted"</code> (<code>":"</code>), <code>"dashed"</code> (<code>"--"</code>) ou <code>"dashdot"</code> (<code>"-."</code>) ;<br /> le paramètre peut aussi prendre un n-uplet <code>(décalage, (longeur, espace))</code> ou <code>(décalage, (longeur1, espace1, loongueur2, espace2))</code> (une longueur de 1 désigne un point) ; * <code>dashes</code> : permet de définir un trait discontinu avec un doublet (2-uplet) indiquant le nombre de points affichés et le nombre de points non-affichés, par exemple <code>dashes=(4, 2)</code> ; on peut alterner plusieurs couples comme <code>dashes=(8, 2, 4, 2)</code> * <code>markeredgecolor</code> : couleur du trait du symbole marqueur ; * <code>markeredgewidth</code> : épaisseur du trait du symbole marqueur (en points) ; * <code>markerfacecolor</code> : couleur de remplissage du symbole marqueur ; * <code>fillstyle</code> : permet de ne remplir qu'une moitié du symbole marqueur ; prend les valeurs <code>top</code>, <code>right</code>, <code>bottom</code> et <code>left</code> pour indiquer la moitié remplie ; * <code>markersize</code> : taille du symbole marqueur (en points). Avec le style de codage orienté objet, cela donne : <syntaxhighlight lang="python"> courbe = plt.plot(x, y) courbe[0].set_linestyle("--") # ou bien courbe, = plt.plot(x, y) courbe.set_linestyle("--") # ou encore plt.plot(x, y) axes = plt.gca() courbe = axes.lines[0] courbe.set_linestyle("--") </syntaxhighlight> Les principales méthodes des objets Line2D sont : <code>.set_color()</code>, <code>.set_linestyle()</code>, <code>.set_linewidth()</code>, <code>.set_dashes()</code>, <code>.set_marker()</code> et tous les <code>.set_marker…()</code> (<code>edgecolor</code>, <code>edgewidth</code><code>facecolor</code>, <code>size</code>). ; Ressources * {{lien web | url = https://matplotlib.org/tutorials/introductory/pyplot.html | titre = Pyplot tutorial | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot | titre = matplotlib.pyplot.plot | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} * {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle | titre = matplotlib.lines.Line2D.set_linestyle | site = Matplotlib | lang = en | consulté le = 2019-03-30 }} == Annotations == Nous parlons ici le fait de placer des annotations sur une figure et non pas la notion d'annotation en programmation. Il est possible de placer du texte avec la commande <code>plt.text(x, y, chaine)</code> où (''x'', ''y'') sont les coordonnées, dans le repère du tracé, où l'on veut placer le texte, et ''chaine'' est une chaîne de caractères. On peut modifier l'orientation de ce texte avec le paramètre <code lang="python">rotation</code> exprimé en degrés, par exemple : <syntaxhighlight lang="python"> plt.text(0, 0, "origine", rotation=90) </syntaxhighlight> [[Fichier:Pyplot annotate arrowtyle.svg|vignette|Styles de flèche avec la fonction <code>plt.annotate()</code>.]] Par ailleurs, la classe <code>Axes</code> dispose d'une méthode <code>.annotate()</code> ; on peut aussi utiliser la fonction <code>plt.annotate()</code>.. Dans sa forme la plus simple, on indique une chaîne correspondant à l'étiquette et un doublet (2-uplet) ou une liste indiquant les coordonnées où placer l'étiquette. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 50) ycos = np.cos(x) courbe = plt.plot(x, ycos) fig = plt.gcf() # get current figure sysAxes = plt.gca() # get current axes ymin = ycos.min() # trouve la veleur minimale de ycos imin = ycos.argmin() # trouve l'indice correspondant au minimum xmin = x[imin] sysAxes.annotate("min", (xmin, ymin)) </syntaxhighlight> Telle quelle, l'étiquette empiète sur la courbe. On peut placer l'étiquette à des coordonnées particulières avec l'attribut <code>xytext</code> cet attribut reçoit un doublet ou une liste de coordonnées (''x'', ''y''). Par ailleurs, on peut relier l'étiquette au point visé avec l'attribut <code>arrowsprop</code> (''{{lang|en|arrow's properties}}'', propriétés de la flèche). Cet attribut reçoit un dictionnaire de propriétés, <code>arrowsprop=dict(…)</code> ou bien <code>arrowsprop={…}</code>. Par exemple, pour avoir simplement un trait, ce dictionnaire contient <code>arrowstyle="-"</code> ; pour une flèche, <code>arrowstyle="->"</code> ou <code>arrowstyle="<-"</code>, et pour une flèche double <code>arrowstyle="<->"</code>. Par exemple, avec l'exemple précédent : <syntaxhighlight lang="python"> sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops=dict(arrowstyle="->")) # ou bien sysAxes.annotate("min", (xmin, ymin), xytext=(xmin + 0.5, ymin + 0.5), arrowprops={"arrowstyle":"->"}) </syntaxhighlight> Les styles de flèche ''({{lang|en|arrowstyle}})'' disponibles sont : * <code>-</code> : trait simple ; * <code>&lt;-</code>, <code>-&gt;</code>, <code>&lt;-&gt;</code> : flèches ; * <code>&lt;|-</code>, <code>-|&gt;</code>, <code>&lt;|-|&gt;</code> : têtes triangulaires ; * <code>]-</code>, <code>-[</code>, <code>]-[</code> : crochets ; * <code>|-|</code> : barre ; * <code>]-&gt;</code>, <code>&lt;-[</code> : crochet d'un côté, flèche de l'autre ; * <code>simple</code>, <code>fancy</code>, <code>wedge</code> : variantes de <code>-&gt;</code>. ; Ressource : {{lien web | url = https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html | titre = matplotlib.axes.Axes.annotate | lang = en | site = Matplotlib | consulté le = 2019-04-07 }} == Autres exemples de tracés 2D == [[Fichier:Sinus trace matplotlib escalier batons fleches.svg |vignette |Trois types de tracés de la fonction sinus avec Python/Matplotlib]] Par exemple avec : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = np.sin(x) fig, listeAxes = plt.subplots(3, 1, layout="constrained") # Tracé en escalier listeAxes[0].step(x, y) # tracé en bâtons listeAxes[1].bar(x, y, width = 0.03) # Tracé en flèches listeAxes[2].quiver(x[:-1], y[:-1], np.diff(x), np.diff(y), scale_units="xy", scale=1, angles="xy", width=0.02) </syntaxhighlight> == Gestion des échelles == Pour fixer les valeurs extrêmes des axes, on utilise les commandes <code lang="python">plt.xlim(''min'', ''max'')</code> et <code lang="python">plt.ylim(''min'', ''max'')</code>. Pour avoir une échelle logarithmique, respectivement en ''x'' et en ''y'', on utilise les commandes <code lang="python">plt.xscale("log")</code> et <code lang="python">plt.yscale("log")</code>. Ces fonctions peuvent recevoir les paramètres suivants : * <code>linear</code> : échelle linéaire (valeur par défaut) ; * <code>log</code> : échelle logarithmique ; * <code>symlog</code> : échelle logarithmique symétrique, c'est-à-dire avec la transformation <math>\mathrm{Y} = \sgn(y) \cdot \log_{10}(1 + |y/\mathrm{C}|)</math> avec C = 1/ln(10) ; nous avons ainsi des valeurs positives et négative sans avoir la singularité en 0 ; * <code>logit</code> : l'échelle est transformée par la fonction [[w:fr:Logit|logit]]. On peut superposer une grille avec la commande <code lang="python">plt.grid(True)</code>. S'il y a trop de graduations sur un axe, on peut réduire le nombre de graduations avec : <syntaxhighlight lang="python"> from matplotlib.ticker import NullFormatter # […] plt.gca().yaxis.set_minor_formatter(NullFormatter()) </syntaxhighlight> On peut imposer les valeurs graduées : <syntaxhighlight lang="python"> plt.gca().set_xticks([0, 1, 2, 3]) </syntaxhighlight> On peut imposer le fait d'avoir les mêmes échelles en ''x'' ou en ''y'' avec les mots-clefs <code lang="python">sharex</code> et <code lang="python">sharey</code>. Par exemple : <syntaxhighlight lang="python"> fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) </syntaxhighlight> ou bien <syntaxhighlight lang="python"> fig, axs = plt.subplots(2,1, sharex=True) </syntaxhighlight> Si l'on veut que l'échelle en ''x'' soit la même que l'échelle en ''y'', on peut utiliser la méthode <code lang="python">set_aspect()</code><ref>{{lien web |url=https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html |titre=matplotlib.axes.Axes.set_aspect |site=Matplotlib.org |consulté le=2022-05-03}}</ref> des objets <code lang="python">axes</code>, par exemple <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> Si l'on veut que le graphique soit carré, on utilise le mot-clef <code lang="python">square</code> de l'objet <code lang="python">axis</code> : <syntaxhighlight lang="python"> plt.axis("square") </syntaxhighlight> Si l'on veut que les échelles sur les axes ''x'' et ''y'' soient de pas identiques, par exemple pour qu'un carré soit un carré et un demi-cercle ne soit pas une demie ellipse, on utilise : <syntaxhighlight lang="python"> plt.gca().set_aspect("equal", adjustable="box") </syntaxhighlight> == Plusieurs courbes sur un même système d'axes == Pour mettre plusieurs courbes sur un même système d'axes, on peut soit les créer les unes après les autres : <syntaxhighlight lang="python"> plt.plot(x1, y1) plt.plot(x2, y2) </syntaxhighlight> Soit les mettre dans la même commande : <syntaxhighlight lang="python"> plt.plot(x1, y1, x2, y2) </syntaxhighlight> Matplotlib définit lui-même des couleurs différentes. On peut bien évidemment forcer le style des courbes. On peut également ajouter une étiquette ''({{lang|en|label}})'' qui sera ensuite affichée dans la légende : <syntaxhighlight lang="python"> plt.plot(x1, y1, "k", label="courbe 1") plt.plot(x2, y2, "b", label="courbe 1") plt.legend() # ou bien courbes = plt.plot(x1, y1, "k", x2, y2, "b") courbes[0].set_label("courbe 1") courbes[1].set_label("courbe 2") plt.legend() # ou bien courbes = plt.plot(x1, y1, x2, y2) courbes[0].set(color="k", label="courbe 1") courbes[1].set(color="b", label="courbe 2") plt.legend() </syntaxhighlight> On peut choisir l'emplacement de la légende avec le paramètre <code lang="python">loc</code> qui peut prendre les valeurs <code lang="python">"upper left"</code>, <code lang="python">"upper center"</code>, <code lang="python">"upper right"</code>, <code lang="python">"center left"</code>… la valeur est composée de deux adjectifs : * premier adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">upper</code> signifie en haut, ** <code lang="en">lower</code> signifie en bas ; * second adjectif : ** <code lang="en">center</code> signifie au centre, au milieu, ** <code lang="en">left</code> signifie à gauche, ** <code lang="en">right</code> signifie à droite. Par exemple : <syntaxhighlight lang="python"> plt.legend(loc="upper right") </syntaxhighlight> Si l'on veut des courbes avec des échelles en ''y'' différentes, il faut créer un axe ''x'' « jumeau » ''({{lang|en|twin}})'' avec la méthode <code>.twinx()</code>. Par exemple : <syntaxhighlight lang="python"> fig, axe = plt.subplots(figsize=(5, 5)) plt.suptitle("Chargement") axe2 = axe.twinx() axe.plot(forces) axe.set_xlabel("Étape") axe.set_ylabel("F (N)") axe2.plot(contraintes) axe2.set_ylabel("σ (MPa)") </syntaxhighlight> == Tracé polaire == [[Fichier:Courbe polaire rayon aleatoire python matplotlib.svg |vignette |Exemple de courbe polaire avec Python/Matplotlib.]] [[File:Rose des vents exemple Python.svg|thumb|Rose des vents avec des données arbitraires, utilisé pour un exemple de création de graphique avec le langage Python/Matplotlib.]] Un tracé polaire s'obtient avec la commande <code>plt.polar()</code>, par exemple : <syntaxhighlight lang="python"> theta = np.linspace(0, 2*np.pi, 20) # angle r = 1 + 0.2*np.random.randn(20) # rayon plt.polar(theta, r) # courbe polaire </syntaxhighlight> Voici un exemple avec deux courbes superposées et une mise en forme des graduations et de la légende : <syntaxhighlight lang="python"> #!/usr/bin/python3 import numpy as np import matplotlib.pyplot as plt # ************** # * Constantes * # ************** # positions angulaires angles = 2*np.pi*np.linspace(0, 1, 9) # huitièmes de cercle radDeg = 180/np.pi # conversion radians → degrés etoile = np.array([1, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1]) # Tracé de l'étoile vents = np.array([2.85, 3.34, 5.2, 4.025, 4.9, 9.63, 7.5, 2.35, 2.85]) # Fréquence (unité arbitraire) vents = vents/vents.max() # normalisation # *********** # * Traçage * # *********** courbes = plt.polar(angles, etoile, angles, vents) # tracé # mise en forme axes = plt.gca() courbes[0].set(color="gray") courbes[1].set(color="b", label="Fréquence des vents") plt.legend(bbox_to_anchor=(1.45, 1.05), loc="upper right") # affichage à l'extérieur du tracé axes.set_rticks([0.2, 0.4, 0.6, 0.8, 1]) # graduations radiales axes.set_thetagrids(angles=radDeg*angles[0:-1], labels=("E", "NE", "N", "NO", "O", "SO", "S", "SE")) # graduations angulaires plt.title("Rose des vents") plt.savefig("rose_des_vents.svg", format="svg") plt.show() </syntaxhighlight> == Cartes de valeurs et de vecteurs == [[File:Cartes couleur sinFoisSin python matplotlib.svg|thumb|Lignes de niveau et cartes couleur de ''z'' = sin(''x'') × sin(''y'') par Python/Matplotlib.]] Lorsque l'on a une surface dans un espace à trois dimensions, de type ''z'' = ƒ(''x''&htinsp;, ''y''&thinsp;), on peut afficher les données sur la forme d'une carte : * lignes de niveau : on utilise la fonction <code>np.contour()</code> ; * surfaces de niveau : <code>np.contourf()</code> ; * carte de couleurs : <code>np.pcolormesh()</code>. La fonction <code>colorbar()</code> permet d'afficher l'échelle de couleurs. Par exemple : <syntaxhighlight lang="python"> x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) fig, liste_axes = plt.subplots(2, 2, layout="constrained") im1 = liste_axes[0, 0].contour(X, Y, Z) fig.colorbar(im1, ax=liste_axes[0, 0]) im2 = liste_axes[0, 1].contourf(X, Y, Z) fig.colorbar(im2, ax=liste_axes[0, 1]) im3 = liste_axes[1, 0].pcolormesh(X, Y, Z) fig.colorbar(im3, ax=liste_axes[1, 0]) </syntaxhighlight> La palette de couleurs ''({{lang|en|color map}})'' par défaut est ''viridis''. On peut choisir d'autres palettes de couleur avec le paramètre <code>cmap</code> : <syntaxhighlight lang="python"> im3 = liste_axes[1, 0].pcolormesh(X, Y, Z, cmap="Greens") </syntaxhighlight> Les échelles de couleur disponibles sont données à la page : : {{lien web | url = https://matplotlib.org/api/pyplot_summary.html#matplotlib.pyplot.colormaps | titre = Colors in matplotlib | site = matplotlib | lang = en | consulté le = 2019-04-05 }}. [[Fichier:Champ vecteurs python matplotlib.svg|vignette|Champ de vecteur tracé par Python/Matplotlib.]] On peut aussi faire une carte d'un champ de vecteurs avec la commande <code>plt.quiver()</code> vue précédemment : <syntaxhighlight lang="python"> base = np.arange(10) x, y = np.meshgrid(base, base) ux = -0.1*y uy = 0.1*x plt.quiver(x, y, ux, uy, scale_units="xy", scale = 1, angles="xy") </syntaxhighlight> == Surfaces 3D == [[Fichier:Surface3D sinFoisSin python matplotlib.svg|vignette|Surface ''z'' = sin(''x'') × sin(''y'') tracée avec Python/Matplotlib.]] Il est également possible de tracer des surfaces 3D. Il faut pour cela charger <code>Axes3D</code> du module <code>mpl_toolkits.mplot3d</code> ; cela donne accès au paramètre <code>projection="3d"</code> lorsque l'on définit le système d'axes. Par exemple : <syntaxhighlight lang="python"> from mpl_toolkits.mplot3d import Axes3D # permet d'utiliser l'attribut projection="3d" x = np.linspace(0, 2*np.pi, 20) y = x.copy() X, Y = np.meshgrid(x, y) Z = np.sin(X)*np.sin(Y) plt.figure() ax = plt.axes(projection="3d") ax.contour(X, Y, Z, zdir="z", offset=-1) # projection sur le plan z = -1 ax.plot_surface(X, Y, Z, alpha=0.8) </syntaxhighlight> On peut changer l'angle de vue du système d'axes avec les paramètres <code>elev</code> (élévation) et<code>azim</code> (azimut). Par exemple <syntaxhighlight lang="python"> ax = plt.axes(projection="3d", elev = 10, azim = 90) </syntaxhighlight> == Mise en forme de la figure == La figure dispose de paramètres de mise en forme : * <code lang="python">figsize</code> : liste des dimensions (largeur, hauteur) en pouces (valeur par défaut <code>[6.4, 4.8]</code>) ; * <code lang="python">dpi</code> : résolution en points par pouce (valeur par défaut <code>100</code>) ; * <code lang="python">facecolor</code> : couleur de fond (valeur par défaut <code>white</code>) ; * <code lang="python">edgecolor</code> : couleur du filet de bordure (valeur par défaut <code>white</code>) ; * <code lang="python">layout</code> : définit le placement des objets pour éviter les effets indésirables (par exemple le recouvrement, valeur par défaut <code>none</code>). Par exemple : <syntaxhighlight lang="python"> M = np.random.randn(50) fig = plt.figure(figsize = [10, 6]) plt.plot(M) </syntaxhighlight> == Mise en forme du texte == Si l'on veut utiliser le style LaTeX, on utilise : <syntaxhighlight lang="python"> plt.rcParams["text.usetex"] = True […] plt.xlabel("$x$") </syntaxhighlight> == Dessins == Les dessins portent le nom de « pièces » ''({{lang|en|patch}})''. Les fonctions pour les créer se trouvent dans le module <code>matplotlib.patches</code>. Ces fonctions permettent de ''créer'' les pièces mais pour les ''dessiner'' (c'est-à-dire les mettre sur la « toile »), il faut utiliser la méthode <code>.add_patch()</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # système d'axes occupant toute la figure ax.set_xlim(0, 2) # axes gradués de 0 à 2 ax.set_ylim(0, 2) # Création des pièces cercle = Circle((0.25, 0.25), 0.1) # cercle de centre (0,25 ; 0,25) et de rayon 0,1 polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) # polygone à trois sommets (triangle) # Dessin des pièces ax.add_patch(cercle) ax.add_patch(polygone) </syntaxhighlight> Le dessin des pièces une par une est un processus assez long. Il est intéressant de créer une collection et de dessiner cette collection d'un seul tenant. On a pour cela recours au module <code>matplotlib.collections</code>. Le code devient donc : <syntaxhighlight lang="python"> from matplotlib.patches import Circle, Polygon from matplotlib.collections import PatchCollection fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) cercle = Circle((0.25, 0.25), 0.1) polygone = Polygon([[1.5, 1.5], [2, 1.5], [1.75, 2]]) coll = PatchCollection((cercle, polygone)) ax.add_collection(coll) </syntaxhighlight> Il est possible de dessiner des chemins ''({{lang|en|path}})''. {{loupe|Découvrir le SVG/Chemins}} On a pour cela recours au module <code>matplotlib.path</code>. Par exemple : <syntaxhighlight lang="python"> from matplotlib.patches import PathPatch from matplotlib.path import Path fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) ax.set_xlim(0, 2) ax.set_ylim(0, 2) # Création du chemin chemin = Path([[0.25, 0.5], [0.25, 1.5], [0.75, 1.5]], [Path.MOVETO, Path.CURVE3, Path.CURVE3]) # Création de la pièce à partir du chemin pieceChemin = PathPatch(chemin) # Dessin de la pièce ax.add_patch(pieceChemin) </syntaxhighlight> Ici, nous disons à la « plume » de se rendre ''({{lang|en|move to}})'' au point de coordonnées (0,25 ; 0,25), puis de tracer une courbe de Bézier quadratique ''({{lang|en|curve 3}})'' jusqu'au point (0,75 ; 1,5) avec comme point de contrôle intermédiaire (0,25 ; 1,5). == Transformation des objets graphiques == Il est possible de faire subir des transformations linéaires aux objets graphiques<ref>{{lien web |url=https://matplotlib.org/stable/api/transformations.html |titre=matplotlib.transforms |site=Matplotlib.org |consulté le=2023-04-14}}.</ref>. On utilise pour cela le module <code lang="python">matplotlib.transforms</code> (au pluriel) et l'attribut <code lang="python">transform</code> (au singulier) des commandes pyplot. Par exemple, pour tourner un objet de 90° : <syntaxhighlight lang="python"> import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as transforms donnees = np.random.randn(20) # points au hasard base = plt.gca().transData # base de la transformation rotation = transforms.Affine2D().rotate_deg(90) # rotation de 90° plt.plot(donnees, transform = rotation + base) </syntaxhighlight> La transformation <code>transforms.Affine2D()</code> a normalement pour argument une matrice 3 × 3 classique en géométrie. Lorsque l'on est en deux dimensions, cette matrice a la forme : <math>\begin{pmatrix} a & b & 0 \\ c & d & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> {{loupe|w:Matrice de transformation}} Les méthodes d'<code>Affine2D()</code> permettent de générer automatiquement cette matrice. Par exemple, <code>transforms.Affine2D().rotate(θ)</code> (angle θ en radians ; on utilise <code>.rotate_deg()</code> pour des angles en degrés) crée la matrice de rotation : <math>\begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} </math> On peut donner directement la matrice M (de type <code>np.array()</code> avec <code>transforms.Affine2D().set_matrix(M)</code>. On peut indiquer les valeurs sous la forme d'une liste avec <code>transforms.Affine2D().from_values(a, c, b, d, 0, 0)</code> (notez l'ordre des paramètres). == Créer un GIF animé == Il existe plusieurs modules permettant de créer un GIF animé dans Python. === Avec le module PIL (Python imaging library) === La première étape consiste à créer un n-uplet contenant les noms de tous les fichiers image, dans l'ordre ; nous l'appelons <code>imgs</code>. Puis, nous créons un n-uplet contenant les pointeurs vers les images, ouverte avec <code>PIL.Images.open()</code> ; nous l'appelons <code>trames</code>. Nous créons le fichier GIF animé en utilisant la méthode <code>.save()</code> du n-uplet <code>trames</code> <syntaxhighlight lang="python"> from PIL import Image imgs=[] # initialisation du n-uplet for i in range(10): # nom des images : "fichieri.png", i étant un entier ("fichier0.png", "fichier1.png" etc.) imgs.append("fichier"+str(i)+".png") trames = [] for i in imgs: nouv_trame = Image.open(i) trames.append(nouv_trame) trames[0].save("animation.gif", format="GIF", append_images=trames[1:], save_all=True, duration=300, # durée en milliseconde loop=0) # pour boucler ; </syntaxhighlight> ; Ressources * https://pillow.readthedocs.io/ == Les couches de <code>matplotlib</code> == : {{lien web | url=https://matplotlib.org/tutorials/intermediate/artists.html | titre = Artist tutorial | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} : {{lien web | url=https://matplotlib.org/api/artist_api.html | titre = Artist API | lang = en | site = Matplotlib | consulté le = 2019-03-29 }} Pour bien comprendre la documentation du module <code>matplotlib</code>, il faut comprendre sa structure en couches. Cela n'est pas indispensable pour l'utilisation élémentaire du module, mais connaître ce vocabulaire devient important pour une utilisation avancée. Le module <code>matplotlib</code> est organisé en trois couches : * la toile ({{lang|en|<code>FigureCanvas</code>}}) : c'est l'espace sur lequel le tracé est fait ; * le restituteur ({{lang|en|<code>Renderer</code>}}) : c'est l'objet chargé d'effectuer les tracés sur la toile ; * les artistes ({{lang|en|<code>Artist</code>}}) : ce sont les classes des objets destinés à être tracés. Il faut distinguer le tracé ''({{lang|en|plot}})'', qui consiste à traduire les données en objets à tracer en utilisant les artistes, et la publication ''({{lang|en|show}})'' qui consiste à afficher les tracés à l'écran ou à les écrire dans un fichier. La publication est le rôle de la « face cachée » ''({{lang|en|backend}})''. Cette structure en trois couches facilite la tâche de l'utilisateur : vous n'avez à vous concentrer qu'aux données et au type et style de tracé (en manipulant les artistes), la face cachée s'occupe de gérer la partie logicielle et matérielle (différence de système d'exploitation, de carte graphique, de format de fichier). La face cachée est donc une couche « abstraite », que l'utilisateur ne voit quasiment jamais. Dans les cas les plus simples, l'utilisation d'un artiste provoque aussi sa publication : si l'on fait un <code>.plot()</code>, la courbe s'affiche à l'écran. Mais dans certains cas, il faut indiquer à Python de publier le graphique ; par exemple, s'il y a des opérations de tracé longues à faire, on a intérêt à tout afficher à la fin, une fois toutes les opérations faites. C'est la raison d'être des fonctions et méthodes <code>.show()</code> ou <code>.draw()</code>. On distingue ainsi deux types d'artistes : les contenants et les primitives. Nous avons ainsi l'organisation suivante : * face cachée ({{lang|en|<code>backend</code>}}) ** toile ({{lang|en|<code>FigureCanvas</code>}}) ** restituteur ({{lang|en|<code>Renderer</code>}}) * artistes ({{lang|en|<code>Artist</code>}}) ** conteneurs ({{lang|en|<code>container</code>}}) *** figure ({{lang|en|<code>Figure</code>}}) **** systèmes d'axes ({{lang|en|<code>Axes</code>}}) ***** axes ({{lang|en|<code>axis</code>}}) ****** graduations ({{lang|en|<code>ticks</code>}}) ***** légendes ({{lang|en|<code>legend</code>}}) **** … ** primitives ({{lang|en|<code>primitive</code>}}) *** courbes ({{lang|en|<code>Line2D</code>}}) *** textes ({{lang|en|<code>Text</code>}}) *** bords ({{lang|en|<code>Spine</code>}}) *** pièces ({{lang|en|<code>Patch</code>}}) *** … == Notes et références == {{références}} ---- [[../Éléments de programmation|Éléments de programmation]] &lt; [[../|↑]] &gt; [[../Manipulation de matrices|Manipulation de matrices]] [[Catégorie:Python pour le calcul scientifique (livre)]] a1gx7ikatnu4225t0fhw3xttmc9gqv1 Les moteurs de rendu des FPS en 2.5 D 0 80641 772194 723759 2026-09-14T14:21:02Z Mewtow 31375 HotCat : [[Category:Nouveaux livres]] ajoutée avec [[Help:Gadget-HotCat|HotCat]] 772194 wikitext text/x-wiki {{version imprimable}} Peut-être avez vous déjà joué à des vieux FPS, comme DOOM, Quake, Unreal, Duke Nukem, Half-life, et bien d'autres. La plupart de ces jeux étaient tous des révolutions technologiques, particulièrement les jeux d'IdSoftware. Le tout premier jeu vidéo en vraie 3D était Quake premier du nom, et c'était une révolution technologique sans précédent. Le moteur du jeu, à savoir la portion du jeu qui aidait à calculer les graphismes, a été repris dans de nombreuses productions. Mais avant lui, d'autres FPS ont vu le jour, certains d'IdSoftware, d'autres non. Ils n'étaient pas en 3D, mais simulaient de la fausse 3D à partir d'un monde en 2D : DOOM, Wolfenstein 3D, mais aussi Catacomb 3D. Dans ce wikilivre, nous allons étudier le fonctionnement du moteur de ces différents jeux. Nous allons voir comment DOOM, Wolfenstein, et tous les jeux de l'époque, affichaient leurs graphismes, comment ils géraient le son, comme était gérée la physique du jeu. Nous allons voir que les principes de base de ces moteurs sont tout de même assez simples. Les programmeurs qui lisent ce livre pourront même essayer d'implémenter un moteur similaire à la fin de ce livre s'ils s'en sentent capables, cela leur prendra quelques jours à quelques semaines, avec les outils d'aujourd'hui. ==Sommaire== {{/Sommaire}} {{AutoCat}} [[Catégorie:Nouveaux livres]] esuiabgf20wj2tv88lfzl5snx95mulm Dictionnaire de philosophie/A priori 0 82998 772236 767970 2026-09-15T11:27:13Z PandaMystique 119061 772236 wikitext text/x-wiki {{DicoPhilo|A priori|lecture=oui}} L'expression ''a priori'' (littéralement « à partir de ce qui précède » en latin) désigne, en philosophie, ce qui est antérieur à l'expérience sensible et indépendant d'elle. Apparue dans le vocabulaire logique du Moyen Âge, où elle qualifiait d'abord un ordre de démonstration, cette expression a reçu d'Emmanuel Kant, au XVIII{{e}} siècle, sa formulation moderne et systématique, qui oppose ce qui est connu indépendamment de l'expérience (l{{'}}''a priori'') à ce qui provient de l'expérience empirique (l{{'}}''a posteriori'').<ref>Kant, E., ''Critique de la raison pure'', 1781/1787, trad. A. Renaut, Garnier-Flammarion, 2006, Introduction, B1-B6.</ref> Comprendre cette distinction permet de saisir comment s'articulent, dans notre connaissance du monde, les contributions respectives de notre esprit et de notre expérience sensible. Elle engage aussi une question plus large : y a-t-il des vérités que nous pouvons établir depuis notre fauteuil, sans ouvrir les yeux sur le monde, et, si oui, d'où leur vient cette autorité ? == Une distinction que chacun pratique == Avant toute théorie, la distinction se laisse reconnaître dans des exemples. Pour savoir s'il fait beau, il faut ouvrir les yeux ou consulter quelqu'un qui l'a fait ; pour savoir que s'il fait beau, alors il fait beau, nul besoin de regarder par la fenêtre. Les deux propositions parlent du même temps qu'il fait, mais l'expérience n'y joue pas le même rôle. Timothy Williamson et Paul Boghossian, qui s'opposent sur presque tout le reste, s'accordent sur ce point de départ : de tels exemples sont « projectibles », c'est-à-dire que nous savons, à partir d'eux, classer de nouveaux cas avec un bon degré d'accord, sans nous être concertés.<ref>Williamson, T., « How Deep is the Distinction between A Priori and A Posteriori Knowledge? », in P. Boghossian et T. Williamson, ''Debating the A Priori'', Oxford UP, 2020, p. 117 ; Boghossian, P., « Do We Have Reason to Doubt the Importance of the Distinction between A Priori and A Posteriori Knowledge? », in ''Debating the A Priori'', 2020, p. 137-138.</ref> Que tous les carrés aient quatre côtés, que rien ne puisse être entièrement rouge et entièrement vert au même instant, que deux cercles de rayons différents se coupent en deux points au plus, voilà des connaissances que nous rangeons spontanément du côté de l{{'}}''a priori''. Que toutes les tables de bois soient carrées, ou que ce volume-ci soit rouge, il faudrait aller voir. Un second exemple, proposé par Boghossian et Christopher Peacocke, précise ce que veut dire « indépendant de l'expérience ». Vous reconnaissez, dans un restaurant, un violoncelliste célèbre : votre souvenir d'une photographie, votre croyance que ce visage en est une version vieillie et votre perception actuelle concourent à produire votre croyance, et c'est bien votre expérience visuelle qui vous y autorise. Comparez maintenant avec quelqu'un qui apprend une vérité logique en lisant une démonstration : voir les lignes écrites cause sa croyance, mais ce qui l'y autorise est la démonstration elle-même, non le fait de l'avoir vue sur le papier. Il faut donc distinguer soigneusement la relation de causalité et la relation de justification, ou, pour reprendre leur mot, d{{'}}''entitlement''.<ref>Boghossian, P. et Peacocke, C., « Introduction », in P. Boghossian et C. Peacocke (éds.), ''New Essays on the A Priori'', Clarendon Press, 2000, p. 1-2.</ref> L'expérience peut être nécessaire pour accéder à une justification sans faire partie de cette justification. C'est cette idée, présente chez Leibniz déjà, que la tradition résume en disant que l'expérience joue un rôle habilitant (''enabling'') et non un rôle probant (''evidential'') dans la connaissance ''a priori''.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 2 ; Williamson, T., « How Deep is the Distinction... », 2020, p. 119 ; Mares, E., ''A Priori'', Routledge, 2014, p. 4-5.</ref> == Origines historiques de la notion == === Racines anciennes et médiévales === La distinction entre ce que l'on connaît par la seule pensée et ce que l'on connaît par l'observation trouve ses premières formulations dans l'Antiquité. Platon opposait la connaissance sensible, changeante et imparfaite, à la connaissance intelligible des Idées, éternelles et nécessaires.<ref>Platon, ''La République'', VI-VII (allégorie de la Ligne et de la Caverne), trad. G. Leroux, Garnier-Flammarion, 2004.</ref><ref>Platon, ''Ménon'', 80d-86c (le passage de la réminiscence géométrique), trad. M. Canto-Sperber, Garnier-Flammarion, 1993.</ref> Les vérités mathématiques, par exemple, semblaient ne pas dépendre de l'observation : que la somme des angles d'un triangle égale deux angles droits apparaît comme une vérité universelle et nécessaire, que l'on ne découvre pas par la mesure répétée de triangles concrets, mais que l'on saisit par l'intelligence. Pensons à l'esclave du ''Ménon'' : Socrate ne lui apprend rien, il l'interroge, et le jeune homme finit par voir que la diagonale d'un carré permet d'en construire un autre d'aire double. Nous aussi, lecteurs, nous voyons que la réponse est juste sans rien mesurer ; c'est ce que Platon met au compte de la réminiscence, et ce que nous appellerions aujourd'hui un raisonnement ''a priori''.<ref>Mares, E., ''A Priori'', 2014, p. 1-2 et p. 55 ; sur l'argument du ''Ménon'', p. 60-61.</ref> Les termes mêmes d{{'}}''a priori'' et d{{'}}''a posteriori'' n'apparaissent toutefois qu'au Moyen Âge, et dans un sens différent. Ils traduisent une distinction d'Aristote entre ce qui est antérieur et plus connaissable par nature (la cause) et ce qui est antérieur et plus connaissable pour nous (l'effet, que nous percevons d'abord).<ref>[[Dictionnaire de philosophie/Aristote|Aristote]], ''Seconds Analytiques'', I, 2, 71b33-72a5, trad. P. Pellegrin, Garnier-Flammarion, 2005.</ref> Dans le vocabulaire logique de la scolastique, une démonstration ''a priori'' va de la cause à l'effet, du « premier » vers le « second » ; une démonstration ''a posteriori'' remonte de l'effet à la cause. Thomas d'Aquin, au moment de prouver l'existence de Dieu, rappelle cette distinction entre la démonstration ''propter quid'', qui procède par ce qui est antérieur en soi, et la démonstration ''quia'', qui procède par ce qui est antérieur pour nous.<ref>Thomas d'Aquin, ''Somme théologique'', Ia, q. 2, a. 2, resp., trad. A.-M. Roguet, Cerf, 1984.</ref> Cette acception est donc très différente de celle que Kant leur donnera plus tard : chez les scolastiques, il ne s'agit pas encore d'un rapport à l'expérience sensible, mais d'un ordre entre causes et effets dans la démonstration. Ce que la scolastique reconnaissait par ailleurs, c'est qu'il existe des propositions évidentes dès que l'on en comprend les termes ; Leibniz dira qu'on trouve « cent endroits » où les scolastiques l'affirment.<ref>Casullo, A., ''A Priori Justification'', Oxford UP, 2003, p. 20 (citant Leibniz d'après Chisholm).</ref> C'est au cours du XVII{{e}} et du XVIII{{e}} siècle que les termes glissent vers leur sens épistémologique moderne, celui d'une opposition entre connaissance indépendante de l'expérience et connaissance tirée de l'expérience : la distinction passe de la scolastique à Descartes, Leibniz et Berkeley, avant que Kant ne fixe pour de bon la terminologie.<ref>Warren, J., ''The A Priori Without Magic'', Cambridge UP, 2022, p. 8.</ref> Selon Tyler Burge, c'est à Leibniz que revient la première explication moderne de la notion : une vérité est ''a priori'' si elle peut être connue indépendamment de l'expérience, ce qui n'empêche pas que l'on dépende psychologiquement de l'expérience pour parvenir à la connaître.<ref>Burge, T., « Frege on Apriority », in ''New Essays on the A Priori'', 2000, p. 13.</ref> Burge observe aussi qu'à l'époque moderne, « expérience » en est venu à signifier expérience sensible, ce qui n'allait pas de soi chez Leibniz, pour qui une expérience intellectuelle restait concevable.<ref>Burge, T., « Frege on Apriority », 2000, p. 40-41.</ref> === Le débat entre rationalistes et empiristes === Au XVII{{e}} siècle, la philosophie de la connaissance se structure autour d'un débat entre rationalistes et empiristes. Pour les rationalistes, Descartes, Spinoza, Leibniz, la raison possède des idées innées ou des principes indépendants de l'expérience : l'idée d'infini, les principes logiques (principe de contradiction, principe de raison suffisante), les vérités mathématiques.<ref>[[Dictionnaire de philosophie/René Descartes|Descartes]], R., ''Méditations métaphysiques'', 1641, III (idée d'infini), éd. J.-M. Beyssade et M. Beyssade, Garnier-Flammarion, 2011.</ref><ref>Leibniz, G. W., ''Nouveaux essais sur l'entendement humain'', 1765, Préface et I, 1, éd. J. Brunschwig, Garnier-Flammarion, 1990.</ref> Ces vérités seraient universelles, nécessaires, et connaissables par la seule raison. Les trois grands rationalistes ont en commun de faire appel à une classe de pensées évidentes par elles-mêmes, qu'ils nomment « idées claires et distinctes » ; l{{'}}''Éthique'' de Spinoza s'ouvre sur des définitions et des axiomes tenus pour évidents, dont tout le reste se déduit.<ref>Mares, E., ''A Priori'', 2014, p. 34-37.</ref> Pour les empiristes, Locke, Berkeley, Hume, toute connaissance provient au contraire de l'expérience sensible : avant toute expérience, notre esprit serait comme une « page blanche » (''tabula rasa'').<ref>Locke, J., ''Essai sur l'entendement humain'', 1689, II, 1, § 2, trad. J.-M. Vienne, Vrin, 2001.</ref><ref>Hume, D., ''Enquête sur l'entendement humain'', 1748, IV, trad. A. Leroy, rév. M. Beyssade, Garnier-Flammarion, 2006.</ref> Contre les idées innées, Locke exige un « consentement universel » : les principes prétendument innés, comme « ce qui est, est », les enfants et les simples ne les ont pas, et personne ne les a avant d'y avoir pensé. Leibniz répond que l'expérience seule ne fournit pas de règles d'inférence fiables et que certaines idées, l'être, l'unité, la substance, la durée, ne peuvent venir des sens. Mais les deux ne parlent pas tout à fait de la même chose : Locke attaque des croyances innées, Leibniz défend des concepts innés.<ref>Mares, E., ''A Priori'', 2014, p. 56 ; Locke, J., ''Essai sur l'entendement humain'', I, 1-2.</ref> Les empiristes ne nient pas qu'il existe des propositions dont la vérité peut être établie sans recourir à l'observation. Mais chaque auteur formule cette idée dans son propre vocabulaire. Locke distingue, au sein de notre connaissance, ce qui repose sur la perception de rapports entre idées (''agreement or disagreement of ideas'') et ce qui porte sur l'existence réelle des choses : les vérités mathématiques et morales relèvent du premier type et peuvent être connues avec certitude, sans dépendre de l'observation du monde extérieur.<ref>Locke, J., ''Essai sur l'entendement humain'', IV, 3, § 18-20 ; IV, 9, § 1.</ref> Hume, de son côté, oppose les « relations d'idées » (les propositions de la géométrie, de l'algèbre, de l'arithmétique, « découvertes par la seule opération de la pensée ») aux « choses de fait », fondées sur l'expérience.<ref>Hume, D., ''Enquête sur l'entendement humain'', IV, 1.</ref> Leibniz, quant à lui, rationaliste mais interlocuteur principal des empiristes, distingue « vérités de raison » (nécessaires, fondées sur le principe de contradiction) et « vérités de fait » (contingentes, fondées sur le principe de raison suffisante).<ref>Leibniz, G. W., ''Monadologie'', 1714, § 33.</ref> Notons que ni Leibniz ni Frege, qui le suit sur ce point, ne tiennent les vérités de raison pour moins « factuelles » que les vérités de fait : elles ne sont pas de purs mots, elles portent sur ce qui est nécessaire à la nature même des choses.<ref>Burge, T., « Frege on Apriority », 2000, p. 16.</ref> Il serait toutefois anachronique de projeter sur ces auteurs la grille conceptuelle kantienne. Les distinctions entre ''a priori'' et ''a posteriori'', entre analytique et synthétique, entre nécessaire et contingent, que Kant présente comme orthogonales, ne se recoupent pas chez les classiques de la même façon qu'elles le feront plus tard. L'identification systématique de l{{'}}''a priori'' avec l'analytique et le nécessaire est surtout caractéristique de certaines formes d'empirisme logique au XX{{e}} siècle, notamment chez Alfred Ayer, qui soutient explicitement que les vérités ''a priori'' sont des tautologies sans contenu factuel.<ref>Ayer, A. J., ''Language, Truth and Logic'', Gollancz, 1936, chap. 4 ; Casullo, A., ''A Priori Justification'', 2003, p. 214.</ref> Les synthèses contemporaines insistent précisément sur la nécessité de séparer ces trois distinctions, qui ne coïncident ni chez les classiques ni, comme Kripke l'a montré, dans la philosophie actuelle.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 10.</ref> == La systématisation kantienne : les jugements synthétiques ''a priori'' == C'est Emmanuel Kant (1724-1804) qui, dans la ''Critique de la raison pure'' (1781, seconde édition 1787), confère à la distinction ''a priori'' / ''a posteriori'' son statut philosophique central et sa portée moderne.<ref>Kant, E., ''Critique de la raison pure'', 1781/1787, trad. A. Renaut, Garnier-Flammarion, 2006.</ref> Kant opère ce qu'il appelle une « révolution copernicienne » en philosophie : au lieu de penser que notre connaissance se règle sur les objets, il propose que les objets se règlent sur notre faculté de connaître. Cette thèse lui permet d'expliquer l'existence de connaissances ''a priori'' tout en évitant les impasses du rationalisme dogmatique (qui prétend connaître le réel par la seule raison) et du scepticisme empiriste (qui conteste la possibilité de toute connaissance nécessaire). Mikel Dufrenne y verra, à juste titre, l'origine même de la révolution copernicienne : pour Kant, la connaissance pure ''a priori'' est d'abord un fait, un fait de la raison, et c'est ce fait qui appelle une critique chargée d'en établir les conditions de validité.<ref>Dufrenne, M., ''The Notion of the A Priori'', trad. E. S. Casey, Northwestern UP, 1966, rééd. 2009 (''La Notion d'a priori'', PUF, 1959), p. 3.</ref> Albert Casullo a montré combien la discussion contemporaine reste tributaire des quelques pages de l'introduction de la ''Critique''. Kant y installe un cadre fait de trois distinctions : la distinction épistémique entre connaissance ''a priori'' et connaissance empirique, la distinction métaphysique entre propositions nécessaires et contingentes, la distinction sémantique entre propositions analytiques et synthétiques. Et il pose, dans ce cadre, quatre questions : qu'est-ce que la connaissance ''a priori'' ? existe-t-elle ? quel est son rapport à la nécessité ? quel est son rapport à l'analytique ?<ref>Casullo, A., ''A Priori Justification'', 2003, p. 4.</ref> Ce sont encore, pour l'essentiel, les questions que nous nous posons. === Critères de l{{'}}''a priori'' : nécessité et universalité === Kant commence par une concession à l'empirisme : toute notre connaissance commence avec l'expérience, mais il ne s'ensuit pas qu'elle en dérive tout entière.<ref>Kant, E., ''Critique de la raison pure'', B1.</ref> Robert Hanna lit dans ce double mouvement une intuition durable : un empirisme minimal (aucune connaissance n'exclut tout rapport aux faits empiriques) n'entraîne pas un empirisme maximal (toute connaissance serait déterminée par eux). Que « si Socrate est célibataire, alors Socrate n'est pas marié » ait dû s'apprendre par l'expérience ne le rend pas moins nécessaire et ''a priori''.<ref>Hanna, R., ''Cognition, Content, and the A Priori'', Oxford UP, 2015, p. 313-316.</ref> Pour Kant, une connaissance est ''a priori'' si elle possède deux caractéristiques indissociables : la nécessité (elle ne peut pas être autrement) et l'universalité rigoureuse (elle vaut pour tous les cas sans exception possible).<ref>Kant, E., ''Critique de la raison pure'', Introduction, B3-B4.</ref> Si l'on dit « tous les corps observés jusqu'à présent tombent », cette proposition est universelle empiriquement, mais non nécessaire : rien ne garantit qu'un corps ne pourrait pas ne pas tomber. En revanche, « tout changement doit avoir une cause » est, selon Kant, une proposition à la fois nécessaire et universelle : on ne peut concevoir un changement sans cause. Casullo attire l'attention sur la fonction de ces critères dans l'argument de Kant. Parce que Kant ne précise pas en quel sens exactement une connaissance doit être indépendante de l'expérience, il ne peut pas prouver l'existence de connaissances ''a priori'' à partir de leur seule définition ; il lui faut un critère. La nécessité est ce critère : l'expérience nous apprend qu'une chose est ainsi, mais non qu'elle ne peut être autrement, de sorte que toute connaissance d'une proposition nécessaire est ''a priori''. La réciproque, selon laquelle tout ce qui est connu ''a priori'' serait nécessaire, n'apparaît que dans la préface de la première édition, dans un passage où Kant glisse sans transition de la certitude à la nécessité, deux concepts pourtant distincts.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 186-187 ; Kant, E., ''Critique de la raison pure'', B3 et Axv.</ref> Une connaissance ''a posteriori'', au contraire, provient de l'expérience sensible, comme « cette rose est rouge » ou « l'eau bout à 100 °C sous pression normale ». De telles connaissances sont contingentes (elles auraient pu être autrement) et leur universalité n'est que provisoire, fondée sur l'accumulation d'observations. === Distinction entre analytique et synthétique === Kant introduit une seconde distinction, qu'il conçoit comme orthogonale à la première : celle entre jugements analytiques et jugements synthétiques.<ref>Kant, E., ''Prolégomènes à toute métaphysique future'', 1783, § 2, trad. J. Gibelin, rév. J. Rivelaygue, Vrin, 1986.</ref> Un jugement analytique est celui dans lequel « le prédicat est contenu dans le concept du sujet » : par exemple, « tout corps est étendu », l'extension faisant partie de la définition même du corps. Ces jugements sont purement explicatifs : ils clarifient ce que nous pensions déjà confusément, mais n'étendent pas notre connaissance. Ils sont toujours ''a priori'', car on peut les établir par simple analyse conceptuelle, sans recourir à l'expérience. Un jugement synthétique, à l'inverse, « ajoute au sujet un prédicat qui n'y était pas contenu » : par exemple, « tous les corps sont pesants ». Le concept de pesanteur n'est pas inclus dans celui de corps ; c'est une information qui accroît notre connaissance. Les jugements synthétiques sont le plus souvent ''a posteriori'', fondés sur l'expérience empirique. Les commentateurs relèvent deux difficultés. D'abord, la définition de Kant ne vaut que pour les jugements de la forme « tout A est B », alors que tout jugement devrait être analytique ou synthétique. Ensuite, Kant donne en réalité deux versions de la distinction : l'une porte sur le contenu des concepts (le prédicat est-il contenu dans le sujet ?), l'autre sur ce que pense le sujet qui juge (a-t-il déjà pensé le prédicat en pensant le sujet ?). Ces deux versions ne coïncident pas nécessairement.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 211-212.</ref> === Les jugements synthétiques ''a priori'' === La thèse centrale de Kant est qu'il existe des jugements synthétiques ''a priori'' : des propositions qui étendent notre connaissance (synthétiques) tout en étant universelles, nécessaires et indépendantes de l'expérience (''a priori'').<ref>Kant, E., ''Critique de la raison pure'', B19.</ref> Cette catégorie, inattendue puisqu'elle combine deux traits ordinairement dissociés, constitue selon Kant la clé de la connaissance scientifique. Les exemples premiers sont les jugements mathématiques. La proposition « 7 + 5 = 12 » n'est pas analytique, soutient Kant, car le concept de « 12 » n'est contenu ni dans « 7 » ni dans « 5 » ni dans celui de somme : pour parvenir à « 12 », il faut effectuer une synthèse mentale, une construction dans l'intuition. Pourtant, ce jugement est ''a priori'' : il est universel et nécessaire, valable indépendamment de toute observation empirique.<ref>Kant, E., ''Critique de la raison pure'', Introduction, B15-B16.</ref> De même, les principes premiers de la physique, comme « tout changement a une cause », sont synthétiques (ils étendent notre connaissance du monde) et ''a priori'' (ils sont nécessaires et universels). Pourquoi Kant a-t-il besoin de cette distinction, alors que sa preuve de l'existence de connaissances ''a priori'' n'en dépend pas ? Casullo répond qu'elle sert à formuler la question directrice de la ''Critique'' : comment des jugements synthétiques ''a priori'' sont-ils possibles ? Kant tient en effet la connaissance analytique pour peu problématique (il suffit du principe de contradiction et de l'analyse du concept), tandis que la connaissance synthétique ''a priori'' requiert, selon lui, le secours de l'intuition. Il présuppose donc que les deux types de connaissance ont des sources différentes, et que la seconde est plus énigmatique que la première ; mais il ne défend jamais expressément ces deux présupposés.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 212-214.</ref> == Formes ''a priori'' de la sensibilité et de l'entendement == Comment expliquer la possibilité de ces jugements synthétiques ''a priori'' ? Kant répond que notre esprit impose des structures ''a priori'' à l'expérience. Ces structures sont de deux types, correspondant à deux facultés de connaissance distinctes. === L'espace et le temps : formes ''a priori'' de la sensibilité === Dans l'Esthétique transcendantale (première partie de la ''Critique de la raison pure''), Kant soutient que l'espace et le temps ne sont pas des propriétés des choses en elles-mêmes, mais des formes ''a priori'' de notre sensibilité, c'est-à-dire des conditions sous lesquelles seulement quelque chose peut nous être donné comme objet.<ref>Kant, E., ''Critique de la raison pure'', A22/B37 sq.</ref> L'espace est la forme du « sens externe » : tout ce qui nous apparaît comme extérieur se présente nécessairement dans l'espace. Le temps est la forme du « sens interne » : toutes nos représentations, qu'elles soient externes ou internes, se succèdent dans le temps. Ces formes ne dérivent pas de l'expérience ; au contraire, elles sont les conditions de possibilité de toute expérience. Kant distingue nettement les intuitions, qui sont singulières (cette chatte-ci, et non n'importe quelle chatte), des concepts, qui sont généraux. Nos intuitions de l'espace et du temps fonctionnent comme des contenants mentaux dans lesquels nous rangeons nos expériences pour en composer une carte du monde, toujours partielle. Mais elles nous renseignent aussi sur les propriétés de l'espace entier : en construisant mentalement un triangle, nous établissons que ses angles valent deux droits, car l'intuition nous apprend que l'espace est uniforme, une portion valant ce que vaut toute autre.<ref>Mares, E., ''A Priori'', 2014, p. 108-109.</ref> Kant insiste sur le fait que la sensibilité possède ses propres structures ''a priori'' qui organisent toute réception d'objets. L{{'}}''a priori'' n'est donc pas l'apanage de l'intellect : il concerne aussi notre capacité intuitive et sensible. Cette thèse explique, pour Kant, la nature ''a priori'' de la géométrie : celle-ci étudie les propriétés nécessaires de l'espace en tant que forme de notre sensibilité. Les vérités géométriques sont donc synthétiques (elles étendent notre connaissance de l'espace) et ''a priori'' (elles découlent de la structure spatiale que notre esprit impose aux phénomènes). Kant n'a pas à prouver que notre intuition de l'espace ressemble à l'espace réel, puisque, pour lui, notre intuition de l'espace est l'espace.<ref>Mares, E., ''A Priori'', 2014, p. 109.</ref> === Les catégories : formes ''a priori'' de l'entendement === Dans l'Analytique transcendantale, Kant identifie les catégories ou concepts purs de l'entendement : substance, causalité, unité, pluralité, nécessité, possibilité, etc.<ref>Kant, E., ''Critique de la raison pure'', A80/B106.</ref> Ces catégories sont ''a priori'' : elles ne dérivent pas de l'expérience, mais structurent toute expérience possible. Par exemple, nous ne pouvons faire l'expérience d'une succession temporelle sans y introduire des relations de [[Dictionnaire de philosophie/Causalité|causalité]] : c'est notre entendement qui impose ''a priori'' la catégorie de cause et effet. La forme même de l'argument mérite attention. Kant part d'une proposition qu'il ne discute pas, à savoir que nous avons une expérience d'objets dans l'espace et le temps, et il montre que cette expérience présuppose certaines croyances : c'est ce qu'on appelle un argument transcendantal. Le flux de nos sensations, pris tel quel, est chaotique ; notre champ visuel change dès que nous tournons la tête. Nous n'en faisons un monde d'objets qu'en rapportant ces changements à des lois, la marche du soleil, la réflexion de la lumière sur les surfaces. La croyance que les événements se suivent selon des lois n'est pas tirée de l'expérience ; c'est notre capacité à faire une expérience qui en dépend.<ref>Mares, E., ''A Priori'', 2014, p. 110-112.</ref> On a objecté que Kant, s'il avait rêvé, aurait dû savoir qu'une expérience sans règles est possible ; la réponse kantienne est que le rêve ne fournit pas d'expérience au sens qui l'intéresse, celui d'une expérience capable de fonder des jugements.<ref>Mares, E., ''A Priori'', 2014, p. 115.</ref> Les catégories permettent de transformer les données sensibles en objets de connaissance. Sans elles, l'expérience serait un chaos d'impressions désordonnées. Kant formule ce point dans une phrase célèbre : « Des pensées sans contenu sont vides, des intuitions sans concepts sont aveugles. »<ref>Kant, E., ''Critique de la raison pure'', A51/B75.</ref> Les deux ensembles de structures ''a priori'', formes de la sensibilité (espace et temps) et catégories de l'entendement, sont nécessaires l'un et l'autre pour que la connaissance soit possible. Il faut ajouter que les croyances ''a priori'' de Kant ne sont pas toutes ''a priori'' au même sens. Nos croyances mathématiques sont justifiées indépendamment de l'expérience, par le seul recours aux intuitions de l'espace et du temps. Mais la croyance que les événements obéissent à des lois n'est ni justifiée ni en attente de justification : elle est ce avec quoi nous construisons le monde perçu. Ce qu'un argument transcendantal établit, c'est que nous avons cette croyance, non qu'elle est vraie. Elle n'en fournit pas moins un fondement ''a priori'' à d'autres croyances, à commencer par celle qu'une science de la nature est possible.<ref>Mares, E., ''A Priori'', 2014, p. 114.</ref> === Idéalisme transcendantal et limites de l{{'}}''a priori'' === Cette doctrine a un corollaire important : nous ne connaissons que les phénomènes (les objets tels qu'ils nous apparaissent, structurés par nos formes ''a priori''), jamais les choses en soi (les objets tels qu'ils sont indépendamment de notre faculté de connaître).<ref>Kant, E., ''Critique de la raison pure'', Bxxvi.</ref> L{{'}}''a priori'' gagne en universalité et en nécessité ce qu'il perd en portée métaphysique : nous ne pouvons connaître ''a priori'' que ce que notre esprit a lui-même mis dans les choses, non ce que les choses sont en elles-mêmes. Cette limitation a des conséquences importantes pour la métaphysique traditionnelle. Les catégories, bien qu{{'}}''a priori'', ne s'appliquent légitimement qu'aux objets d'expérience possible. Toute tentative de les appliquer au-delà, par exemple pour démontrer l'existence de Dieu, l'immortalité de l'âme ou la liberté absolue, constitue un usage illégitime de la raison, qui engendre des contradictions insolubles : les « antinomies » de la raison pure.<ref>Kant, E., ''Critique de la raison pure'', A405-567/B432-595.</ref> Dufrenne a insisté sur un trait du dispositif kantien qui commande toute la suite : chez Kant, l{{'}}''a priori'' est forme, jamais matière. Le donné est ce que la sensibilité reçoit et que la raison ne peut justifier ; l{{'}}''a priori'' relève de l'activité constituante de l'esprit et ne se présente jamais comme quelque chose de constitué. En substituant à la question « qu'est-ce qui est donné ? » la question « qu'est-ce qui peut être donné ? », Kant reprend à Hume la réponse selon laquelle seul un contenu sensible peut l'être. Antériorité, ici, ne veut pas dire précédence dans le temps, mais indépendance logique : ce qui est antérieur à l'expérience ne peut être compromis par elle. Et pourtant, observe Dufrenne, l{{'}}''a priori'' vise l'expérience qu'il fonde ; il « a autant besoin de l'expérience que l'expérience de l{{'}}''a priori'' ». La formule annonce tout son programme : un empirisme du transcendantal, où l{{'}}''a priori'' se donne aussi dans l'expérience.<ref>Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 4-9.</ref> Nous verrons ce que la phénoménologie tire de cette remarque. == L{{'}}''a priori'' après Kant : critiques, reprises, transformations == La théorie kantienne a suscité d'intenses débats qui se poursuivent jusqu'à nos jours. === L'empirisme inductiviste de Mill === La première grande contestation vient de John Stuart Mill (1806-1873), pour qui toute justification est une forme d'induction, y compris en logique et en mathématiques. Nous n'avons jamais perçu de contradiction vraie ; c'est pourquoi nous croyons qu'il n'y en a pas, et non parce que la chose serait impossible. Que nous ne puissions concevoir une contradiction vraie ne prouve pas, selon Mill, qu'elle soit impossible. Même le syllogisme se réduit chez lui à un raisonnement par ressemblance : le duc de Wellington est mortel parce qu'il ressemble, par son humanité, à d'autres individus qui se sont révélés mortels. Sa méthode est, pour reprendre l'expression d'Edwin Mares, « inductive de bout en bout », ce qui signifie que la conclusion d'un raisonnement n'est jamais qu'à peu près assurée par ses prémisses. La difficulté classique de cette position est que nos méthodes inductives paraissent elles-mêmes contenir de la logique déductive : pour tester une hypothèse, il faut d'abord en tirer les conséquences.<ref>Mares, E., ''A Priori'', 2014, p. 84-87 ; Mill, J. S., ''Système de logique déductive et inductive'', 1843, II, 3, § 7 et II, 7, § 5, trad. L. Peisse, Mardaga, 1988.</ref> Frege retournera Mill comme un gant : la justification inductive est pour lui une espèce de la preuve déductive, où des énoncés singuliers se combinent à un principe général d'induction.<ref>Burge, T., « Frege on Apriority », 2000, p. 16.</ref> === Frege : l{{'}}''a priori'' comme ordre de justification === Gottlob Frege (1848-1925) donne à la notion une tournure qui pèsera sur tout le XX{{e}} siècle. Dans ''Les Fondements de l'arithmétique'' (1884), il précise que les distinctions entre ''a priori'' et ''a posteriori'', analytique et synthétique, ne concernent pas le contenu du jugement mais sa justification ; c'est pourquoi une erreur ''a priori'' serait, dit-il, aussi impossible qu'un concept bleu. Une vérité est analytique si sa preuve ne s'appuie que sur des lois logiques générales et des définitions ; elle est ''a priori'' si sa preuve peut se dériver de lois générales qui « n'ont besoin ni ne sont susceptibles de preuve » ; elle est ''a posteriori'' si cette preuve ne peut se passer de faits, c'est-à-dire de vérités singulières portant sur des objets déterminés.<ref>Burge, T., « Frege on Apriority », 2000, p. 12-14 ; Frege, G., ''Les Fondements de l'arithmétique'', 1884, § 3, trad. C. Imbert, Seuil, 1969.</ref> Frege accorde à Kant que la géométrie est synthétique ''a priori'', mais soutient contre lui que l'arithmétique est analytique. Burge fait observer que, sous couvert de clarifier Kant, Frege est en réalité plus proche de Leibniz : il tient l{{'}}''a priori'' pour un ordre canonique de justification entre vérités, indépendant des esprits individuels, et la formule des vérités premières qui n'ont besoin ni ne sont susceptibles de preuve se lit mot pour mot chez Leibniz.<ref>Burge, T., « Frege on Apriority », 2000, p. 15-17.</ref> Comme Leibniz encore, Frege insiste sur la compatibilité de l{{'}}''a priori'' avec toutes sortes de dépendances à l'égard de l'expérience : avoir besoin de voir des symboles pour apprendre un théorème ne rend pas ce théorème empirique, et appeler « empirique » une proposition parce qu'il a fallu des observations pour en prendre conscience, c'est, dit Frege, faire de la psychologie.<ref>Burge, T., « Frege on Apriority », 2000, p. 17 ; Frege, G., ''Les Fondements de l'arithmétique'', § 8.</ref> === La critique empiriste : positivisme logique et Quine === Le positivisme logique du Cercle de Vienne (années 1920-1930) cherche à réduire l{{'}}''a priori'' au domaine analytique, en rejetant les jugements synthétiques ''a priori'' kantiens.<ref>Carnap, R., ''Der logische Aufbau der Welt'', 1928 ; Schlick, M., « Is There a Factual A Priori? », in H. Feigl et W. Sellars (éds.), ''Readings in Philosophical Analysis'', Appleton-Century-Crofts, 1949.</ref> Pour des philosophes comme Carnap, les vérités dites ''a priori'', en logique et en mathématiques, sont des vérités purement linguistiques, résultant de conventions concernant le cadre linguistique adopté. Jared Warren rappelle que cette théorie fondée sur la signification a une longue préhistoire, depuis les relations d'idées de Hume jusqu'à Carnap, Gentzen et Wittgenstein dans les années 1930, mais que les positivistes en ont expédié les détails épistémologiques, parce qu'ils identifiaient purement et simplement l'analytique, le nécessaire et l{{'}}''a priori''.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 28-29.</ref> Au milieu du XX{{e}} siècle, le philosophe américain [[Dictionnaire de philosophie/Willard Van Orman Quine|Willard Van Orman Quine]] (1908-2000) attaque frontalement la distinction entre analytique et synthétique. Dans son article « Deux dogmes de l'empirisme » (1951), Quine soutient que la frontière entre propositions analytiques et propositions synthétiques, loin d'être nette, est indéfendable : aucune définition satisfaisante de l'analyticité ne résiste à l'examen.<ref>Quine, W. V. O., « Two Dogmas of Empiricism », ''The Philosophical Review'', vol. 60, n° 1, 1951, p. 20-43 ; repris dans ''From a Logical Point of View'', Harvard UP, 1953, chap. 2.</ref> Quine propose à la place une conception holiste de la connaissance : nos croyances forment une « toile » solidaire où chaque élément, y compris les vérités logiques et mathématiques, peut en principe être révisé face à l'expérience. Au centre de la toile se trouvent les croyances aux conséquences les plus étendues, que nous abandonnons en dernier ; à la périphérie, nos croyances perceptives. Deux maximes règlent la révision : conserver de préférence les croyances les plus enracinées, et maintenir la cohérence de l'ensemble.<ref>Mares, E., ''A Priori'', 2014, p. 90-91.</ref> Il n'y aurait donc pas de vérités entièrement à l'abri de toute révision empirique. La critique de Quine ne porte pas directement sur le concept d{{'}}''a priori'' au sens épistémologique (le mode de justification indépendant de l'expérience), mais elle sape la distinction analytique/synthétique qui, depuis Kant, servait de cadre pour penser l{{'}}''a priori''. Boghossian et Peacocke reconstruisent ainsi l'argument : à moins de postuler des facultés occultes, la connaissance ''a priori'' ne s'explique que si la compréhension d'une phrase suffit à en connaître la vérité ; cela suppose des phrases vraies en vertu de leur seule signification ; or il n'y en a pas ; donc l{{'}}''a priori'' est inexplicable. Ils distinguent en outre trois familles d'objections sceptiques : celles qui identifient l{{'}}''a priori'' à une propriété qu'aucune proposition ne possède, comme l'indéfaisabilité ; celles qui nient qu'on puisse expliquer une connaissance indépendante de l'expérience ; celles qui tirent argument de l'histoire des sciences. Quine a usé des trois. Contre la troisième, ils font valoir un fait têtu : lorsqu'une expérience contredit une prédiction, le physicien n'est jamais autorisé à réviser l'arithmétique pour expliquer l'écart. Comme ils l'écrivent, « aucun accélérateur de particules, si puissant soit-il, ne peut réfuter » que 7 + 5 = 12 ; toute théorie de l{{'}}''a priori'', même sceptique, doit expliquer ce fait ou l'expliquer comme une illusion.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 6-8.</ref> Casullo va plus loin encore dans le désenchevêtrement. La littérature sur le synthétique ''a priori'' repose selon lui sur deux présupposés : que cette connaissance pose des problèmes explicatifs plus graves que la connaissance analytique ''a priori'', et que l'incohérence de la distinction analytique/synthétique jetterait le doute sur la distinction ''a priori''/''a posteriori''. Il tient les deux pour faux : la seconde distinction se comprend sans la première, et la question de savoir s'il existe des connaissances ''a priori'' peut être posée sans trancher le sort du synthétique ''a priori''.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 210.</ref> Le débat ouvert par Quine s'est poursuivi avec la réponse de Grice et Strawson, qui défendent la distinction en montrant qu'elle repose sur une pratique linguistique stable et partagée.<ref>Grice, H. P. et Strawson, P. F., « In Defense of a Dogma », ''Philosophical Review'', vol. 65, n° 2, 1956, p. 141-158.</ref> === L{{'}}''a priori'' matériel : la phénoménologie === À l'opposé de la tradition empiriste, la phénoménologie, initiée par Edmund Husserl (1859-1938), défend l'existence d'un ''a priori'' matériel.<ref>Husserl, E., ''Recherches logiques'', 1900-1901, III (théorie des touts et des parties), trad. H. Élie, A. L. Kelkel et R. Schérer, PUF, 1961-1963.</ref> Pour Husserl, il existe des structures essentielles non formelles, accessibles par l'intuition eidétique (c'est-à-dire par la saisie directe des essences) : par exemple, les lois d'essence qui régissent les rapports entre couleur et étendue (toute couleur suppose une surface colorée), ou entre promesse et obligation. Ces vérités ne se réduisent ni à des conventions linguistiques ni à des tautologies formelles ; elles portent sur le contenu même des phénomènes. Dans les ''Idées directrices'', Husserl distingue les essences formelles, qui relèvent d'une ontologie formelle vide (l'objet en général), des essences matérielles, qui définissent des régions : chaque son a une essence, et au sommet se trouve l'essence du son en général ; l'essence du triangle relève du genre suprême « forme spatiale », celle du rouge du genre « qualité sensible ». Les vérités eidétiques régionales sont synthétiques, puisqu'elles ne s'obtiennent pas par analyse de formes vides, et ''a priori'', puisqu'elles sont données dans l'intuition d'essence.<ref>Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 74-75 ; Husserl, E., ''Idées directrices pour une phénoménologie'', 1913, § 2, 10, 13 et 16, trad. P. Ricœur, Gallimard, 1950.</ref> Max Scheler (1874-1928) refuse tout formalisme et prolonge cette idée en éthique. Pour lui, la nécessité et l'universalité kantiennes ne sont que des signes extérieurs et équivoques de l{{'}}''a priori'' ; le vrai critère est la manière dont il est saisi, dans une expérience pure et immédiate, alors que l{{'}}''a posteriori'' est l'objet d'une expérience médiate. Les propositions, écrit-il, sont vraies ''a priori'' parce que les faits qui les remplissent sont eux-mêmes donnés ''a priori''. Les valeurs morales (le noble, le sacré, l'utile, l'agréable) possèdent selon lui un ordre hiérarchique qui n'est ni conventionnel ni empirique, mais donné dans une intuition émotionnelle ''a priori'', et cet ordre demeure indépendant du monde des biens dans lesquels les valeurs apparaissent.<ref>Scheler, M., ''Le formalisme en éthique et l'éthique matériale des valeurs'', 1913-1916, trad. M. de Gandillac, Gallimard, 1955, Ire partie ; Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 72-73 et p. 87.</ref> Cette conception élargit beaucoup le champ de l{{'}}''a priori'' en y incluant des domaines que Kant avait exclus : l'esthétique, l'éthique matérielle, la sphère affective. Elle soulève aussi une question que Dufrenne formule sans détour : si tout ce qui a une essence est ''a priori'', où s'arrêter ? Faut-il admettre une essence ''a priori'' du chien ou de la cigarette, à la manière dont Parménide interrogeait Socrate sur les cheveux, la boue et la crasse ?<ref>Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 76 ; Platon, ''Parménide'', 130c.</ref> Mikel Dufrenne (1910-1995), dans ''La Notion d'a priori'' (1959), reprend ce dossier pour en tirer une thèse propre. L{{'}}''a priori'' matériel désigne chez lui une structure de l'objet ou un trait du monde qui peut apparaître dans une expérience particulière, et que le sujet reconnaît aussitôt parce qu'il en a déjà un savoir virtuel.<ref>Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 72.</ref> L{{'}}''a priori'' a ainsi deux faces : objectif, il est dans le monde, comme sens perçu dans les choses ; subjectif, il est dans l'homme, non comme une forme vide de l'entendement, mais comme un savoir virtuel porté par un sujet incarné, pris dans un corps et dans une société. La somme des ''a priori'' subjectifs avec lesquels une personne aborde l'expérience constitue ce que Dufrenne appelle son ''a priori'' existentiel.<ref>Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 42 et p. 48 ; Casey, E. S., « Translator's Introduction », in Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. xxi.</ref> Entre ces deux faces règne une affinité, un accord de l'homme et du monde, que Dufrenne refuse d'expliquer par un naturalisme (qui perdrait le sujet) ou par un idéalisme (qui perdrait le réel), et qu'il renvoie à un ''a priori'' de l{{'}}''a priori'', la Nature d'où surgissent ensemble l'homme et le monde. Dans sa préface, Paul Ricœur se demande si la dualité de l{{'}}''a priori'' n'est pas telle que seul un sentiment, celui qu'exprime la poésie, en atteste l'unité.<ref>Ricœur, P., « Preface », in Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. xv-xvii ; Casey, E. S., « Translator's Introduction », p. xxi.</ref> Cet ''a priori'' perd son caractère strictement formel et universel, puisque l'expérience elle-même peut l'acquérir et que des mutations de l{{'}}''a priori'' existentiel d'une personne restent possibles, Dufrenne préférant les attribuer à la liberté qu'à des causes empiriques ; il conserve néanmoins sa fonction de condition, puisque la reconnaissance de l{{'}}''a priori'' objectif dépend toujours de la présence de l{{'}}''a priori'' subjectif dans le sujet.<ref>Dufrenne, M., ''The Notion of the A Priori'', 1966/2009, p. 48-49.</ref> Dufrenne poursuivra cette enquête dans ''L'inventaire des a priori'' (1981).<ref>Dufrenne, M., ''L'inventaire des a priori. Recherche de l'originaire'', Christian Bourgois, 1981.</ref> === Nécessité, ''a priori'' et modalité : Kripke === Le philosophe américain [[Dictionnaire de philosophie/Saul Kripke|Saul Kripke]] (1940-2022), dans ''La logique des noms propres'' (1980), a montré que les notions de nécessité, d{{'}}''a priori'' et d'analyticité, souvent confondues, doivent être soigneusement distinguées.<ref>Kripke, S., ''Naming and Necessity'', Harvard UP, 1980 ; trad. fr. P. Jacob et F. Recanati, ''La logique des noms propres'', Minuit, 1982.</ref> La nécessité est une propriété métaphysique : elle concerne ce qui ne peut pas être autrement, dans tous les mondes possibles. L{{'}}''a priori'' est une propriété épistémologique : il concerne le mode par lequel on connaît ou justifie une proposition (indépendamment de l'expérience). L'analyticité est une propriété sémantique : elle concerne les propositions vraies en vertu de la signification de leurs termes. Or ces trois propriétés ne coïncident pas nécessairement. Casullo résume les trois thèses de Kripke : les concepts de vérité ''a priori'' et de vérité nécessaire sont différents ; qu'ils coïncident en extension est une thèse substantielle qui demande un argument ; et de fait ils ne coïncident pas.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 187-188.</ref> Kripke donne deux types de contre-exemples frappants. Premièrement, certaines vérités sont ''a priori'' sans être nécessaires. La proposition « le mètre étalon de Paris mesure un mètre » est connaissable ''a priori'' (par stipulation : c'est cet objet qui fixe la définition du mètre), mais contingente (ce morceau de métal aurait pu avoir une longueur légèrement différente dans d'autres circonstances). Mares en propose une variante parlante : décidons d'appeler « Tui » la première personne qui naîtra en 2020. Nous savons ''a priori'' que, s'il existe une unique première personne née en 2020, Tui naîtra en 2020 ; mais rien n'est moins nécessaire que la naissance de cette personne cette année-là. La description sert à fixer la référence du nom ; elle n'entre pas dans les faits qui concernent la personne.<ref>Mares, E., ''A Priori'', 2014, p. 22-23.</ref> David Kaplan a généralisé le procédé : toute proposition de la forme « si p, alors actuellement p » est ''a priori'' sans être nécessaire.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 3.</ref> Deuxièmement, certaines vérités nécessaires ne sont connaissables qu{{'}}''a posteriori''. L'identité « l'étoile du soir est l'étoile du matin » (toutes deux étant Vénus) est nécessaire, puisque dans tout monde possible où ces objets existent, ils sont identiques, mais elle a été découverte par l'observation astronomique, non par la réflexion pure. De même, ce pupitre-ci n'est pas fait de glace : on ne le sait qu'en le regardant et en le touchant ; mais s'il n'est pas de glace, il ne pouvait pas l'être, car un pupitre de glace serait un autre objet. On connaît ''a priori'' le conditionnel « s'il n'est pas de glace, il est nécessairement non de glace », on apprend ''a posteriori'' son antécédent, et la conclusion hérite du caractère empirique de la prémisse.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 188-189 ; Kripke, S., « Identity and Necessity », in M. K. Munitz (éd.), ''Identity and Individuation'', New York UP, 1971.</ref> Ces résultats ont durablement transformé le débat sur l{{'}}''a priori'' en montrant qu'il est impossible de traiter comme équivalentes les questions « cette proposition est-elle nécessaire ? », « est-elle connaissable ''a priori'' ? » et « est-elle analytique ? ». La philosophie contemporaine doit travailler avec ces trois distinctions séparées. Deux précisions évitent toutefois de leur faire dire plus qu'elles ne disent. D'abord, savoir qu'une proposition est vraie et savoir qu'elle est nécessaire sont deux choses : le mathématicien connaît par sa preuve la vérité d'un théorème sans savoir, par cette preuve, qu'il est nécessaire, et le philosophe peut savoir que la conjecture de Goldbach est une proposition nécessaire (vraie ou fausse) sans savoir si elle est vraie. Les exemples de Kripke établissent donc que la valeur de vérité de certaines propositions nécessaires se connaît ''a posteriori'', non que leur statut modal se connaisse ainsi ; ce statut, Kripke lui-même le tient pour connu par analyse philosophique ''a priori''.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 189-190.</ref> Ensuite, l'argument qui conclut que « l'eau est H<sub>2</sub>O » est nécessaire repose sur deux prémisses, que « eau » et « H<sub>2</sub>O » sont des termes d'espèces naturelles et que les identités entre tels termes sont nécessaires, dont Mares fait observer qu'elles ne se connaissent, si elles se connaissent, qu{{'}}''a priori''. La nécessité ne s'apprend donc pas de l'expérience seule ; elle s'apprend d'un mélange d'expérience et de raisonnement ''a priori''.<ref>Mares, E., ''A Priori'', 2014, p. 20-22.</ref> Williamson tire une autre leçon des résultats de Kripke : une même vérité peut être connue ''a priori'' par l'un et ''a posteriori'' par l'autre. Marie, forte en calcul, sait ''a priori'' que 289 + 365 = 654 et en déduit que 289 + 365 = 654 ou qu'il y a des funiculaires en Suisse ; Jean, fort en géographie, sait ''a posteriori'' qu'il y a des funiculaires en Suisse et en déduit la même disjonction. La disjonction est nécessaire, puisque son premier membre l'est ; Jean connaît donc une vérité nécessaire ''a posteriori'', et la tradition qui réservait l{{'}}''a priori'' aux nécessités et l{{'}}''a posteriori'' aux contingences se trompait.<ref>Williamson, T., « How Deep is the Distinction... », 2020, p. 118-119.</ref> === Le néo-kantisme et la relativisation de l{{'}}''a priori'' === Les néo-kantiens du XIX{{e}} siècle et du début du XX{{e}} siècle, Hermann Cohen, Paul Natorp, Ernst Cassirer, ont cherché à adapter la théorie kantienne aux transformations scientifiques : les géométries non euclidiennes, la théorie de la relativité, la mécanique quantique semblaient contredire l'idée d'un ''a priori'' fixe et définitif.<ref>Cassirer, E., ''Substance et fonction'', 1910, trad. P. Caussat, Minuit, 1977 ; Cassirer, E., ''La théorie de la relativité d'Einstein'', 1921, trad. J. Seidengart, Cerf, 2000.</ref> Kant tenait en effet les axiomes d'Euclide pour vrais de l'espace physique et connus ''a priori'' ; la physique moderne décrit l'espace en termes non euclidiens. La leçon, note Mares, n'est pas seulement que Kant s'est trompé sur la géométrie de l'espace, mais que les savants doivent rester libres de choisir le cadre mathématique de leurs théories, ce que le nativisme kantien leur interdisait.<ref>Mares, E., ''A Priori'', 2014, p. 118-119.</ref> Pour Cassirer, les formes ''a priori'' ne sont plus des structures immuables de l'esprit, mais des « fonctions symboliques » qui évoluent avec le développement scientifique, tout en conservant un rôle constitutif : chaque théorie scientifique présuppose un cadre de principes ''a priori'' qui rendent possible l'interprétation de l'expérience, mais ce cadre peut lui-même changer lors des grandes transformations théoriques. Michael Friedman, dans la lignée de Cassirer, a développé l'idée d'un ''a priori'' « relativisé » ou « constitutif ». Un principe est ''a priori'' relativement à une théorie s'il ne peut lui-même être confirmé ni réfuté empiriquement, mais qu'il rend possible le test empirique du reste de la théorie. Comment tester la loi de la gravitation universelle de Newton ? Il faut pouvoir mesurer une force ; c'est la seconde loi du mouvement (la force est le produit de la masse par l'accélération) qui le permet, en donnant au mot « force » un sens empirique. Mais cette seconde loi, elle, n'est pas testable : elle a le statut d'une stipulation. Elle est ''a priori'' relativement à la théorie de la gravitation. La constance de la vitesse de la lumière joue un rôle analogue dans la relativité. Sans ces principes, les autres lois ne seraient que des équations sans contenu empirique.<ref>Friedman, M., ''Dynamics of Reason'', CSLI Publications, 2001, chap. 2-3 ; Mares, E., ''A Priori'', 2014, p. 119-120 ; Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 8.</ref> Les principes ''a priori'' d'une théorie physique ne sont donc pas révisables de la même manière que les hypothèses empiriques ordinaires, mais ils ne sont pas non plus définitivement à l'abri de toute révision. C'est ici que Friedman se sépare de Quine. Pour Quine, nos croyances forment une seule grande théorie que l'expérience confirme ou réfute en bloc ; pour Friedman, les savants distinguent ce qui se teste et ce qui rend le test possible. L'éclipse de 1919 ne réfute la gravitation newtonienne que si l'on admet que la lumière se propage en ligne droite ; on aurait pu conserver l'ancien cadre, mais au prix de l'élégance et de la simplicité. Le changement de cadre se décide donc sur des vertus théoriques, non sur la seule expérience.<ref>Mares, E., ''A Priori'', 2014, p. 120-121.</ref> Cette position tente de conserver l'intuition kantienne d'un rôle constitutif de l{{'}}''a priori'' tout en acceptant la leçon des changements scientifiques. Elle a un prix, que Mares souligne : si la constance de la vitesse de la lumière est stipulée, il ne peut y avoir de fait antérieur à son sujet, et le kantien, comme Kant, penche vers une forme d'antiréalisme.<ref>Mares, E., ''A Priori'', 2014, p. 122.</ref> Hilary Putnam avait proposé une idée voisine sous le nom de contextualisme : une croyance peut être ''a priori'' dans un contexte historique, où rien ne peut la réfuter empiriquement, et réfutable dans un autre.<ref>Mares, E., ''A Priori'', 2014, p. 27-28 (sur Putnam, H., « Philosophy of Physics », 1979).</ref> == L{{'}}''a priori'' dans la philosophie contemporaine == La notion d{{'}}''a priori'' demeure au cœur de plusieurs débats importants. Les sections qui suivent distinguent les principales lignes de discussion, en commençant par les questions épistémologiques les plus élémentaires, souvent absentes des présentations introductives. === La justification ''a priori'' : nature, sources et faillibilité === L'un des débats les plus vifs de l'épistémologie contemporaine porte sur la nature même de la justification ''a priori''. Dire qu'une croyance est justifiée ''a priori'', c'est dire que sa justification ne repose pas sur l'expérience, qu'il s'agisse de la perception sensible, de l'observation empirique, de l'introspection ou de toute autre forme d'évidence tirée du contact avec le monde. La plupart des épistémologues préfèrent aujourd'hui analyser la connaissance ''a priori'' à partir de la justification ''a priori'' plutôt que l'inverse : c'est la justification, et non la connaissance, qui distingue l{{'}}''a priori'' de l{{'}}''a posteriori'', et l'on évite ainsi d'exclure d'avance qu'une croyance fausse puisse être justifiée ''a priori''.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 10 ; Boghossian, P., « Do We Have Reason to Doubt... », 2020, p. 139.</ref> Mais sur quoi repose alors cette justification ? Une première difficulté tient au mot « expérience ». En un sens large, toute conscience de quelque chose est une expérience, y compris le fait de suivre une preuve ou d'apercevoir intellectuellement qu'une proposition est vraie ; en ce sens, aucune justification n'est indépendante de l'expérience. En un sens étroit, l'expérience se réduit aux cinq sens ; mais alors l'introspection et la mémoire, que l'on range d'ordinaire du côté de l{{'}}''a posteriori'', échappent à la définition.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 29-30.</ref> Boghossian et Peacocke distinguent trois lectures : la plus stricte (l'expérience perceptive du monde hors du corps), une lecture intermédiaire (toute expérience perceptive, y compris celle des états du corps) et la plus générale (tout état conscient). Selon la lecture choisie, « j'ai mal » sera ou non connu ''a priori''.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 2-3.</ref> Casullo a passé en revue les tentatives de caractériser l'expérience au sens pertinent par sa phénoménologie, par le contenu contingent des croyances qu'elle justifie, par ses objets concrets ou par la relation causale entre le sujet et l'objet, et conclut qu'aucune ne tient. Il propose de traiter « expérience » comme un terme d'espèce naturelle, à la manière d'« eau » : nous en repérons les paradigmes, les processus liés aux cinq sens, par des traits de surface, mais c'est leur nature sous-jacente, à découvrir par les sciences cognitives, qui en fixe l'extension. Nous serions, à l'égard de l'expérience, dans la situation des locuteurs du XVI{{e}} siècle à l'égard de l'eau : capables d'en reconnaître des exemples, ignorants de ce qui les unit.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 149-160.</ref> Warren préfère parler d'un concept théorique : nous partons d'une notion de l'expérience tirée de l'intérieur, comme ce qui, dans le cours de nos états sensoriels, est clair, détaillé, vif et involontaire, puis nous la révisons en postulant un monde extérieur qui l'explique.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 11-14.</ref> Une seconde difficulté tient au mot « indépendant ». Casullo réduit les analyses en présence à deux. Selon la première, une croyance est justifiée ''a priori'' si et seulement si elle est justifiée par une source non expérientielle ; selon la seconde, il faut en outre que cette justification ne puisse être défaite par l'expérience. La première est la plus économe ; elle traite l{{'}}''a priori'' comme l{{'}}''a posteriori'', sans lui imposer d'exigence particulière. Comme l'écrit Casullo, « le concept de justification a priori est minimal » ; c'est le concept d'une justification non expérientielle, et rien de plus.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 3 et p. 31-32.</ref> La question de l'existence de connaissances ''a priori'' devient alors celle-ci : y a-t-il des sources non expérientielles de croyances justifiées ? Warren propose un critère commode, qu'il appelle le test de l'imagination. Vous avez suivi la preuve d'Euclide de l'infinité des nombres premiers ; cette expérience a causé votre croyance. Mais si vous aviez imaginé la preuve, en parfait détail, chaque étape intacte, votre justification aurait été exactement la même : une preuve dans la tête vaut une preuve sur le papier. Une chaise brune imaginée, en revanche, ne justifie en rien la croyance qu'il y a une chaise brune devant vous. Lorsque le remplacement d'une expérience par un acte d'imagination qualitativement identique laisse la justification intacte, l'expérience n'a joué qu'un rôle habilitant ; sinon, elle a joué un rôle épistémique. La justification ''a priori'' est celle que l'on pourrait obtenir, en principe, dans une chambre de privation sensorielle.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 14-17.</ref> Le rationalisme modéré, défendu notamment par Laurence BonJour, soutient que la justification ''a priori'' repose sur l'« intuition rationnelle » ou l'« évidence intellectuelle » : lorsque nous saisissons que la proposition « rien ne peut être entièrement rouge et entièrement vert au même moment » est vraie, nous nous appuyons sur une sorte de « voir » intellectuel, analogue (mais non identique) à la perception sensible.<ref>BonJour, L., ''In Defense of Pure Reason. A Rationalist Account of A Priori Justification'', Cambridge UP, 1998, chap. 4 ; Casullo, A., ''A Priori Justification'', 2003, p. 30 et p. 155.</ref> George Bealer parle d'« intuitions » au sens technique, des états mentaux où une proposition nous apparaît vraie sans que cette apparence repose sur l'inférence, la mémoire ou la perception, et soutient que ces intuitions constituent une source irréductible de justification ''a priori''.<ref>Bealer, G., « The Incoherence of Empiricism », ''Proceedings of the Aristotelian Society'', suppl. vol. 66, 1992, p. 99-138.</ref> Une question centrale est celle de la faillibilité : la justification ''a priori'' peut-elle être erronée ? Le rationalisme infaillibiliste traditionnel répondait non : ce qui est connu ''a priori'' est connu avec certitude. Descartes tient que la méthode, correctement appliquée, garantit des croyances vraies, et Philip Kitcher, en plein XX{{e}} siècle, exige encore qu'une personne autorisée à ignorer l'information empirique dispose d'une méthode qui garantisse la vérité.<ref>Mares, E., ''A Priori'', 2014, p. 24 ; Kitcher, P., ''The Nature of Mathematical Knowledge'', Oxford UP, 1983, p. 30.</ref> Mais la plupart des épistémologues contemporains adoptent un rationalisme faillibiliste : une croyance peut être justifiée ''a priori'' tout en étant révisable, voire fausse.<ref>Casullo, A., ''A Priori Justification'', 2003, chap. 2-3.</ref> Casullo distingue ici deux sens de l'infaillibilité que l'on confond souvent : l'infaillibilité cartésienne, qui lie la justification à la vérité (il est impossible que la croyance soit justifiée par cette source et fausse), et l'infaillibilité peircienne, qui lie la justification à l'indéfaisabilité (aucune donnée ne peut la défaire). Ni l'une n'entraîne l'autre. Un mathématicien compétent qui a suivi une preuve valide voit sa justification défaite par la pseudo-preuve, tout aussi convaincante, que lui présente un collègue ; un étudiant voit la sienne défaite par le professeur qui, à tort, lui signale une erreur.<ref>Casullo, A., ''A Priori Justification'', 2003, p. 57-58.</ref> L'histoire des mathématiques offre des exemples instructifs : des propositions longtemps tenues pour évidentes ''a priori'', comme l'axiome des parallèles d'Euclide ou le principe selon lequel le tout est plus grand que sa partie, se sont révélées contestables ou fausses.<ref>Casullo, A., ''Essays on A Priori Knowledge and Justification'', Oxford UP, 2012, p. 24.</ref> Alvin Plantinga cite le cas des fonctions : on a longtemps cru évident qu'une fonction définie sur tous les réels devait être continue sur quelque intervalle, jusqu'à la découverte, au XIX{{e}} siècle, de fonctions partout définies et nulle part continues. Exiger de la justification ''a priori'' qu'elle apporte la certitude reviendrait, note Mares, à reconnaître que nous n'en avons presque jamais, et à la marginaliser.<ref>Mares, E., ''A Priori'', 2014, p. 25-26.</ref> Boghossian et Peacocke vont dans le même sens : de même qu'une croyance empirique justifiée peut se révéler fausse, une croyance ''a priori'' justifiée peut être réfutée sur des bases ''a priori''.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 4.</ref> Se pose alors le problème de la défaisabilité (''defeasibility'') : la justification ''a priori'' peut-elle être défaite par des considérations empiriques ? Si un mathématicien croit ''a priori'' avoir trouvé une démonstration correcte, mais qu'un ordinateur vérifie les calculs et signale une erreur, la justification ''a priori'' initiale est-elle annulée par cette donnée empirique ? Kitcher tirait de tels cas un argument contre l{{'}}''a priori'' : si une foule de mathématiciens rejette ma croyance, ce désaccord, qui est un fait empirique, doit rationnellement me faire douter ; aucune croyance n'est donc immune à la réfutation empirique. Hartry Field répond en distinguant l'évidence directe contre une proposition et l'évidence indirecte, qui porte sur ce que les gens en pensent ; c'est la première seule qu'exclut l'immunité empirique.<ref>Mares, E., ''A Priori'', 2014, p. 9-10 ; Warren, J., ''The A Priori Without Magic'', 2022, p. 18.</ref> Casullo distingue plusieurs manières dont l'expérience peut interagir avec la justification ''a priori'' : l'expérience ne fonde pas cette justification, mais elle peut la confirmer, la renforcer ou l'affaiblir.<ref>Casullo, A., ''A Priori Justification'', 2003, chap. 3-4.</ref> Boghossian et Peacocke ajoutent qu'il n'y a rien de contraire à la raison dans l'idée d'une justification ''a priori'' que l'expérience peut défaire : l'induction énumérative en est un exemple modeste, et le fait de prendre nos perceptions, nos souvenirs et les dires d'autrui au sérieux, sans preuve, en est un autre, car une telle autorisation ne saurait venir de l'expérience elle-même.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 4-5.</ref> Cette discussion prolonge et nuance la critique quinienne en montrant que même les défenseurs de l{{'}}''a priori'' peuvent reconnaître des formes d'interaction avec l'expérience, sans pour autant dissoudre la notion. Field, pour sa part, retourne la difficulté : plutôt que de chercher une définition de la justification ''a priori'', il fait de l'immunité à la réfutation empirique le trait définitoire d'une croyance ''a priori'', et soutient que nous sommes par défaut autorisés à croire ce qui ne peut être réfuté empiriquement. Mares nomme cela la conception de l'immunité, par opposition à la conception justificationnelle, et fait observer que les combiner, comme l'a souvent fait la tradition, rend la connaissance ''a priori'' presque impossible à obtenir.<ref>Mares, E., ''A Priori'', 2014, p. 8 et p. 11.</ref> === Expliquer l{{'}}''a priori'' : intuitions rationnelles ou signification ? === Reste la question la plus difficile : d'où vient le pouvoir de la pensée pure ? Peacocke la formule comme une question de « comment » : en quoi le fait de comprendre une proposition, ou de posséder un concept, confère-t-il à certaines manières d'en venir à l'accepter la capacité de produire une connaissance, alors même qu'elles ne s'appuient sur aucune expérience ? Que celui qui possède le concept de conjonction doive accepter d'inférer « p » de « p et q », sans justification empirique, paraît intuitif ; mais dire pourquoi est une autre affaire, et une théorie sobre de l'intuition rationnelle, qui n'y voit que la capacité de comprendre et de penser, doit d'autant plus expliquer d'où vient ce pouvoir.<ref>Peacocke, C., « Explaining the A Priori: The Programme of Moderate Rationalism », in ''New Essays on the A Priori'', 2000, p. 255-257.</ref> Casullo et Joshua Thurow posent la question en des termes proches : entre ceux qui font appel à l'intuition rationnelle et ceux qui font appel à la possession des concepts, c'est la source de la connaissance ''a priori'' qui est en jeu.<ref>Thurow, J. C. et Casullo, A., « Introduction », in A. Casullo et J. C. Thurow (éds.), ''The A Priori in Philosophy'', Oxford UP, 2013, p. 1-2 et p. 4-5.</ref> Warren décrit le paysage avec une franchise utile. Le rationalisme extrême postulait une faculté de raison pure, sorte de sens intellectuel donnant accès à des faits indépendants de l'esprit ; les sciences cognitives n'en trouvent aucune trace, et l'hypothèse, pour survivre, doit se vider de tout contenu. Le rationalisme modeste abandonne la faculté mais conserve des états quasi perceptifs, les intuitions intellectuelles, qui ne sont ni des croyances ni des inclinations à croire, mais quelque chose qui y donne lieu ; il admet que ces intuitions sont faillibles et accessibles à l'introspection. Warren avoue n'en trouver aucune en lui, et relève que Williamson dit de même ; il propose d'expliquer le sentiment de compréhension, ce « voir » soudain la solution d'une énigme, par l'apparition d'inclinations à accepter une proposition et à la relier à ce que nous savons, sans rien de plus.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 23-27.</ref> Son propre candidat est une théorie fondée sur la signification : les significations de certains mots sont constituées par les règles d'inférence que nous suivons. Quiconque ne passerait jamais de « x est célibataire » à « x n'est pas marié » ne voudrait pas dire ce que nous voulons dire par « célibataire » ; quiconque n'appliquerait jamais le ''modus ponens'' n'aurait pas notre concept de conditionnel. D'où le principe qu'il nomme lien entre signification et autorisation : nous sommes automatiquement autorisés à user, en tout contexte, des règles qui déterminent les significations de notre langue, car choisir ses règles, c'est choisir sa langue, et ce choix est pratique, non épistémique. Tout ce que l'on peut prouver à partir de ces règles est connaissable ''a priori'', et de manière robuste, puisqu'abandonner la règle, c'est abandonner le concept, non conserver la même croyance sans justification.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 29-32.</ref> Cette approche, qui prolonge les travaux de Boghossian sur la logique, revendique d'expliquer l{{'}}''a priori'' « sans magie », c'est-à-dire sans facultés ni états dont la relation aux faits resterait mystérieuse. Boghossian avait préparé ce terrain en distinguant deux notions d'analyticité. La notion métaphysique, celle des positivistes, veut qu'une phrase doive sa vérité à sa seule signification et non aux faits ; Quine a eu raison de la juger douteuse, car il est difficile de comprendre comment le fait de vouloir dire quelque chose rendrait ce quelque chose vrai. La notion épistémologique dit seulement que la compréhension d'une phrase suffit à justifier qu'on la tienne pour vraie. Or la théorie analytique de l{{'}}''a priori'' n'a besoin que de la seconde ; elle peut se passer de tout conventionnalisme, et une critique quinienne qui voudrait l'atteindre devrait, selon Boghossian, s'engager jusqu'à l'indétermination de la signification, thèse que la plupart des philosophes rejettent.<ref>Boghossian, P., « Analyticity Reconsidered », ''Noûs'', vol. 30, n° 3, 1996, p. 360-391 ; repris in ''Debating the A Priori'', 2020, p. 2-6.</ref> Ce travail montre que la question du rapport entre analyticité et ''a priori'' reste ouverte et féconde. Robert Hanna défend, à l'inverse, un néo-rationalisme d'inspiration kantienne. Il prend acte de ce que l'empirisme sceptique à l'égard des intuitions est sans doute faux, mais que les attaques contre le rationalisme n'ont reçu de réponse ni sur le problème de la justification (comment les intuitions rationnelles justifient-elles suffisamment une croyance ?) ni sur celui de l'explication (comment de telles intuitions sont-elles possibles ?). Sa définition de l'apriorité est ample : est ''a priori'' ce dont le contenu, la vérité ou la justification sont sous-déterminés par l'ensemble des faits empiriques, de sorte qu'aucun changement dans ces faits n'en commande le changement.<ref>Hanna, R., ''Cognition, Content, and the A Priori'', 2015, p. 313 et p. 315.</ref> Les intuitions philosophiques elles-mêmes sont devenues un terrain d'affrontement. Les philosophes en appellent aux intuitions comme à une évidence, et tiennent cette évidence pour ''a priori''. La philosophie expérimentale a soumis les [[Dictionnaire de philosophie/Expérience de pensée|expériences de pensée]] classiques à des enquêtes et rapporte que les intuitions des non-philosophes varient selon la culture d'origine, le statut social ou l'ordre de présentation des cas, autant de facteurs sans rapport avec la vérité des propositions en jeu. Faut-il en conclure que les intuitions ne sont pas des preuves, ou qu'elles ne sont pas ''a priori'' ? Alvin Goldman distingue la question de premier ordre (les intuitions sont-elles des preuves ?) et la question de second ordre (avons-nous des preuves qu'elles le sont ?), et admet qu'une vérification empirique soit requise au second niveau sans que le premier en devienne empirique. Jonathan Ichikawa soutient qu'une confirmation expérimentale de nos intuitions jouerait un rôle habilitant : elle lèverait un doute qui défaisait notre justification, sans devenir elle-même cette justification. Jonathan Weinberg accepte un ''a priori'' qui n'est pas pur de tout élément empirique, pourvu qu'il continue de livrer des conclusions modales fortes.<ref>Thurow, J. C. et Casullo, A., « Introduction », 2013, p. 2-4 ; Goldman, A. I., « Philosophical Naturalism and Intuitional Methodology », in ''The A Priori in Philosophy'', 2013, p. 11-44 ; Ichikawa, J. J., « Experimental Philosophy and Apriority », in ''The A Priori in Philosophy'', 2013, p. 45-66.</ref> === La distinction est-elle essentielle ? Williamson et Boghossian === [[Dictionnaire de philosophie/Timothy Williamson|Timothy Williamson]] a proposé une critique d'un autre genre. Il ne nie pas que la distinction existe : introduite par le bas, par des exemples, elle fait l'objet d'un accord robuste. Il conteste qu'elle découpe la connaissance à ses articulations. Introduite par le haut, par une définition (indépendance ou dépendance à l'égard de l'expérience), elle court le risque, si Quine a raison, de ne rien mettre d'un côté ; introduite par le bas, elle court celui de suivre des ressemblances superficielles, comme une classification des plantes par la couleur.<ref>Williamson, T., « How Deep is the Distinction... », 2020, p. 117-118.</ref> Son argument central repose sur deux vérités : « toutes les choses cramoisies sont rouges » et « tous les volumes récents du ''Who's Who'' sont rouges ». La première est le cas clair d'une connaissance ''a priori'', la seconde d'une connaissance ''a posteriori''. Or considérons Norman, qui a appris « cramoisi » et « rouge » séparément, par ostension, et n'a jamais réfléchi à leur rapport. Interrogé, il imagine un échantillon cramoisi et juge, dans l'imagination, qu'il est rouge, en transposant hors ligne une compétence acquise en ligne dans la perception. Interrogé sur le ''Who's Who'', il imagine un volume récent et juge, de la même manière, qu'il est rouge. Les processus cognitifs sont presque identiques ; dans les deux cas, l'expérience passée a fait plus qu'habiliter (elle a calibré une compétence) et moins que prouver. Si Norbert, moins exercé, échoue à savoir que le cramoisi est rouge, c'est faute de pratique, non faute de concept. La différence saillante entre les deux vérités est modale, l'une étant nécessaire et l'autre contingente ; mais Kripke nous a appris à ne pas lire l'épistémologie d'une vérité sur son statut métaphysique, et connaître une vérité nécessaire n'est pas connaître qu'elle est nécessaire. Conclusion de Williamson : la distinction « ne découpe pas aux articulations épistémologiques » ; on peut garder les mots, mais sans en attendre beaucoup de travail théorique. Plutôt que de raccommoder une distinction fatiguée, l'épistémologie gagnerait à décrire finement l'usage hors ligne, dans l'imagination, de compétences formées dans la perception.<ref>Williamson, T., « How Deep is the Distinction... », 2020, p. 120-125 et p. 134.</ref> Boghossian a répondu point par point. Il salue une forme neuve de scepticisme, qui accorde tout aux exemples et ne conteste que leur importance, mais il conteste la description des cas. Pour que Norman puisse conclure de l'unique instance imaginée à la couleur de tous les volumes, il lui faut déjà savoir que ces volumes ont une couleur dominante et que l'instance imaginée en est représentative ; sans quoi, imaginer une coccinelle rouge n'apprend rien sur la couleur des coccinelles, et se figurer un taxi londonien ne dit pas de quelle couleur sombre étaient les taxis dont on ne se souvient plus. Norman ne peut donc savoir que les volumes sont rouges qu'en rappelant une image générique stockée par la mémoire, ce qui est un usage substantiel de l'expérience. Dans le cas du cramoisi, les croyances d'arrière-plan requises (qu'il existe un déterminable rouge auquel toutes les nuances de cramoisi appartiennent) sont, elles, justifiées ''a priori''. Redécrits de façon à produire une connaissance, les deux cas diffèrent donc nettement, et l'argument de Williamson, selon Boghossian, tire sa force d'une conception fiabiliste de la justification, pour laquelle l'expérience peut en effet jouer un rôle intermédiaire en affinant la fiabilité de nos capacités.<ref>Boghossian, P., « Do We Have Reason to Doubt... », 2020, p. 138 et p. 150-154.</ref> Boghossian propose enfin de caractériser l'expérience par une liste : une justification est indépendante de l'expérience si elle ne dépend épistémiquement ni de l'expérience sensible, ni de l'introspection, ni d'usages substantiels de la mémoire, tandis que l'intuition, certains usages de l'imagination et la réflexion peuvent jouer un rôle épistémique sans que la justification cesse d'être ''a priori''.<ref>Boghossian, P., « Do We Have Reason to Doubt... », 2020, p. 153.</ref> Le débat, poursuivi sur plusieurs échanges, illustre bien la vitalité de la question : Williamson suggère de s'intéresser à la fiabilité et à la robustesse des méthodes cognitives employées, quelle que soit leur classification, quand Boghossian tient que nul ne nous a encore donné de bonne raison de refuser à la distinction la centralité qu'elle paraît mériter.<ref>Williamson, T., ''The Philosophy of Philosophy'', Blackwell, 2007, chap. 5 ; Boghossian, P., « Do We Have Reason to Doubt... », 2020, p. 154.</ref> === ''A priori'', analyticité et modalité : le paysage après Kripke === Les résultats de Kripke ont ouvert un espace de recherche très actif sur les rapports entre ''a priori'', analyticité et nécessité. [[Dictionnaire de philosophie/David Chalmers|David Chalmers]] et Frank Jackson ont développé le « bidimensionnalisme sémantique », qui tente de restaurer un lien systématique entre ''a priori'' et nécessité en distinguant deux dimensions de signification (le contenu « primaire » et le contenu « secondaire » d'un énoncé).<ref>Chalmers, D., « Does Conceivability Entail Possibility? », in T. Gendler et J. Hawthorne (éds.), ''Conceivability and Possibility'', Oxford UP, 2002, p. 145-200 ; Jackson, F., ''From Metaphysics to Ethics'', Oxford UP, 1998.</ref> Selon cette approche, les nécessités ''a posteriori'' de Kripke (comme « l'eau est H<sub>2</sub>O ») ne sont pas de vraies exceptions : leur contenu primaire (ce que l'énoncé dit dans le monde actuel) est en réalité ''a priori'', tandis que leur contenu secondaire (ce qu'il dit dans tous les mondes possibles) est nécessaire. L'idée a une origine technique précise : dans une sémantique à deux dimensions, on considère une famille de modèles où des mondes différents sont tour à tour désignés comme actuels, et l'on repère les propositions vraies dans le monde actuel quel que soit celui qu'on désigne ainsi. Les instances de « si p, alors actuellement p » ont cette propriété, qui semble suffire à l'apriorité et qui, Boghossian et Peacocke le soulignent, ne restreint en rien l'éventail des possibilités.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 5-6.</ref> Le bidimensionnalisme est discuté et contesté, mais il témoigne de la vitalité du débat. === L{{'}}''a priori'', les sciences cognitives et la question de l'innéité === La question de l{{'}}''a priori'' réapparaît dans les sciences cognitives sous la forme du débat sur l'innéisme : existe-t-il des structures cognitives innées, indépendantes de l'expérience individuelle ? Le linguiste Noam Chomsky défend l'existence d'une « grammaire universelle » innée qui structure l'acquisition du langage.<ref>Chomsky, N., ''Règles et représentations'', 1980, trad. A. Kihm, Flammarion, 1985 ; Mares, E., ''A Priori'', 2014, p. 55 et p. 57.</ref> Certains psychologues du développement, comme Elizabeth Spelke, ont identifié des « systèmes de connaissance de base » (''core knowledge'') chez le nourrisson, une appréhension intuitive des nombres, des objets physiques, de la géométrie, qui semblent précéder toute instruction.<ref>Spelke, E. S. et Kinzler, K. D., « Core Knowledge », ''Developmental Science'', vol. 10, n° 1, 2007, p. 89-96.</ref> Cependant, il est important de ne pas confondre innéité et ''a priori''. L{{'}}''a priori'' est d'abord une notion épistémologique : il concerne le mode de justification d'une proposition ou d'une croyance, le fait qu'elle puisse être justifiée indépendamment de l'expérience (au sens large : perception, observation, évidence empirique sous toutes ses formes). L'innéité, en revanche, est une notion portant sur la genèse ou l'origine d'une structure cognitive : elle dit que cette structure n'a pas été acquise par apprentissage individuel, mais est présente dès la naissance (ou dès un stade très précoce du développement). Une structure cognitive peut être innée sans que les croyances qu'elle produit soient justifiées ''a priori'' ; inversement, une justification ''a priori'' peut en principe ne reposer sur aucune structure innée identifiable. Mares le montre en comparant la croyance innée et la croyance analytique : la première est indépendante de l'expérience parce qu'elle n'est pas apprise, la seconde parce que saisir le sens de la phrase suffit à voir qu'elle est vraie, alors même que ce sens s'apprend. Ce sont deux raisons très différentes de parler d{{'}}''a priori''.<ref>Mares, E., ''A Priori'', 2014, p. 5 et p. 57.</ref> Il rappelle aussi que le nativisme est affaire de degré : Hume lui-même admet une tendance innée à associer les idées, et une croyance innée peut être défaite, comme celle de la physique naïve selon laquelle les objets ordinaires sont pleins, sans vide intérieur.<ref>Mares, E., ''A Priori'', 2014, p. 54-55 et p. 59.</ref> Warren accorde qu'il existe une apriorité « par défaut », tirée de l'innéité, puisque sans mécanismes innés la formation des croyances ne pourrait commencer, mais il souligne que ce n'est pas l'apriorité intéressante, celle d'une justification robuste.<ref>Warren, J., ''The A Priori Without Magic'', 2022, p. 22-23.</ref> Paul Horwich a néanmoins exploré l'hypothèse que l'apriorité puisse s'expliquer par l'innéité et l'indispensabilité psychologique de certains principes.<ref>Boghossian, P. et Peacocke, C., « Introduction », 2000, p. 7.</ref> L'épistémologie évolutionniste, issue notamment des travaux du biologiste Konrad Lorenz (1903-1989), illustre cette distinction de manière éclairante.<ref>Lorenz, K., « Kants Lehre vom Apriorischen im Lichte gegenwärtiger Biologie », ''Blätter für deutsche Philosophie'', vol. 15, 1941, p. 94-125.</ref> Lorenz propose de comprendre les structures kantiennes de perception et de cognition, notre appréhension de l'espace, du temps, de la causalité, comme des adaptations évolutives : elles seraient ''a priori'' pour l'individu (présentes avant toute expérience personnelle), mais ''a posteriori'' pour l'espèce (résultant d'une longue sélection naturelle). Cette perspective est suggestive, mais elle transpose la question de l{{'}}''a priori'' du plan épistémologique (comment une croyance est-elle justifiée ?) au plan génétique (comment une structure cognitive est-elle acquise ?). Or ce sont deux questions distinctes. Le fait qu'une capacité cognitive ait une origine évolutive ne dit rien, en tant que tel, sur le statut justificatif des croyances qu'elle produit : une capacité innée peut engendrer des croyances fausses, et une croyance justifiée ''a priori'' peut n'avoir aucun fondement biologique identifiable. Pour qu'un argument évolutionniste établisse la fiabilité d'une croyance innée, il faudrait montrer non seulement que cette croyance aide à survivre, mais que sa vérité importe à la survie, et qu'un mécanisme explique sa transmission ; or des auteurs comme Mackie, Ruse ou Joyce tirent de l'évolution l'argument inverse, selon lequel nos croyances morales ont pu être utiles sans être vraies, et Gould et Lewontin ont mis en garde contre les explications adaptatives non testées, ces histoires comme ça, à la manière de Kipling.<ref>Mares, E., ''A Priori'', 2014, p. 57-59.</ref> === Philosophie morale et politique === L{{'}}''a priori'' joue également un rôle en éthique. Kant lui-même fonde sa philosophie morale sur un principe ''a priori'' : l'impératif catégorique, qui prescrit d'agir uniquement selon une maxime que l'on pourrait vouloir ériger en loi universelle.<ref>Kant, E., ''Fondation de la métaphysique des mœurs'', 1785, trad. A. Renaut, Garnier-Flammarion, 1994, Deuxième section.</ref> Ce principe ne dérive pas de l'expérience, mais de la raison pratique pure. Mares fait valoir que les normes, morales ou épistémiques, sont l'un des deux grands motifs de croire à l{{'}}''a priori'', avec la nécessité : l'expérience nous dit ce qui est le cas, non ce qui devrait l'être. Nous désirons peut-être tous être heureux, comme le dit Mill ; mais devrions-nous le désirer ? Aucune enquête ne semble pouvoir en décider, et ceux qui refusent l{{'}}''a priori'' doivent, en règle générale, réduire les normes à des faits sur des institutions sociales.<ref>Mares, E., ''A Priori'', 2014, p. 2-4.</ref> Parmi les contemporains, Christine Korsgaard défend encore une conception kantienne de la moralité fondée sur des principes ''a priori'' de la raison pratique.<ref>Korsgaard, C., ''Creating the Kingdom of Ends'', Cambridge UP, 1996, chap. 1-3.</ref> La tradition phénoménologique, dans la lignée de Scheler, explore de son côté un ''a priori'' matériel des valeurs : l'existence de hiérarchies axiologiques (le noble supérieur à l'agréable, le sacré supérieur à l'utile) qui, sans être dérivées de l'expérience empirique, structurent notre vie morale et affective. Boghossian range de son côté certains jugements moraux parmi les cas clairs de l{{'}}''a priori'' : qu'il soit mal, dans le scénario du tramway, de pousser un homme du haut d'un pont pour en sauver cinq est une chose que nous jugeons sans enquête ; que toutes les sociétés le jugent ainsi, nous ne le saurions qu'en enquêtant.<ref>Boghossian, P., « Do We Have Reason to Doubt... », 2020, p. 138.</ref> == Conclusion == La distinction entre ''a priori'' et ''a posteriori'', loin d'être une simple classification scolaire, engage toute une conception de la connaissance humaine et de ses limites. Elle pose la question suivante : qu'est-ce que notre esprit apporte à la connaissance du réel, et qu'est-ce qu'il reçoit de l'expérience ? Si la réponse kantienne, avec ses formes ''a priori'' de la sensibilité et ses catégories de l'entendement, n'est plus acceptée telle quelle, elle a durablement marqué la philosophie en montrant que la connaissance n'est jamais une simple réception passive de données, mais implique toujours une activité structurante du sujet connaissant. Les débats contemporains sur la nature de la justification ''a priori'', sa faillibilité, les rapports entre ''a priori'', analyticité et nécessité, le rôle de l'intuition rationnelle, le statut des principes scientifiques ou les structures cognitives innées s'inscrivent tous, d'une manière ou d'une autre, dans l'héritage de cette distinction. Que ses adversaires les plus subtils, de Quine à Williamson, aient dû reconnaître la solidité des exemples avant d'en contester la portée dit assez qu'elle ne se laisse pas congédier. Comprendre la notion d{{'}}''a priori'', c'est saisir l'un des fils conducteurs de l'histoire de la philosophie : la tentative de délimiter ce qui, dans notre connaissance du monde, relève de la constitution propre de notre esprit et ce qui provient de l'expérience sensible, autrement dit, de comprendre comment nous connaissons et quelles sont les conditions de possibilité de notre savoir. == Notes et références == {{references|colonnes=2}} == Bibliographie == === Sources primaires classiques === * Aristote, ''Seconds Analytiques'', trad. P. Pellegrin, Garnier-Flammarion, 2005. * Platon, ''La République'', trad. G. Leroux, Garnier-Flammarion, 2004. * Platon, ''Ménon'', trad. M. Canto-Sperber, Garnier-Flammarion, 1993. * Thomas d'Aquin, ''Somme théologique'', trad. A.-M. Roguet, Cerf, 1984 (4 vol.). * Descartes, René, ''Méditations métaphysiques'', 1641, éd. J.-M. Beyssade et M. Beyssade, Garnier-Flammarion, 2011. * Leibniz, Gottfried W., ''Nouveaux essais sur l'entendement humain'', 1765, éd. J. Brunschwig, Garnier-Flammarion, 1990. * Leibniz, Gottfried W., ''Monadologie'', 1714, éd. É. Boutroux, Delagrave, 1991. * Locke, John, ''Essai sur l'entendement humain'', 1689, trad. J.-M. Vienne, Vrin, 2001-2006 (2 vol.). * Hume, David, ''Traité de la nature humaine'', 1739, trad. Ph. Baranger et Ph. Saltel, Garnier-Flammarion, 1993-1999 (3 vol.). * Hume, David, ''Enquête sur l'entendement humain'', 1748, trad. A. Leroy, rév. M. Beyssade, Garnier-Flammarion, 2006. * Kant, Emmanuel, ''Critique de la raison pure'', 1781/1787, trad. A. Renaut, Garnier-Flammarion, 2006 ; trad. A. Tremesaygues et B. Pacaud, PUF, coll. « Quadrige », 2012. * Kant, Emmanuel, ''Prolégomènes à toute métaphysique future'', 1783, trad. J. Gibelin, rév. J. Rivelaygue, Vrin, 1986. * Kant, Emmanuel, ''Fondation de la métaphysique des mœurs'', 1785, trad. A. Renaut, Garnier-Flammarion, 1994. * Mill, John Stuart, ''Système de logique déductive et inductive'', 1843, trad. L. Peisse, Mardaga, 1988. * Frege, Gottlob, ''Les Fondements de l'arithmétique'', 1884, trad. C. Imbert, Seuil, 1969. === Développements post-kantiens et XX{{e}} siècle === * Ayer, Alfred J., ''Language, Truth and Logic'', Gollancz, 1936 ; rééd. Penguin, 2001. * Husserl, Edmund, ''Recherches logiques'', 1900-1901, trad. H. Élie, A. L. Kelkel et R. Schérer, PUF, 1961-1963 (3 vol.). * Husserl, Edmund, ''Idées directrices pour une phénoménologie'', 1913, trad. P. Ricœur, Gallimard, 1950. * Scheler, Max, ''Le formalisme en éthique et l'éthique matériale des valeurs'', 1913-1916, trad. M. de Gandillac, Gallimard, 1955. * Carnap, Rudolf, ''Der logische Aufbau der Welt'', 1928 ; trad. angl. ''The Logical Structure of the World'', Open Court, 2003. * Cassirer, Ernst, ''Substance et fonction'', 1910, trad. P. Caussat, Minuit, 1977. * Cassirer, Ernst, ''La théorie de la relativité d'Einstein'', 1921, trad. J. Seidengart, Cerf, 2000. * Quine, Willard Van Orman, « Two Dogmas of Empiricism », ''The Philosophical Review'', vol. 60, n° 1, 1951, p. 20-43 ; repris dans ''From a Logical Point of View'', Harvard UP, 1953. * Quine, Willard Van Orman, ''Word and Object'', MIT Press, 1960. * Grice, Herbert P. et Strawson, Peter F., « In Defense of a Dogma », ''Philosophical Review'', vol. 65, n° 2, 1956, p. 141-158. * Dufrenne, Mikel, ''La Notion d'a priori'', PUF, 1959 ; trad. angl. E. S. Casey, ''The Notion of the A Priori'', préf. P. Ricœur, Northwestern UP, 1966, rééd. 2009. * Dufrenne, Mikel, ''L'inventaire des a priori. Recherche de l'originaire'', Christian Bourgois, 1981. * Kripke, Saul, « Identity and Necessity », in M. K. Munitz (éd.), ''Identity and Individuation'', New York UP, 1971, p. 135-164. * Kripke, Saul, ''Naming and Necessity'', Harvard UP, 1980 ; trad. fr. P. Jacob et F. Recanati, ''La logique des noms propres'', Minuit, 1982. === Épistémologie contemporaine de l{{'}}''a priori'' === * Bealer, George, « The Incoherence of Empiricism », ''Proceedings of the Aristotelian Society'', suppl. vol. 66, 1992, p. 99-138. * Boghossian, Paul, « Analyticity Reconsidered », ''Noûs'', vol. 30, n° 3, 1996, p. 360-391. * Boghossian, Paul et Peacocke, Christopher (éds.), ''New Essays on the A Priori'', Clarendon Press, 2000. * Boghossian, Paul et Williamson, Timothy, ''Debating the A Priori'', Oxford UP, 2020. * BonJour, Laurence, ''In Defense of Pure Reason. A Rationalist Account of A Priori Justification'', Cambridge UP, 1998. * Casullo, Albert (éd.), ''A Priori Knowledge'', Ashgate, 1999 (anthologie de textes classiques et contemporains). * Casullo, Albert, ''A Priori Justification'', Oxford UP, 2003. * Casullo, Albert, ''Essays on A Priori Knowledge and Justification'', Oxford UP, 2012. * Casullo, Albert et Thurow, Joshua C. (éds.), ''The A Priori in Philosophy'', Oxford UP, 2013. * Chalmers, David, « Does Conceivability Entail Possibility? », in T. Gendler et J. Hawthorne (éds.), ''Conceivability and Possibility'', Oxford UP, 2002, p. 145-200. * Field, Hartry, « Recent Debates about the A Priori », in T. Gendler et J. Hawthorne (éds.), ''Oxford Studies in Epistemology'', vol. 1, Oxford UP, 2005, p. 69-88. * Hanna, Robert, ''Cognition, Content, and the A Priori. A Study in the Philosophy of Mind and Knowledge'', Oxford UP, 2015. * Kitcher, Philip, ''The Nature of Mathematical Knowledge'', Oxford UP, 1983. * Mares, Edwin, ''A Priori'', Routledge, coll. « Central Problems of Philosophy », 2014. * Warren, Jared, ''The A Priori Without Magic'', Cambridge UP, coll. « Elements in Epistemology », 2022. * Williamson, Timothy, ''The Philosophy of Philosophy'', Blackwell, 2007. === Études et manuels sur Kant === * Benoist, Jocelyn, ''L'a priori conceptuel. Bolzano, Husserl, Schlick'', Vrin, 1999. * Friedman, Michael, ''Kant and the Exact Sciences'', Harvard UP, 1992. * Friedman, Michael, ''Dynamics of Reason'', CSLI Publications, 2001. * Gueroult, Martial, ''La Critique de la raison pure de Kant'', Collège de France, 2022. * Guillermit, Louis, ''Leçons sur la Critique de la raison pure de Kant'', Vrin, 2008. * Guyer, Paul, ''Kant'', Routledge, 2006. * Pascal, Georges, ''Pour connaître la pensée de Kant'', Bordas, 1996. * Vuillemin, Jules, ''L'Héritage kantien et la révolution copernicienne'', PUF, 1954. * Vuillemin, Jules, ''Physique et métaphysique kantiennes'', PUF, 1955. === Philosophie morale, sciences cognitives, perspectives complémentaires === * Chomsky, Noam, ''Règles et représentations'', 1980, trad. A. Kihm, Flammarion, 1985. * Korsgaard, Christine, ''Creating the Kingdom of Ends'', Cambridge UP, 1996. * Lorenz, Konrad, « Kants Lehre vom Apriorischen im Lichte gegenwärtiger Biologie », ''Blätter für deutsche Philosophie'', vol. 15, 1941, p. 94-125. * Spelke, Elizabeth S. et Kinzler, Katherine D., « Core Knowledge », ''Developmental Science'', vol. 10, n° 1, 2007, p. 89-96. * Jackson, Frank, ''From Metaphysics to Ethics'', Oxford UP, 1998. {{IndexPhilo}} {{DEFAULTSORT:A priori}} {{AutoCat}} bevbem8m2txzqnnbm6sct2orsv64kj5 Discussion Wikilivres:Le Bistro/2026 5 83406 772205 771721 2026-09-14T15:31:10Z MediaWiki message delivery 36013 /* Tech News: 2026-38 */ nouvelle section 772205 wikitext text/x-wiki == Actualités techniques n° 2026-03 == <section begin="technews-2026-W03"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/03|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * La Fondation Wikimedia a publié des questions directrices pour son plan annuel de juillet 2026 à juin 2027 sur les plateformes [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2026-2027/Product & Technology OKRs|Meta]] et ''[[diffblog:2025/12/10/shaping-wikimedia-foundations-2026-2027-annual-goals-key-questions-for-the-wikimedia-movement/|Diff]]''. Celles-ci portent sur les tendances mondiales, une expérimentation plus rapide et plus constructive, un meilleur accompagnement des nouveaux contributeurs, le renforcement du rôle des éditeurs et des utilisateurs avancés, l'amélioration de la collaboration entre les projets, ainsi que le développement et la fidélisation du lectorat. Des commentaires et suggestions sont les bienvenus sur la [[m:Talk:Wikimedia Foundation Annual Plan/2026-2027|page de discussion]]. '''Actualités pour la contribution''' * Dans le cadre des travaux en cours de l'équipe technique communautaire sur le projet [[m:Special:MyLanguage/Community Wishlist/W372|Listes de surveillance multiples]], l'affichage de [[Special:EditWatchlist|Modifier la liste de surveillance]] sera mis à jour entant que qu'une première étape vers la prise en charge de plusieurs listes de surveillance. De plus, la pagination de [[Special:Search|Recherche]] sera également mise à jour, dans le cadre du travail sur le souhait [[m:Special:MyLanguage/Community Wishlist/W186|Refonte de la pagination / navigation des pages]]. [https://phabricator.wikimedia.org/T411596] * [[m:Special:GlobalWatchlist|La Liste de Surveillance Globale]] est une [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] de MediaWiki qui vous permet de voir vos listes de surveillance provenant de différents wikis sur la même page. Il a récemment été mis à jour pour ressembler davantage à la [[Special:Watchlist|Liste de surveillance]] régulière, par exemple en le préparant pour les comptes temporaires dans le masquage IP (y compris le réacheminement des liens des utilisateurs vers les pages de contributions), en mettant les titres de page en gras et en ouvrant les liens dans les résumés d'édition et les balises dans de nouveaux onglets du navigateur. [https://phabricator.wikimedia.org/T398361][https://phabricator.wikimedia.org/T298919][https://phabricator.wikimedia.org/T273526][https://phabricator.wikimedia.org/T286309] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:28|la tâche soumise|les {{formatnum:28}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:28||s}} la semaine dernière]]. Par exemple, le problème selon lequel les blocs globaux ne disposaient pas de l'option permettant de désactiver l'envoi d'e-mails a maintenant été résolu et sera disponible à l'utilisation à partir de la semaine du 13 janvier. [https://phabricator.wikimedia.org/T401293] '''Actualités pour la contribution technique''' * L'[[mw:Special:MyLanguage/VisualEditor/Citation tool|outil de citation VisualEditor]] et les [[mw:Special:MyLanguage/Help:Reference Previews|Aperçus de référence]] prennent désormais en charge "carte" comme type de référence. [https://phabricator.wikimedia.org/T411083] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.10|MediaWiki]]/[[mw:MediaWiki 1.46/wmf.11|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/03|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W03"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 12 janvier 2026 à 20:33 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29907192 --> == Thank You for Last Year – Join Wiki Loves Ramadan 2026 == Dear Wikimedia communities, We hope you are doing well, and we wish you a happy New Year. ''Last year, we captured light. This year, we’ll capture legacy.'' In 2025, communities around the world shared the glow of Ramadan nights and the warmth of collective iftars. In 2026, ''Wiki Loves Ramadan'' is expanding, bringing more stories, more cultures, and deeper global connections across Wikimedia projects. We invite you to explore the ''Wiki Loves Ramadan 2026'' [[m:Special:MyLanguage/Wiki Loves Ramadan 2026|Meta page]] to learn how you can participate and [[m:Special:MyLanguage/Wiki Loves Ramadan 2026/Participating communities|sign up]] your community. 📷 ''Photo campaign on '' [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan 2026|Wikimedia Commons]] If you have questions about the project, please refer to the FAQs: * [[m:Special:MyLanguage/Wiki Loves Ramadan/FAQ/|Meta-Wiki]] * [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan/FAQ|Wikimedia Commons]] ''Early registration for updates is now open via the '''[[m:Special:RegisterForEvent/2710|Event page]]''''' ''Stay connected and receive updates:'' * [https://t.me/WikiLovesRamadan Telegram channel] * [https://lists.wikimedia.org/postorius/lists/wikilovesramadan.lists.wikimedia.org/ Mailing list] We look forward to collaborating with you and your community. '''The Wiki Loves Ramadan 2026 Organizing Team''' 16 janvier 2026 à 20:44 (CET) <!-- Message envoyé par User:ZI Jony@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29879549 --> == <span lang="en" dir="ltr">Tech News: 2026-04</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W04"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/04|Translations]] are available. '''Updates for editors''' * The tray shown on [[Special:Diff|Special:Diff]] in mobile view has been redesigned. It is now collapsed by default, and incorporates a link to undo the edit being viewed, making it easier for mobile editors and reviewers to take action while keeping the interface uncluttered. [https://phabricator.wikimedia.org/T402297] * [[m:Special:GlobalWatchlist|The Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] continues to improve — it now automatically determines the text direction (ensuring correct display of sites with unusual domain names) and shows detailed descriptions for log actions. Later this week, a new permanent link for page creations and CSS classes for each entry element will be added. [https://phabricator.wikimedia.org/T412505][https://phabricator.wikimedia.org/T287929][https://phabricator.wikimedia.org/T262768][https://phabricator.wikimedia.org/T414135] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:32}} community-submitted {{PLURAL:32|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the previously observed issue in Vector 2022, where anchor link targets were obscured by the sticky header, has now been addressed. [https://phabricator.wikimedia.org/T406114] '''Updates for technical contributors''' * As mentioned in the [[m:Special:MyLanguage/Tech/News/2025/44|October 2025 deprecation announcement]], MediaWiki Interfaces team will begin sunsetting all transform endpoints containing a trailing slash from the MediaWiki REST API the week of January 26. Changes are expected to roll out to all wikis on or before January 30th. All API users currently calling them are encouraged to transition to the non-trailing slash versions. Both endpoint variations can be found, compared, and tested using the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox]. If you have questions or encounter any problems, please file a ticket in Phabricator to the [https://phabricator.wikimedia.org/project/view/6931/ #MW-Interfaces-Team board]. * Interactive reference documentation for the [[mw:Special:MyLanguage/Wikimedia REST API|Wikimedia REST API]] has moved. Requests to API docs previously hosted through [[mw:Special:MyLanguage/RESTBase|RESTBase]] (e.g.: <code dir=ltr>https://en.wikipedia.org/api/rest_v1/</code>) are now redirected to the [[w:en:Special:RestSandbox|REST Sandbox]]. * The [[mw:Special:MyLanguage/Wikidata Platform|WMF Wikidata Platform team]] (WDP) has published its [[d:Special:MyLanguage/Wikidata:Wikidata Platform team/Newsletter|January 2026 newsletter]]. It includes updates on the legacy full-graph endpoint decommissioning, the User-Agent policy change, the monthly Blazegraph migration office hours, and efforts to reduce regressions caused by the legacy endpoint shutdown. As a reminder, you can [[m:Special:MyLanguage/Global message delivery/Targets/WDP team updates|subscribe to the WDP newsletter]]! * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.12|MediaWiki]] '''Meetings and events''' * The [[mw:Wikimedia Hackathon Northwestern Europe 2026|Wikimedia Hackathon Northwestern Europe 2026]] will take place on 13-14 March 2026 in Arnhem, the Netherlands. Applications opened mid-December and will close soon or when capacity is reached. It's a two-day, technically oriented hackathon bringing together Wikimedians from the region. Hope to see you there! '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/04|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W04"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19 janvier 2026 à 21:29 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29943403 --> == Révision annuelle du code universel de conduite et des lignes directrices de l'application == <section begin="announcement-content" /> Nous vous informons que la période de relecture annuelle du Code de conduite universel et des règles d'applications est actuellement ouverte. Vous pouvez faire vos commentaires sur les modifications que vous souhaitez apporter jusqu'au 9 février 2026. C'est la première d'une série d'étapes nécessaires pour la révision annuelle. Vous trouverez [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|d'autres informations et les discussions auxquelles participer sur la page UCoC de Meta]]. Le [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Comité de coordination du code universel de conduite]] (U4C &mdash; Universal Code of Conduct Coordinating Committee) est un groupe global dont le rôle est de fournir une implémentation équitable et cohérente de l'UCoC. Cette relecture annuelle a été envisagée et mise en place par l'U4C. Pour plus d'informations et les responsabilités de l'U4C, veuillez lire la [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|Charte de l'U4C]]. Veuillez partager ces informations avec les autres membres concernés de votre communauté. -- En coopération avec l'U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|discussion]])<section end="announcement-content" /> 19 janvier 2026 à 22:01 (CET) <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29905753 --> == Actualités techniques n° 2026-05 == <section begin="technews-2026-W05"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/05|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * La Fondation Wikimedia invite à donner des commentaires sur [[m:Special:MyLanguage/Product and Technology Advisory Council/Year1 Reflections and Proposed Way Forward 2026 Update|l’avenir proposé]] du [[:m:Special:MyLanguage/Product and Technology Advisory Council|Conseil consultatif des produits et technologies]] jusqu’au 28 février. * Tous les utilisateurs disposant d'un compte enregistré peuvent désormais utiliser des clés d'accès pour la [[m:Special:MyLanguage/Help:Two-factor authentication|double authentification]] (2FA). Les clés d'accès sont un moyen simple de se connecter sans utiliser un second appareil. Elles vérifient l'identité de l'utilisateur à l'aide d'une empreinte digitale, d'une reconnaissance faciale ou d'un code PIN. Pour configurer une clé d'accès, configurez d'abord une méthode 2FA classique. Actuellement, pour se connecter avec une clé d'accès, les utilisateurs doivent également utiliser un mot de passe. Plus tard ce trimestre, la connexion sans mot de passe permettra aux utilisateurs de se connecter d'un simple clic avec une clé d'accès. Les utilisateurs disposant de droits avancés devront également avoir la 2FA activée. Cela fait partie du projet [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Sécurité du compte]]. * Les contributeurs non enregistrés sur des IP bloquées ou des plages d'IP bloquées peuvent désormais interagir sur le wiki pour faire appel d'un blocage en créant un compte temporaire afin de contester un blocage sur la page de discussion de l'utilisateur, sauf si l'option « empêcher cet utilisateur de modifier sa propre page de discussion » est activée. Cela résout le problème des utilisateurs déconnectés incapables d'utiliser le processus de déblocage par défaut via la page de discussion de l'utilisateur. [https://phabricator.wikimedia.org/T398673] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:20|la tâche soumise|les {{formatnum:20}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:20||s}} la semaine dernière]]. Par exemple, la description des méthodes d'authentification à deux facteurs (2FA) sur la page de gestion a été mise à jour. Il est désormais plus clair et plus facile pour les utilisateurs à comprendre et à utiliser. [https://phabricator.wikimedia.org/T332385] '''Actualités pour la contribution technique''' * Une nouvelle variable AbuseFilter, <code>account_type</code>, a été ajoutée pour fournir un moyen fiable de déterminer le type de compte créé dans les actions <code>createaccount</code> et <code>autocreateaccount</code>. Dans le cadre de ce changement, la variable <code>accountname</code> a été renommée en <code>account_name</code>, et <code>accountname</code> est désormais obsolète. Les gestionnaires de filtres doivent mettre à jour tous les filtres qui utilisent des vérifications de type de compte codées en dur ou la variable obsolète. [https://phabricator.wikimedia.org/T414049] * Les vignettes d'images demandées dans des tailles non standard, et en utilisant des méthodes non standard telles que les requêtes directes à <code dir=ltr><nowiki>upload.wikimedia.org/…</nowiki></code>, cesseront de fonctionner dans un proche avenir. Ce changement vise à prévenir les abus externes continus par des robots et des aspirateurs web. Certains utilisateurs ayant des CSS/JS personnalisés, les administrateurs d'interface qui peuvent corriger les gadgets et les thèmes locaux, ainsi que les auteurs d'outils, devront mettre à jour leur code pour utiliser des tailles de vignettes standard. [[phab:T414805|Des détails, des liens de recherche et des exemples de correction sont disponibles dans la tâche]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.13|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/05|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W05"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 26 janvier 2026 à 22:17 (CET) <!-- Message envoyé par User:UOzurumba (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29969530 --> == <span lang="en" dir="ltr">Tech News: 2026-06</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W06"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/06|Translations]] are available. '''Updates for editors''' * The "{{int:pageinfo-toolboxlink}}" feature, which gives validating information about a page ([{{fullurl:{{FULLPAGENAME}}|action=info}} example]), now automatically includes a table of contents. If there is a local [[{{ns:8}}:Pageinfo-header]] page created by individual users, it can now be removed. [https://phabricator.wikimedia.org/T363726] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:21}} community-submitted {{PLURAL:21|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, VisualEditor previously added bold or italic formatting inside link descriptions, making the wikicode complex. This has now been fixed. [https://phabricator.wikimedia.org/T409669] '''Updates for technical contributors''' * There was no XML dump on 20 January. Additionally, from now on, dumps will be generated once per month only. [https://phabricator.wikimedia.org/T414389] * The MediaWiki Interfaces team removed support for all transform endpoints containing a trailing slash from the [https://www.mediawiki.org/wiki/Special:MyLanguage/API:REST%20API MediaWiki REST API]. All API users currently calling those endpoints are encouraged to transition to the non-trailing slash versions. If you have questions or encounter any problems, please file a ticket in phabricator to the [https://phabricator.wikimedia.org/project/view/6931/ #MW-Interfaces-Team board]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.14|MediaWiki]] '''Weekly highlight''' * Users are reminded that the Wikimedia Foundation has shared some guiding questions for the July 2026–June 2027 Annual Plan on [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2026-2027/Product & Technology OKRs|Meta]] and ''[[diffblog:2025/12/10/shaping-wikimedia-foundations-2026-2027-annual-goals-key-questions-for-the-wikimedia-movement/|Diff]]''. These focus on global trends, faster and healthier experimentation, better support for newcomers, strengthening editors and advanced users, improving collaboration across projects, and growing and retaining readership. Feedback and ideas are welcome on the [[m:Talk:Wikimedia Foundation Annual Plan/2026-2027|talk page]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/06|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W06"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 2 février 2026 à 18:43 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30000986 --> == Actualités techniques n° 2026-07 == <section begin="technews-2026-W07"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/07|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Concerne un souhait]] Les contributeurs connectés qui gèrent de grandes ou complexes listes de suivi peuvent désormais organiser et filtrer les pages surveillées de manière à améliorer leurs flux de travail grâce à la nouvelle fonctionnalité [[mw:Special:MyLanguage/Help:Watchlist labels|Étiquettes de liste de suivi]]. En ajoutant des étiquettes personnalisées (par exemple : pages que vous avez créées, pages surveillées pour vandalisme, ou pages de discussion), les utilisateurs peuvent identifier plus rapidement ce qui nécessite une attention, réduire la charge cognitive et répondre plus efficacement. Cela améliore l'utilisabilité de la liste de suivi, en particulier pour les éditeurs très actifs. * Une nouvelle fonctionnalité disponible sur [[Special:Contributions|Special:Contributions]] montre [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts|des comptes temporaires]] qui sont probablement utilisés par la même personne, et rend ainsi le patrouillage moins chronophage. En vérifiant les contributions d'un compte temporaire, les utilisateurs ayant accès aux adresses IP des comptes temporaires peuvent désormais avoir une vue des contributions des comptes temporaires associés. La fonctionnalité recherche toutes les adresses IP associées à un compte temporaire donné pendant la période de conservation des données et affiche toutes les contributions de tous les comptes temporaires ayant utilisé ces adresses IP. [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts#February 2026: Improvements to the patroller tooling|Plus...]] [https://phabricator.wikimedia.org/T415674] * Lorsque les éditeurs prévisualisent une modification de wikitexte, la boîte de rappel indiquant qu'ils ne voient qu'une prévisualisation (qui est affichée en haut) a désormais un fond gris/neutre au lieu d'un fond jaune/d'avertissement. Cela facilite la distinction entre les notes de prévisualisation et les avertissements réels (par exemple, les conflits de modification ou les cibles de redirection problématiques), qui seront désormais affichés dans des boîtes d'avertissement ou d'erreur séparées. [https://phabricator.wikimedia.org/T414742] * La [[m:Special:GlobalWatchlist|Liste de suivi globale]] vous permet de consulter vos listes de suivi provenant de plusieurs wikis sur une seule page. L' [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] continue de s'améliorer — elle prend désormais en charge correctement plus d'un site Wikibase, par exemple à la fois [[d:|Wikidata]] et [[testwikidata:|testwikidata]]. De plus, des problèmes concernant la direction du texte ont été résolus pour les utilisateurs qui préfèrent Wikidata ou d'autres sites Wikibase dans des langues de droite à gauche (RTL). [https://phabricator.wikimedia.org/T415440][https://phabricator.wikimedia.org/T415458] * <span lang="en" dir="ltr" class="mw-content-ltr">The automatic "magic links" for ISBN, RFC, and PMID numbers have been [[mw:Special:MyLanguage/Help:Magic links|deprecated in wikitext since 2021]] due to inflexibility and difficulties with localization. Several wikis have successfully replaced RFC and PMID magic links with equivalent external links, but a template was often required to replace the functionality of the ISBN magic link. There is now a new [[mw:Special:MyLanguage/Help:Magic words#isbn|built-in parser function]] <code dir=ltr><nowiki>{{#isbn}}</nowiki></code> available to replace the basic functionality of the ISBN magic link. This makes it easier for wikis who wish to migrate off of the deprecated magic link functionality to do so.</span> [https://phabricator.wikimedia.org/T145604] * Deux nouveaux wikis ont été créés : ** un {{int:project-localized-name-group-wikipedia}} dans [[d:Q35401|Jju]] ([[w:kaj:|<code>w:kaj:</code>]]) [https://phabricator.wikimedia.org/T413283] ** un {{int:project-localized-name-group-wikipedia}} dans [[d:Q1186896|Nawat]] ([[w:ppl:|<code>w:ppl:</code>]]) [https://phabricator.wikimedia.org/T413273] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:23|la tâche soumise|les {{formatnum:23}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:23||s}} la semaine dernière]]. '''Actualités pour la contribution technique''' * Un nouveau groupe d'utilisateurs global a été créé : [[{{int:grouppage-local-bot}}|{{int:group-local-bot}}]]. Il sera utilisé en interne par le logiciel pour permettre aux robots communautaires de contourner les limites de débit appliquées aux [[w:en:Web_scraping|web scrapers]] abusifs. Les comptes approuvés en tant que robots sur au moins un wiki Wikimedia seront automatiquement ajoutés à ce groupe. Cela ne changera pas les autorisations dont dispose le robot. [https://phabricator.wikimedia.org/T415588] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.15|MediaWiki]] '''Rencontres et évènements''' * La [[mw:Special:MyLanguage/MediaWiki Users and Developers Conference Spring 2026|Conférence des utilisateurs et des développeurs de MediaWiki, Printemps 2026]] se tiendra du 25 au 27 mars à Salt Lake City, États-Unis. Cet événement est organisé par et pour la communauté MediaWiki de tiers. Vous pouvez proposer des sessions et vous inscrire pour y assister. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/AZBWVI46SDEB65PGR5J6E4TYOQQEZXM7/] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/07|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W07"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 10 février 2026 à 00:30 (CET) <!-- Message envoyé par User:Quiddity (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30026671 --> == Actualités techniques n° 2026-08 == <section begin="technews-2026-W08"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/08|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * <span class="mw-translate-fuzzy">L'[[mw:Special:MyLanguage/Wikimedia Site Reliability Engineering|équipe SRE]] va procéder au nettoyage d'[[m:Special:MyLanguage/Etherpad|Etherpad]], l'éditeur web open source de documents collaboratifs en temps réel. Tous les blocs-notes seront définitivement supprimés après le 30 avril 2026 – si des projets de migration sont encore en cours à cette date, l'équipe pourra réexaminer la date au cas par cas. Veuillez effectuer des sauvegardes locales de tout contenu que vous souhaitez conserver, car les données supprimées ne pourront pas être récupérées. Ce nettoyage permet de réduire la taille de la base de données et l'empreinte de l'infrastructure. Etherpad continuera de prendre en charge la collaboration en temps réel, mais le stockage à long terme n'est plus assuré. D'autres nettoyages pourront avoir lieu ultérieurement sans préavis.</span> [https://phabricator.wikimedia.org/T415237] '''Actualités pour la contribution''' * L'équipe de Recherche d'Informations lancera une [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|expérimentation sur l'application mobile Android]], afin de tester des fonctionnalités de recherche hybrides capables de gérer à la fois les requêtes sémantiques et par mots-clés. L'amélioration de la recherche sur la plateforme permettra aux lecteurs de trouver plus facilement ce qu'ils cherchent, directement sur Wikipédia. L'expérimentation sera d'abord lancée sur Wikipédia en grec fin février, puis sur les versions anglaise, française et portugaise en mars. [https://diff.wikimedia.org/2026/01/08/semantic-search-making-it-easier-to-find-the-information-readers-want/ En savoir plus] sur le blog ''Diff''. [https://www.mediawiki.org/wiki/Readers/Information_Retrieval] * L'équipe « Croissance des lecteurs » mènera [[mw:Special:MyLanguage/Readers/Reader Growth/WE3.10.2 Mobile Table of Contents|une expérience]] auprès des utilisateurs de la version mobile du site web qui ajoute une table des matières et développe automatiquement toutes les sections des articles, afin de mieux comprendre les problèmes de navigation qu'ils rencontrent. Le test sera disponible sur les versions arabe, chinoise, anglaise, française, indonésienne et vietnamienne de Wikipedia. * Auparavant, les notifications ([[{{ns:8}}:Sitenotice]] et [[{{ns:8}}:Anonnotice]]) du site ne s'affichaient que sur la version ordinateur. Maintenant, elles s'afficheront désormais sur toutes les plateformes. Les utilisateurs mobiles verront ces notifications. Les administrateurs du site doivent être prêts à tester et à corriger les notifications sur les appareils mobiles afin d'éviter toute interférence avec les articles. Pour désactiver ces notifications, les administrateurs d'interface peuvent ajouter <code dir="ltr">#siteNotice { display: none; }</code> à [[{{ns:8}}:Minerva.css]]. [https://phabricator.wikimedia.org/T138572][https://phabricator.wikimedia.org/T416644] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:19|la tâche soumise|les {{formatnum:19}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:19||s}} la semaine dernière]]. Par exemple, un problème concernant la section ''[[Special:RecentChanges|Spécial:Modifications récentes]]'' a été résolu. Auparavant, cliquer sur « Masquer » dans les filtres actifs entraînait la disparition du bouton « Afficher les nouvelles modifications depuis… », alors qu'il aurait dû rester visible. Ce bouton fonctionne désormais correctement. [https://phabricator.wikimedia.org/T406339] '''Actualités pour la contribution technique''' * Une nouvelle documentation est désormais disponible pour aider les rédacteurs à déboguer les fonctionnalités de recherche interne. Elle facilite le dépannage lorsque des pages n'apparaissent pas dans les résultats, lorsque le classement semble inattendu et lorsqu'il est nécessaire d'inspecter le contenu indexé, ce qui permet de mieux comprendre et d'analyser le comportement de la recherche. [[mw:Help:CirrusSearch/Debug|En savoir plus]]. [https://phabricator.wikimedia.org/T411169] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.16|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/08|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W08"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16 février 2026 à 20:17 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30086330 --> == <span lang="en" dir="ltr">Tech News: 2026-09</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W09"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/09|Translations]] are available. '''Weekly highlight''' * [[mw:Special:MyLanguage/Edit check/Reference Check|Reference Check]] has been deployed to English Wikipedia, completing its rollout across all Wikipedias. The feature prompts newcomers to add a citation before publishing new content, helping reduce common citation-related reverts and improve verifiability. In A/B testing, the impact was substantial: newcomers shown Reference Check were approximately 2.2 times more likely to include a reference on desktop and about 17.5 times more likely on mobile web. [https://analytics.wikimedia.org/published/reports/editing/reference_check_ab_test_report_final_2025.html] '''Updates for editors''' * The [[mw:Special:MyLanguage/Extension:InterwikiSorting|InterwikiSorting extension]], which allowed for the [[m:Special:MyLanguage/Interwiki sorting order|sorting of interwiki links]], has been undeployed from Wikipedia. As a result, editors who had enabled interwiki link sorting in non-compact mode (full list format) will now see links reordered. The links moving forward will be listed in the alphabetical order of language code. [https://phabricator.wikimedia.org/T253764] * Later this week, people who are editing a page-section using the mobile visual editor, will notice a new "Edit full page" button. When tapped, you will be able to edit the entire article. This helps when the change you want to make is outside the section you initially opened. [https://phabricator.wikimedia.org/T387175][https://phabricator.wikimedia.org/T409112] * [[mw:Special:MyLanguage/Readers/Reader Experience|The Reader Experience team]] is inviting editors to assess whether dark mode should still be considered "beta" on their wiki, based on their experience of how well it functions on desktop and mobile. If the feature is deemed mature, editors can update the interface messages in <code dir=ltr>MediaWiki:skin-theme-description</code> and <code dir=ltr>MediaWiki:Vector-night-mode-beta-tag</code> to indicate that dark mode is ready and no longer considered beta. * The improved [[mw:Wikimedia_Apps/Team/iOS/Activity_Tab|Activity tab]] which displays user-insights is now available to all users of the Wikipedia iOS app (version 7.9.0 and later). Following earlier A/B testing that showed higher account creation among users with access to the feature, it has been rolled out to 100% of users along with some updates. The Activity tab now shows your edited articles in the timeline, offers editing impact insights like contribution counts and article view trends, and customization options to improve in-app experience for users. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:21}} community-submitted {{PLURAL:21|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug that prevented [[mw:Special:MyLanguage/Extension:DiscussionTools|DiscussionTools]] from working on mobile has now been fixed, restoring full functionality. [https://phabricator.wikimedia.org/T415303] '''Updates for technical contributors''' * The [[m:Special:GlobalWatchlist|Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] that makes this possible continues to improve. The latest upgrade is the inclusion of a [[mw:Extension:GlobalWatchlist#hook|new hook]], <code dir=ltr>ext.globalwatchlist.rebuild</code>, which fires after each watchlist rebuild. This allows you to run gadgets and user scripts for the Special page. [https://phabricator.wikimedia.org/T275159] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.17|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/09|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W09"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23 février 2026 à 20:03 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30119102 --> == Actualités techniques n° 2026-10 == <section begin="technews-2026-W10"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/10|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Le [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments|mode Anniversaire]] Wikipedia 25 est maintenant disponible sur Wikipédia en français, anglais, betawi, breton, chinois, espagnol, gorontalo, indonésien, italien, luxembourgeois, madurais, néerlandais, sicilien, tchèque, thaï et vietnamien ! Cette campagne à temps limitée célèbre 25 ans de Wikipédia avec une mascotte : « Baby Globe », disponible sous la forme d'un réglage. Lorsque ce réglage est activé, Baby Globe est montrée sur [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments/article configuration|environ 2 500 articles]], attendant d'être découverte par des lecteurs. Chaque communauté peut choisir d'activer le mode Anniversaire par consensus et en demandant à un administrateur de le rendre disponible et de le personaliser via une [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments#Community Configuration Demo|configuration]] sur le wiki local. '''Actualités pour la contribution''' * Le [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|sous-référencement]], une nouvelle fonctionalité pour réutiliser des références avec des détails différents est maintenant disponible sur Wikipédia en suédois, polonais et [[:phab:T418209|quelques autres]]. Vous pouvez [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|essayer la fonctionalité]] sur ces projets ou sur testwiki et [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing betawiki]. Les retours des premiers essais sur Wikipédia en allemand ont été [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing/Learnings|publiés dans un rapport]]. Contactez l'équipe de Wikimédia Allemagne si vous êtes [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|intéressés pour devenir un wiki pilote]]. * La [[mw:Special:MyLanguage/Help:Edit check#Paste check|vérification du collage clavier]] sera disponible sur tous les Wikipédias cette semaine. Cette fonctionalité avertit les nouveaux contributeurs qui collent du texte qu'ils n'ont probablement pas écrit de vérifier si laisser celui-ci risque de causer une violation du droit d'auteur. La vérification du collage clavier [[mw:Special:MyLanguage/Edit check/Tags|marque]] toutes les modifications où l'avertissement a été montré pour permettre leur vérification. Les administrateurs locaux peuvent configurer les différents aspects de cette fonctionalité à travers [[{{#special:EditChecks}}]]. Des [[mw:Special:MyLanguage/Edit check/Paste Check#A/B Experiment|études]] sur 22 wikis ont montré que cette vérification permet une réduction de 18% des annulations comparé au groupe de contrôle. Les traducteurs peuvent [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-visualeditor-ve-mw-editcheck&filter=&optional=1&action=translate aider à traduire] cette fonctionalité. * <span lang="en" dir="ltr" class="mw-content-ltr">The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] will be standardizing the user menu in the top right for all mobile users so that it is closer to the desktop experience. Currently this user menu is only visible to users with Advanced Mobile Controls (AMC) turned on. The only change is that a couple buttons previously in the left-side menu will move to the top right for users who do not have AMC turned on. This change is expected to go out March 9 and seeks to improve the user interface.</span> [https://phabricator.wikimedia.org/T413912] * À partir de la semaine du 2 mars, les emails envoyés lorsqu'une adresse email a été ajoutée, supprimée ou changée pour un compte changera pour adopter un formattage HTML beaucoup plus agréable et plus clair que le texte brut précédent. [https://phabricator.wikimedia.org/T410807] * Les notifications sont actuellement limitées à 2 000 entrées historiques par utilisateur et remontent à 2013 lorsque la fonctionnalité a été publiée. Le système va être modifié pour ne stocker que les notifications des 5 dernières années, mais jusqu'à 10 000 d'entre elles. Cela contribuera à la santé à long terme des infrastructures et à empêcher que les notifications plus récentes disparaissent trop tôt. [https://phabricator.wikimedia.org/T383948] * <span lang="en" dir="ltr" class="mw-content-ltr">The [[m:Special:GlobalWatchlist|Global Watchlist]] which lets you view your watchlists from multiple wikis on a single page continues to see improvements. The latest update improves label usage experience. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] now allows activating the [[mw:Special:MyLanguage/Manual:Language#Fallback languages|language fallback system]] for Wikidata items without labels in the viewed language, and showing those labels in the user’s preferred Wikidata language if no <code dir=ltr>uselang=</code> URL parameter is provided.</span> [https://phabricator.wikimedia.org/T373686][https://phabricator.wikimedia.org/T416111] * L'équipe Wikipédia Android a commencé un test beta de la [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|recherche hybride]] sur Wikipédia en grec. Cette recherche hybride supporte les requêtes sémantique et par mot clés, permettant aux utilisateurs de trouver ce qu'ils cherchent plus facilement. * Pour des raisons de sécurité, les membres de certains groupes sont [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|forcés d'avoir la double authentification]] (A2F) d'activée. Actuellement, l'A2F n'est nécessaire que pour utiliser les droits du groupe, et non pour en faire partie. Vu que ce système admet certaines failles, il sera [[phab:T418580|changé graduellement en mars]]. Les membres de ces groupes ne pourront plus désactiver la dernière méthose d'A2F sur leur compte, et il sera impossible d'ajouter des utilisateurs sans A2F à ces groupes. Il sera toujours possible de rajouter d'autres méthodes d'authentification et d'en enlever, tant qu'une est toujours activée. Dans la seconde moitié de mars, les utilisateurs sans A2F seront retirés de ces groupes. Cela s'applique aux administrateurs CentralNotice, aux vérificateurs d'utilisateurs, aux administrateurs d'interface, aux masqueurs, aux staff de Wikidata et Wikifonctions ainsi qu'aux bureaux IT et Confiance et sécurité de la WMF. Rien ne changera pour les autres utilisateurs. Voir la tâche liée pour le calendrier de déploiement. [https://phabricator.wikimedia.org/T418580] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:27|la tâche soumise|les {{formatnum:27}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:27||s}} la semaine dernière]]. Par exemple, le problème empêchant les utilisateurs de créer une instance dans [https://www.wikibase.cloud/ Wikibase.cloud] a maintenant été résolu. [https://phabricator.wikimedia.org/T416807] '''Actualités pour la contribution technique''' * <span lang="en" dir="ltr" class="mw-content-ltr">To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], over the next month the Wikimedia Foundation will implement global API rate limits across our APIs. In early March, stricter limits will be applied to unidentified requests from outside Toolforge/WMCS and API requests that are made from web browsers. In April, higher limits will be applied to identified traffic. These limits are intentionally set as high as possible to minimise impact on the community. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].</span> * <span lang="en" dir="ltr" class="mw-content-ltr">The Wikidata Query Service Linked Data Fragment (LDF) endpoint will be decommissioned in February. This endpoint served limited traffic, which was successfully migrated to other data access methods that were better suited to support existing use cases. The hardware used to support the LDF endpoint will be reallocated to support the ongoing backend migration efforts.</span> [https://phabricator.wikimedia.org/T415696] * Le nouvel analyseur syntaxique Parsoid [[mw:Special:MyLanguage/Parsoid/Parser Unification/Updates|continue d'être déployés sur plus de wikis]], améliorant la pérennité de la platforme et rendant plus facile l'ajout de nouvelles fonctionalités de lecture et de modification. Parsoid est maintenant l'analyseur par défaut sur 488 wikis de la WMF (268 Wikipédias), couvrant plus de 10% de toutes les lectures de pages Wikipédia. * Le processus et les critères pour [[Special:MyLanguage/Wikimedia Enterprise#Access|demander un accès exceptionnel]] au flux à fort volume de l'API ''Wikimédia Entreprise'' (sans coût pour des utilisations en rapport à notre mission) [[m:Talk:Wikimedia Enterprise#Exceptional access criteria|ont maintenant été publiés]]. Notre but est de donner une documentation plus claire et plus complète aux utilisateurs. * [https://techblog.wikimedia.org/ Le blog Tech], dédié à la communité technique de Wikimédia [https://techblog.wikimedia.org/2026/02/24/a-tech-blog-diff/ va migrer] vers [[diffblog:|Diff]], le blog pour les nouvelles et événements de la communauté. La migration devrait être terminée en Avril 2026, après quoi les nouveaux posts seront acceptés pour être publiés. Les lecteurs pourront lire les posts - anciens ou nouveaux - sur https://diff.wikimedia.org/. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.18|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/10|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W10"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 2 mars 2026 à 18:51 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30137798 --> == <span lang="en" dir="ltr">Tech News: 2026-11</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W11"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/11|Translations]] are available. '''Weekly highlight''' * [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies. * Last week, all wikis had 2 hours of read-only time, and extended unavailability for user-scripts and gadgets. This was due to a security incident which has since been resolved. Work is ongoing to prevent re-occurrences. For current information please see the [[m:Steward's noticeboard#Statement on Meta about today's user script security incident|post on the Stewards' noticeboard]] ([[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Product Safety and Integrity/March 2026 User Script Incident|translations]]). '''Updates for editors''' * Users facing multiple blocks on mobile will now see the reasons for each block separately, instead of a generic message. This helps them understand why they are blocked and what steps they can take to resolve the issue. For example, users affected for using common VPNs (such as [[Special:MyLanguage/Apple iCloud Private Relay|iCloud Private Relay]]) will receive clearer guidance on what they need to do to start editing again. [https://phabricator.wikimedia.org/T357118] * Later this week, [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] will become available as a beta feature within the visual editor at all Wikipedias. This feature proactively suggests various types of actions that people can consider taking to improve Wikipedia articles, and learn about related guidelines. The feature is locally configurable, and can also be locally expanded with custom Suggestions. Current settings can be seen at [[Special:EditChecks]] and there are [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators %E2%80%93 local customization|instructions for how administrators can customize]] the links to point to local guidelines. The feature is connected to [[mw:Special:MyLanguage/Help:Edit check|Edit check]] which suggests improvements while someone is writing new content. In the future, the Editing team plans to evaluate the feature's impact with newcomers through a controlled experiment. [https://phabricator.wikimedia.org/T404600] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where the cursor became misaligned during the use of CodeMirror’s syntax highlighting, which makes wikitext and code easier to read, has now been fixed. This problem specifically affected users who defined a font rule in a custom stylesheet while creating a new topic with DiscussionTools. [https://phabricator.wikimedia.org/T418793] '''Updates for technical contributors''' * API rate limiting update: To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], global API rate limits will be applied this week to requests without a compliant User-Agent that originate from outside Toolforge/WMCS and to unauthenticated requests made from web browsers. Higher limits will be applied to identified traffic in April. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]]. * The new GraphQL API has been released. The API was developed as a flexible alternative to select features of the Wikidata Query Service (WDQS), to improve developer experience and foster adaptability, and efficient data access. Try it out and [[d:Wikidata:Wikibase GraphQL#Feedback and development|give feedback]]. You can also [https://greatquestion.co/wikimediadeutschland/GraphQLAPI/apply sign up for usability tests]. * The [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|PTAC Unsupported Tools Working Group]] continued improvements to [[commons:Special:MyLanguage/Commons:Video2commons#|Video2Commons]] in February, with fixes addressing authentication errors, large-file handling, task queue visibility, and clearer upload behavior. Work is still ongoing in some areas, including changes related to deprecated server-side uploads. Read [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group#February 2026|this update]] to learn more. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.19|MediaWiki]] '''In depth''' * The Article Guidance team invites experienced Wikipedia editors from selected [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators#Collaborators|pilot wikis]] and interested contributors from other Wikipedias to fill out this questionnaire which is available in [https://docs.google.com/forms/d/e/1FAIpQLSfmLeVWnxmsCbPoI_UF2jyRcn73WRGWCVPHzerXb4Cz97X_Ag/viewform English], [https://docs.google.com/forms/d/e/1FAIpQLSd6rzr4XXQw8r4024fE3geTPFe13M_6w7Mitj-YJi0sOlWTAw/viewform?usp=header Arabic], [https://docs.google.com/forms/d/e/1FAIpQLSdok3-RfB18lcugYTUMGkpwmqG_8p760Wv4dCXitOXOszjUDw/viewform?usp=header Bengali], [https://docs.google.com/forms/d/e/1FAIpQLSfjTfYp4jEo0akA4B1e-Nfg3QZPCudUjhJzHzzDi6AHyAaMGA/viewform?usp=header Japanese], [https://docs.google.com/forms/d/e/1FAIpQLScteVoI29Aue4xc72dekk-6RYtvmMgQxzMI900UOawrFrSTWg/viewform?usp=header Portuguese], [https://docs.google.com/forms/d/e/1FAIpQLSetdxnYwL3ub2vqA7awCg5hJZPMIYcDPaiTe12rY9h0GYnVlw/viewform?usp=header Persian], and [https://docs.google.com/forms/d/e/1FAIpQLScNvfJF-Ot-4pzA4qAN771_0QDJ4Li19YcUsaTgSKW8Nc7U_Q/viewform?usp=header Turkish]. Your answers will help the team customize guidance for less experienced editors and help them learn community policies and practices while creating an article. Learn more [[mw:Special:MyLanguage/Article guidance|on the project page]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/11|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W11"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 9 mars 2026 à 19:52 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30213008 --> == <span lang="en" dir="ltr">Tech News: 2026-12</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W12"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/12|Translations]] are available. '''Updates for editors''' * The [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature, also known as [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], has been used for wikitext syntax highlighting since November 2024. It will be promoted out of beta by May 2026 in order to bring improvements and new [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Features|features]] to all editors who use the standard syntax highlighter. If you have any questions or concerns about promoting the feature out of beta, [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|please share]]. [https://phabricator.wikimedia.org/T259059] * Some changes to local user groups are performed by stewards on Meta-Wiki and logged there only. Now, interwiki rights changes will be logged both on Meta-Wiki and the wiki of the target user to make it easier to access a full record of user's rights changes on a local wiki. Past log entries for such changes will be backfilled in the coming weeks. [https://phabricator.wikimedia.org/T6055] * On wikis using [[m:Special:MyLanguage/Flagged Revisions|Flagged Revisions]], the number of pending changes shown on [[{{#Special:PendingChanges}}]] previously counted pages which were no longer pending review, because they have been removed from the system without being reviewed, e.g. due to being deleted, moved to a different namespace, or due to wiki configuration changes. The count will be correct now. On some wikis the number shown will be much smaller than before. There should be no change to the list of pages itself. [https://phabricator.wikimedia.org/T413016] * Wikifunctions composition language has been rewritten, resulting in a new version of the language. This change aims to increase service stability by reducing the orchestrator's memory consumption. This rewrite also enables substantial latency reduction, code simplification, and better abstractions, which will open the door to later feature additions. Read more about [[f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-11|the changes]]. * Users can now sort search results alphabetically by page title. The update gives an additional option to finding pages more easily and quickly. Previously, results could be sorted by Edit date, Creation date, or Relevance. To use the new option, open 'Advanced Search' on the search results page and select 'Alphabetically' under 'Sorting Order'. [https://phabricator.wikimedia.org/T403775] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:28}} community-submitted {{PLURAL:28|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented UploadWizard on Wikimedia Commons from importing files from Flickr has now been fixed. [https://phabricator.wikimedia.org/T419263] '''Updates for technical contributors''' * A new special page, [[{{#special:LintTemplateErrors}}]], has been created to list transcluded pages that are flagged as containing lint errors to help users discover them easily. The list is sorted by the number of transclusions with errors. For example: [[{{#special:LintTemplateErrors}}/night-mode-unaware-background-color]]. [https://phabricator.wikimedia.org/T170874] * Users of the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature have been using [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] for syntax highlighting when editing JavaScript, CSS, JSON, Vue and Lua content pages, for some time now. Along with promoting CodeMirror 6 out of beta, the plan is to replace CodeEditor as the standard editor for these content models by May 2026. [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|Feedback or concerns are welcome]]. [https://phabricator.wikimedia.org/T419332] * The [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] JavaScript modules will soon be upgraded to CodeMirror 6. Leading up to the upgrade, loading the <code dir=ltr>ext.CodeMirror</code> or <code dir=ltr>ext.CodeMirror.lib</code> modules from gadgets and user scripts was deprecated in July 2025. The use of the <code dir=ltr>ext.CodeMirror.switch</code> hook was also deprecated in March 2025. Contributors can now make their scripts or gadgets compatible with CodeMirror 6. See the [[mw:Special:MyLanguage/Extension:CodeMirror#Gadgets and user scripts|migration guide]] for more information. [https://phabricator.wikimedia.org/T373720] * The MediaWiki Interfaces team is expanding coverage of REST API module definitions to include [[mw:Special:MyLanguage/API:REST API/Extensions|extension APIs]]. REST API modules are groups of related endpoints that can be independently managed and versioned. Modules now exist for [https://phabricator.wikimedia.org/T414470 GrowthExperiments] and [https://phabricator.wikimedia.org/T419053 Wikifunctions] APIs. As we migrate extension APIs to this structure, documentation will move out of the main MediaWiki OpenAPI spec and REST Sandbox view, and will instead be accessible via module-specific options in the dropdown on the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox] (i.e., [[{{#Special:RestSandbox}}]], available on all wiki projects). * The [[mw:Special:MyLanguage/Extension:Scribunto|Scribunto]] extension provides different pieces of information about the wiki where the module is being used via the [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual|mw.site]] library. Starting last week, the library also provides a [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.site.wikiId|way]] of accessing the [[mw:Special:MyLanguage/Manual:Wiki ID|wiki ID]] that can be used to facilitate cross-wiki module maintenance. [https://phabricator.wikimedia.org/T146616] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.20|MediaWiki]] '''In depth''' * The [[m:Special:MyLanguage/Coolest Tool Award|2026 Coolest Tool Award]] celebrating outstanding community tools, is now open for nominations! Nominate your favorite tool using the [https://wikimediafoundation.limesurvey.net/435684?lang=en nomination survey] form by 23 March 2026. For more information on privacy and data handling, please see the [[foundation:Special:MyLanguage/Legal:Coolest_Tool_Award_2026_Survey_Privacy_Statement|survey privacy statement]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/12|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W12"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16 mars 2026 à 20:35 (CET) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30260505 --> == <span lang="en" dir="ltr">Upcoming deployment of CampaignEvents extension to Wikibooks</span> == <div lang="en" dir="ltr"> <section begin="message"/> Hello everyone, We are writing to inform you that the [[mw:Help:Extension:CampaignEvents|CampaignEvents extension]] will be deployed to all Wikibooks projects during the week of '''23 March 2026'''. This follows last year’s broader rollout across Wikimedia projects. We realized that Wikibooks was not included at the time, and we’re now addressing that to ensure consistency across all communities. The CampaignEvents extension provides tools to support event and campaign organization on-wiki, including features like on-wiki event registration and collaboration lists(global event list). We welcome any questions, feedback, or concerns you may have. We are also happy to support anyone interested in trying out the tools. ''Apologies if this message is not in your preferred language. If you’re able to help translate it for your community, please feel free to do so.'' <section end="message"/> </div> <bdi lang="en" dir="ltr">[[User:Udehb-WMF|Udehb-WMF]] ([[User talk:Udehb-WMF|discussion]]) 19 mars 2026 à 19:22 (CET)</bdi> <!-- Message envoyé par User:Udehb-WMF@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Udehb-WMF/sandbox/MM_target&oldid=30284073 --> == <span lang="en" dir="ltr">Tech News: 2026-13</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W13"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/13|Translations]] are available. '''Weekly highlight''' * Wikimedia site users can now log in without a password using passkeys. This is a secure method supported by fingerprint, facial recognition, or PIN. With this change, all users who opt for passwordless login will find it easier, faster, and more secure to log in to their accounts using any device. The new passkey login option currently appears as an autofill suggestion in the username field. An additional [[phab:T417120|"Log in with passkey" button]] will soon be available for users who have already registered a passkey. This update will improve security and user experience. The [[c:File:Passwordless_login_screencast.webm|screen recording]] demonstrates the passwordless login process step by step. * [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies. '''Updates for editors''' * Wikimedia site users can now export their notifications older than 5 years using a [[toolforge:echo-chamber|new Toolforge tool]]. This will ensure that users retain their important notifications and avoid them being lost based on the planned change to delete notifications older than 5 years, as previously announced. [https://phabricator.wikimedia.org/T383948] * Wikipedia editors in Indonesian, Thai, Turkish, and Simple English now have access to Special:PersonalDashboard. This is an [[mw:Special:MyLanguage/Moderator Tools/Dashboard|early version of an experience]] that introduces newer editors to patrolling workflows, making it easier for them to move from making edits to participating in more advanced moderation work on their project. [https://phabricator.wikimedia.org/T402647] * The [[Special:Block]] now has two minor interface changes. Administrators can now easily perform indefinite blocks through a dedicated radio button in the expiry section. Also, choosing an indefinite expiry provides a different set of common reasons to select from, which can be changed at: [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823] * Mobile editors [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|at several wikis]] can now see an improved logged-out edit warning, thanks to the recent updates from the Growth team. These changes released last week are part of ongoing efforts and tests to enhance [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|account creation experience on mobile]] and then increase participation. [https://phabricator.wikimedia.org/T408484] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:36}} community-submitted {{PLURAL:36|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented mobile web users from seeing the block information when affected by multiple blocks has been fixed. They can now see messages of all the blocks currently affecting them when they access Wikipedia. '''Updates for technical contributors''' * Images built using Toolforge will soon get the upgraded buildpacks version, bringing support for newer language versions and other upstream improvements and fixes. If you use Toolforge Build Service, review the recent [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ cloud-announce email] and update your build configuration as necessary to ensure your tools are compatible. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127] * The [https://api.wikimedia.org/wiki/Main_Page API Portal] documentation wiki will shut down in June 2026. API keys created on the API Portal will continue to work normally. api.wikimedia.org endpoints will be deprecated gradually starting in July 2026. Documentation on the API Portal is moving to [[mw:Wikimedia APIs|mediawiki.org]]. Learn more on the [[wikitech:API Portal/Deprecation|project page]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]] '''In depth''' * [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] is considering improvements to [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|automatically generated reference names in VisualEditor]]. Please check out the [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|proposed solutions]] and participate in the [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|request for comment]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/13|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W13"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23 mars 2026 à 17:51 (CET) <!-- Message envoyé par User:UOzurumba (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305 --> == Actualités techniques n° 2026-14 == <section begin="technews-2026-W14"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/14|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Le version Beta de [[abstract:|Abstract Wikipedia]], un nouveau projet Wikimédia indépendant du langage, a été lancée la semaine dernière. Ce projet permet aux communautés de construire des articles Wikipédia dans leur langue natale, qui peuvent directement être lus par les autres utilisateurs et utilisatrices dans leur propre langage. Le wiki fonctionne grâce à des instructions de Wikifunctions et au contenu structuré issu de Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|En savoir plus]]. '''Actualités pour la contribution''' * L'équipe Croissance mène un test A/B afin d'évaluer l'effet d'un message plus clair et plus convivial encourageant à la création de comptes sur les wikis. Actuellement, lorsqu'un utilisateur mobile non connecté lance la modification, un message d'avertissement s'affiche, pouvant paraître abrupt et décourageant. Il présente également la modification par compte temporaire comme option par défaut, au lieu d'inciter à la création d'un compte. Le test est mené sur dix Wikipédia, dont les versions en arabe, français, espagnol et allemand. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|En savoir plus]]. * L'équipe des applications Wikimédia sollicite vos commentaires sur [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|comment devrait fonctionner l'édition dans les applications mobiles Wikipédia]]. La discussion porte sur l'amélioration de l'accès aux outils d'édition lorsque les utilisateurs appuient sur « Modifier ». Cette initiative s'inscrit dans un effort plus large visant à offrir aux lecteurs intéressés par la contribution une expérience utilisateur plus intuitive. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:45|la tâche soumise|les {{formatnum:45}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:45||s}} la semaine dernière]]. Par exemple, un problème avec la récupération de citations à partir du site d'archive de journaux [https://www.newspapers.com Newspapers.com], qui ne fonctionnait plus en raison d'un blocage des requêtes [[mw:Special:MyLanguage/Citoid|Citoid]], a maintenant été résolu. [https://phabricator.wikimedia.org/T419903] '''Actualités pour la contribution technique''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.22|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/14|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W14"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 30 mars 2026 à 21:25 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462 --> == Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226) == Hello everyone, This is a notice regarding an ongoing data migration on Wikidata that may affect your election-related templates and Lua modules (such as <code>Module:Itemgroup/list</code>). '''The Change:'''<br /> Currently, many templates pull electoral maps from Wikidata using the property [[:d:Property:P1846|P1846]], combined with the qualifier [[:d:Property:P180|P180]]: [[:d:Q19571328|Q19571328]]. We are migrating this data (across roughly 4,000 items) to a newly created, dedicated property: '''[[:d:Property:P14226|P14226]]'''. '''What You Need To Do:'''<br /> To ensure your templates and infoboxes do not break or lose their maps, please update your local code to fetch data from [[:d:Property:P14226|P14226]] instead of the old [[:d:Property:P1846|P1846]] + [[:d:Property:P180|P180]] structure. A [[m:Wikidata/Property Migration: P1846 to P14226/List|list of pages]] was generated using Wikimedia Global Search. '''Deadline:'''<br /> We are temporarily retaining the old data on [[:d:Property:P1846|P1846]] to allow for a smooth transition. However, to complete the data cleanup on Wikidata, the old [[:d:Property:P1846|P1846]] statements will be removed after '''May 1, 2026'''. Please update your modules and templates before this date to prevent any disruption to your wiki's election articles. Let us know if you have any questions or need assistance with the query logic. Thank you for your help! [[User:ZI Jony|ZI Jony]] using [[Utilisateur:MediaWiki message delivery|MediaWiki message delivery]] ([[Discussion utilisateur:MediaWiki message delivery|discussion]]) 3 avril 2026 à 19:11 (CEST) <!-- Message envoyé par User:ZI Jony@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29941252 --> == Actualités techniques n° 2026-15 == <section begin="technews-2026-W15"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/15|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * L’[[mw:Special:MyLanguage/Help:Extension:CampaignEvents|extension CampaignEvents]] comprend désormais une nouvelle fonctionnalité de définition d’objectifs de groupe, permettant aux organisateurs de définir et de suivre les objectifs de l’événement, tels que le nombre d’articles créés et de contributeurs participants en temps réel. De même, les participants peuvent travailler vers des cibles communes et voir leur impact collectif au fur et à mesure que l’événement se déroule. Cette fonctionnalité est désormais disponible sur tous les wikis Wikimedia. Pour en savoir plus, consultez [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Collaborative contributions#Goal setting|la documentation]]. * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Concerne un souhait]] La nouvelle fonctionnalité d'[[mw:Special:MyLanguage/Help:Watchlist labels|étiquettes de liste de suivi]] (annoncée dans les [[m:Special:MyLanguage/Tech/News/2026/07|Actualités techniques 2026-07 ]]) est désormais disponible via l'ÉditeurVisuel, l'éditeur de code et l'«étoile de suivi»(ou le lien de suivi, pour les habillages qui n'ont pas d'icône d'étoile). Auparavant, il n'était possible d'attribuer des étiquettes que via [[Special:EditWatchlist|Modifier la liste de suivi]]. Dans ces trois emplacements, il s'agit d'un nouveau champ situé après le champ d'expiration. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:23|la tâche soumise|les {{formatnum:23}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:23||s}} la semaine dernière]]. Par exemple, le problème où les pages de discussion sur mobile avec Parsoid sont inutilisables après les en-têtes de section vides, a maintenant été résolu. [https://phabricator.wikimedia.org/T419171] '''Actualités pour la contribution technique''' * La [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|fonctionnalité de sous-référencement]], qui permet aux contributeurs d'ajouter des détails à une référence existante sans la dupliquer, sera progressivement déployée sur [[phab:T414094|davantage de wikis]] plus tard cette année. Les wikis utilisant le gadget [[mw:Special:MyLanguage/Reference Tooltips|Reference Tooltips]] sont encouragés à mettre à jour leur version (généralement sur [[m:MediaWiki:Gadget-ReferenceTooltips.js|MediaWiki:Gadget-ReferenceTooltips.js]] comme indiqué [https://en.wikipedia.org/w/index.php?diff=1344408362 ici]) pour assurer la compatibilité. D'autres gadgets liés aux références pourraient également être affectés. [https://phabricator.wikimedia.org/T416304] * Toutes les éditions de Wikinews seront fermées et passeront en mode lecture seule le 4 mai 2026. Le contenu restera accessible, mais aucune nouvelle modification ni aucun nouvel article ne pourra être ajouté. Cette fermeture a été approuvée par le Conseil d'administration de la Fondation Wikimedia à la suite de discussions prolongées. [[m:Wikimedia Foundation Board noticeboard#Board of Trustees Approves Closure of Wikinews|En savoir plus]]. * L'[[:mw:Special:MyLanguage/API:Action API|API d'action]] a proposé plusieurs formats pour les résultats demandés. L'un d'entre eux, <bdi lang="zxx" dir="ltr"><code><nowiki>format=php</nowiki></code></bdi>, sera bientôt supprimé. Veuillez vous assurer que vos scripts ou robots utilisent le [[mw:Special:MyLanguage/API:Data formats#Output|format JSON]]. Cette suppression devrait affecter très peu de scripts et de robots. [https://phabricator.wikimedia.org/T118538] * La page [[Special:NamespaceInfo|Special:NamespaceInfo]] inclut désormais les alias d'espace de noms. Par exemple «WP» pour l'espace de noms ''Projet'' (''Wikipédia'') sur la Wikipédia en allemand. [https://phabricator.wikimedia.org/T381455] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.23|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/15|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W15"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 6 avril 2026 à 18:19 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30362761 --> == <span lang="en" dir="ltr">Tech News: 2026-16</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W16"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/16|Translations]] are available. '''Weekly highlight''' * Experienced editors are invited to [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Main_Page test] the [[mw:Special:MyLanguage/Article guidance|Article guidance]] feature, designed to help less-experienced editors create well-structured, policy-compliant Wikipedia articles. Testing instructions are [[mw:Special:MyLanguage/Article guidance/Test feature guide|available]]. Also, after reviewing [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance the outlines], please provide feedback on the [[mw:Talk:Article guidance|project talk page]]. Based on your input, the feature will be refined and transferred to the pilot Wikipedias to translate and adapt. Check out [[c:File:Article Guidance workflow demo - April 2026.webm|the video]] explaining the feature. '''Updates for editors''' * On most wikis, all autoconfirmed users can now use [[Special:ChangeContentModel|Special:ChangeContentModel]] page to [[mw:Special:MyLanguage/Help:ChangeContentModel|create new pages with custom content models]], such as mass message lists, making custom page formats more accessible. Check [[Special:ListGroupRights|Special:ListGroupRights]] for the status of your wiki. [https://phabricator.wikimedia.org/T248294] * The Growth team has launched an [[mw:Special:MyLanguage/Contributors/Account_Creation_Experiments|account creation experiment]] to evaluate whether adding an account creation button to the mobile web header increases new account registrations and encourages more mobile users to contribute to the wikis. The experiment is currently live on Hindi, Indonesian, Bengali, Thai, and Hebrew Wikipedia, and targets 10% of logged-out mobile web users. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:30}} community-submitted {{PLURAL:30|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where VisualEditor could get stuck loading on Windows devices with animations turned off, has now been fixed. [https://phabricator.wikimedia.org/T382856] '''Updates for technical contributors''' * Starting later this week, {{int:group-abusefilter}} who have the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature enabled will have [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] as the editor at [[Special:AbuseFilter|Special:AbuseFilter]]. This is part of the broader effort to make the user experience more consistent across all editors. [https://phabricator.wikimedia.org/T399673][https://phabricator.wikimedia.org/T419332] * Tools and bots that access the [[mw:Special:MyLanguage/Notifications/API|Notifications API]] (<bdi lang="zxx" dir="ltr"><code><nowiki>action=query&meta=notifications</nowiki></code></bdi>) will need to update their OAuth or BotPassword grants to also include access to private notifications. [https://phabricator.wikimedia.org/T421991] * Due to a library upgrade, listings on category pages may be displayed out of order starting on Monday, 20th April. A migration script will be run to correct this, and will take hours to days depending on the size of the wiki (up to a week for English Wikipedia). [https://phabricator.wikimedia.org/T422544] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.24|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/16|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W16"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 13 avril 2026 à 17:19 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30380527 --> == Actualités techniques n° 2026-17 == <section begin="technews-2026-W17"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/17|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Après deux ans de développement, la version [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]], également connue sous le nom de [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], sortira de sa phase bêta le mardi 21 avril. Elle offrira une meilleure lisibilité du code et du wikitext, une réduction des fautes de frappe et d'autres [[mw:Special:MyLanguage/Help:Extension:CodeMirror|avantages]] à tous les utilisateurs du surligneur de syntaxe standard. Un grand merci au bénévole [https://phabricator.wikimedia.org/p/Bhsd/ Bhsd] qui a développé de nombreuses nouvelles fonctionnalités, notamment [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Code folding|le repliement de code]], [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Autocompletion|la saisie semi-automatique]] et [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|l'analyse statique du code]]. [https://phabricator.wikimedia.org/T259059] * Une mise à jour majeure de l'application Wikipédia pour iOS est en cours de déploiement, en restructurant l'interface pour s'harmoniser avec le tout nouveau design visuel "Liquid Glass" d'Apple. [https://apps.apple.com/us/app/wikipedia/id324715238 Télécharger la dernière version] et découvrez les nouveautés. '''Actualités pour la contribution''' * [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|Les listes de lecture]] est une fonctionnalité qui permet aux lecteurs d'enregistrer des articles dans une liste pour les lire ultérieurement. Cette fonctionnalité est actuellement en version bêta sur les Wikipédias en arabe, français, indonésien, vietnamien et chinois, et activée par défaut pour tous les nouveaux comptes sur toutes les Wikipédias. * Une expérimentation visant à étendre [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|les aperçus de page au web mobile]] sera lancée la semaine du 20 avril sur les versions arabe, anglaise, française, italienne, polonaise et vietnamienne de Wikipédia. Les aperçus de page sont des fenêtres contextuelles affichant une miniature, un premier paragraphe et un lien bleu permettant d'ouvrir l'article complet, facilitant ainsi la découverte de contenu. Cette fonctionnalité est déjà disponible sur ordinateur et dans les applications. [[m:Special:MyLanguage/List of experiments in Product and Technology#Template|En savoir plus sur cette expérimentation et d'autres]]. * Sur plusieurs wikis, les contributeurs connectés qui n'ont pas [[mw:Special:MyLanguage/Help:Email confirmation|confirmé leur adresse électronique]] peuvent désormais voir une bannière les invitant à le faire. La confirmation de l'adresse électronique permet à un utilisateur de récupérer l'accès à son compte en cas de perte. [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security#Encouraging users to confirm their email addresses|En savoir plus]]. [https://phabricator.wikimedia.org/T421366] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:15|la tâche soumise|les {{formatnum:15}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:15||s}} la semaine dernière]]. Par exemple, un problème qui entraînait des ralentissements lors de la modification de très grandes pages wiki dans l'éditeur wikitext de 2017, des problèmes de chargement, de prévisualisation et de défilement, ainsi que des problèmes de performance lors de la sélection, de la découpe ou du collage de contenu, a maintenant été résolu. [https://phabricator.wikimedia.org/T184857] '''Actualités pour la contribution technique''' * Dans le cadre de la promotion de [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror]] à partir d'une fonctionnalité bêta, tous les utilisateurs se serviront de [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] au lieu de [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] pour la coloration syntaxique lors de l'édition de pages de contenu JavaScript, CSS, JSON, Vue et Lua. [https://phabricator.wikimedia.org/T419332] * <span class="mw-translate-fuzzy">Le service <code>mirrors.wikimedia.org</code> pour les utilisateurs de Debian et Ubuntu sera définitivement arrêté le 15 mai. Le matériel du serveur sera remplacé par des solutions plus performantes. Certains utilisateurs devront peut-être migrer vers un autre serveur qui ne devra prendre qu'une minute. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/LJYRIS4WB66HIRCAO4GIDTXCMDVZRBMA/ Vous pouvez en savoir plus].</span> [https://phabricator.wikimedia.org/T416707] * Les tables <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi> seront supprimées de [[wikitech:Help:Wiki Replicas|wikireplicas]]. Si vos outils ou requêtes accèdent directement à <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> ou <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi>, veuillez les mettre à jour pour utiliser les tables <bdi lang="zxx" dir="ltr"><code><nowiki>file</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>filerevision</nowiki></code></bdi> avant le 28 mai. [https://phabricator.wikimedia.org/T28741] * Suite à la récente mise en place de limites de débit globales pour les API non identifiées, la Fondation Wikimedia poursuit ses efforts pour garantir [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|une utilisation équitable de l'infrastructure]] en appliquant des limites globales au trafic des API identifiées à partir de la dernière semaine d'avril. Ces limites sont volontairement fixées au niveau le plus élevé possible afin de minimiser l'impact sur la communauté. Les bots exécutés dans Toolforge/WMCS ou disposant des droits d'utilisateur de bot sur un wiki ne devraient pas être affectés pour le moment. Toutefois, il est conseillé à tous les développeurs de suivre les bonnes pratiques mises à jour. Pour plus d'informations, consultez la page [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|API Wikimedia/Limites de débit]] et la [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits/FAQ|Foire aux questions]]. * L'[[mw:Special:MyLanguage/Attribution API|API d'attribution]] est désormais disponible en [[mw:Special:MyLanguage/Wikimedia APIs/Stability policy|version bêta]]. Elle récupère les informations nécessaires pour créditer les articles et les fichiers multimédias de Wikimedia, quel que soit leur lieu d'utilisation. La documentation de référence est disponible sur la page dédiée au Sandbox REST, accessible sur tous les wikis Wikimedia (comme [https://en.wikipedia.org/w/index.php?api=attribution.v0-beta&title=Special%3ARestSandbox le sandbox REST de Wikipédia en anglais]). N'hésitez pas à partager vos commentaires sur la [[mw:Talk:Attribution API|page de discussion du projet]]. * Il n'y aura pas de nouvelle version de MediaWiki cette semaine. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/17|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W17"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20 avril 2026 à 17:00 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30432763 --> == Request for comment (global AI policy) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies for writing in English. {{int:Please-translate}} A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}} [[Utilisateur:MediaWiki message delivery|MediaWiki message delivery]] ([[Discussion utilisateur:MediaWiki message delivery|discussion]]) 26 avril 2026 à 02:57 (CEST) </bdi> <!-- Message envoyé par User:Codename Noreste@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 --> == Actualités techniques n° 2026-18 == <section begin="technews-2026-W18"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/18|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * Un changement dans la manière dont les utilisateurs et utilisatrices sont automatiquement confirmés est en cours pour améliorer la protection contre le vandalisme. Actuellement, il suffit d’avoir un compte depuis quelques jours avec quelques contributions pour être ajouté au groupe [[{{int:grouppage-autoconfirmed/{{CONTENTLANGUAGE}}}}|{{int:group-autoconfirmed}}]]. Cette configuration tend à être exploitée par certains vandales qui créent des comptes et commencent à les utiliser après un certain temps. Pour réduire ce problème, la configuration va changer la semaine prochaine afin que l’âge du compte minimum pour être confirmé automatiquement ne soit calculé qu’à partir de la première modification, au lieu de la date d’inscription. L’âge minimum du compte restera le même, c’est seulement le point de départ pour calculer cet âge qui change. Ce changement ne sera déployé que sur les wikis qui nécessitent au moins une contribution pour satisfaire les conditions de confirmation automatique. [https://phabricator.wikimedia.org/T418484] * Tous les utilisateurs et utilisatrices de Wikipédia avec un nouveau compte et ceux qui ont activé l’option « activer automatiquement la plupart des fonctionnalités bêta » peuvent désormais utiliser la fonctionnalité bêta de [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|listes de lecture]] pour enregistrer des articles à lire plus tard. Cela permet d’organiser les lectures qui nous intéressent à un endroit unique pour y accéder facilement. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:30|la tâche soumise|les {{formatnum:30}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:30||s}} la semaine dernière]]. Par exemple, le problème avec les images d’infoboite qui avaient une marge intérieure immense dans Firefox a été corrigé. [https://phabricator.wikimedia.org/T423676] '''Actualités pour la contribution technique''' * Pour rappel, la limite globale d’accès à l’API sera appliquée cette semaine pour identifier le trafic de l’API. Le but est d’aider à garantir un [[mw:MediaWiki Product Insights/Responsible Reuse|accès équitable à l’infrastructure]]. Les robots qui s’exécutent dans Toolforge ou WMCS, ou avec le droit utilisateur ''robot'' sur les wikis, ne devraient pas être affectés pour le moment. Cependant, il est conseillé à tous les développeurs et développeuses de se conformer aux nouvelles bonnes pratiques à suivre. Pour plus d’informations, notamment la limite globale d’accès effective, consultez [[mw:Wikimedia APIs/Rate limits|la page sur la limite d’accès des API de Wikimedia]] et les [[mw:Wikimedia APIs/Rate limits/FAQ|questions-réponses]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.26|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/18|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W18"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 27 avril 2026 à 20:06 (CEST) <!-- Message envoyé par User:UOzurumba (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30458046 --> == Actualités techniques n° 2026-19 == <section begin="technews-2026-W19"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/19|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * L’équipe chargée des fonctionnalités de [[mw:Special:MyLanguage/Article guidance|Guidage des articles]] invite les contributeurs et contributrices expérimentés des [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators|Wikipédia pilotes]] (arabe, bangla, japonais, portugais, persan, turc, anglais simplifié, espagnol et français) à contribuer à la traduction et à l’adaptation des [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance exemples de trames d’articles]. Ces trames guideront les contributeurs dans la création d’articles clairs, bien structurés et conformes aux règles lors de l’utilisation de [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Special:NewArticle la fonctionnalité] dès son lancement en mai 2026. Des [[mw:Special:MyLanguage/Article guidance#Adapting a sample outline in a Wikipedia|instructions simples]] expliquant comment traduire et adapter ces trames sont disponibles. '''Actualités pour la contribution''' * Le [[:m:Special:MyLanguage/Product and Technology Advisory Council|Conseil consultatif sur les produits et les technologies]] a publié [[:m:Special:MyLanguage/Product and Technology Advisory Council/May 2026 draft PTAC recommendation for feedback|une proposition de recommandation]] d’une procédure type que les organisations affiliées à Wikimedia pourraient suivre pour contribuer au domaine technique. Les membres de la communauté sont invités à donner leur avis sur cette recommandation avant le 8 mai [[:m:Talk:Product and Technology Advisory Council/May 2026 draft PTAC recommendation for feedback|sur la page de discussion]]. * Le nombre de préférences de taille de la miniature disponibles dans MediaWiki va être réduit à trois options standardisées : ''petite'' (180 px), ''moyenne'' (250 px) et ''large'' (400 px), dans le cadre du travail en cours pour améliorer les performances et réduire la pression sur les services de miniatures. Par conséquent, les préférences existantes seront automatiquement adaptées à la nouvelle taille la plus proche (par exemple, les petites tailles comme 120 px ou 150 px s’afficheront à 180 px, tandis que les grandes tailles comme 300 px ou 360 px s’afficheront à 400 px). L’interface des préférences sera bientôt mise à jour pour refléter ces changements, et les utilisateurs qui souhaitent s’y opposer ou donner leur avis peuvent le faire. [https://phabricator.wikimedia.org/T424909] * Dorénavant, même lorsqu’une permission expire automatiquement, les utilisateurs recevront une notification Echo similaire à la notification normale pour les changements de permissions. Quant au [[m:Special:MyLanguage/Global reminder bot|robot global de rappel]], il continue de prévenir les utilisateurs une semaine ''avant'' que leurs droits ne soient sur le point d’expirer, afin qu’ils puissent les faire renouveler. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:32|la tâche soumise|les {{formatnum:32}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:32||s}} la semaine dernière]]. Par exemple, le problème du sélecteur de langue ULS dans [[m:Special:Translate|Special:Translate]] qui faisait défiler verticalement alors qu’il ne devait pas, a été résolu. Auparavant, lorsque les utilisateurs ouvraient le menu déroulant « Traduire en français » et commençaient à saisir le nom d’une langue, la boîte de dialogue défilait verticalement de quelques pixels même lorsqu'il y avait suffisamment d’espace pour afficher tous les résultats. Le menu déroulant ne se déplace plus inutilement lors du filtrage des langues. [https://phabricator.wikimedia.org/T358864] * La [[m:Special:GlobalWatchlist|liste de suivi globale]], qui vous permet de consulter vos listes de suivi provenant de plusieurs wikis sur une seule page, continue de s’améliorer. Par exemple, les listes de suivi pour les sites avec Wikibase tels que [[:d:|Wikidata]] prennent désormais en charge les éléments [[mw:Special:MyLanguage/Extension:EntitySchema|EntitySchema]] pour un meilleur suivi. Le mode Mises à jour en direct actualise désormais la page spéciale toutes les 60 secondes afin de se conformer aux [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|nouvelles limites globales d’accès à l’API]] pour une meilleure réactivité en temps réel. Par ailleurs, un bug de directionnalité du texte qui affichait les liens comme « changements 3 » au lieu de « 3 changements » dans les listes à directions mixtes a été corrigé. [https://phabricator.wikimedia.org/T415450][https://phabricator.wikimedia.org/T424422][https://phabricator.wikimedia.org/T418091] '''Actualités pour la contribution technique''' * La deuxième phase de [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|limitations globales d’accès à l’API]] a été déployée pour réduire l’[[diffblog:2026/03/26/quo-vadis-crawlers-progress-and-whats-next-on-safeguarding-our-infrastructure/|impact des robots IA]] et assurer un accès équitable et durable aux ressources de Wikimedia, en donnant la priorité au trafic humain et conforme à notre mission. Les [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits#Limits|limites]] ne s’appliquent plus par heure mais par minute, produisant une meilleure répartition dans les structures de trafic ainsi qu’une meilleure prévisibilité de la charge de l’API. Les utilisateurs de la communauté ne devraient pas être affectés, et aucune action n’est requise. Les premières indications montrent que certains requérants basés sur l'agent utilisateur ajustent leur comportement, et environ 64 % du trafic API automatisé a été identifié. La surveillance continue, et Wikimedia Enterprise reste disponible pour l’assistance commerciale. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.46/wmf.27|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/19|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W19"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 4 mai 2026 à 22:43 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30498077 --> == Actualités techniques n° 2026-20 == <section begin="technews-2026-W20"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/20|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * La Communauté Technique a publié [[m:Special:MyLanguage/Community Wishlist/How to write a good wish|de nouvelles directives]] expliquant comment les souhaits sur la Liste de souhaits de la communauté sont triés et priorisés. La documentation vise à aider les contributeurs à rédiger des propositions plus solides en clarifiant les facteurs qui influencent les décisions de priorisation. Au-delà du nombre de votes, les directives mettent en avant des considérations telles que l'impact potentiel sur la communauté pour déterminer quels souhaits avanceront. '''Actualités pour la contribution''' * L'équipe de croissance des lecteurs lance une expérience pour tester une nouvelle [[mw:Special:MyLanguage/Readers/Reader_Growth/Share_Card|fonctionnalité de Partage de Carte]] qui permet aux lecteurs de créer des cartes visuellement attrayantes à partir d'articles Wikipédia ou de sections d'articles sélectionnées et de les partager en ligne, chaque carte renvoyant à l'article original afin d'aider à augmenter le lectorat et la découverte des articles. Le test A/B réservé aux mobiles ne sera disponible qu'à une partie des lecteurs sur les Wikipédia en arabe, chinois, français, vietnamien et anglais afin de mieux comprendre les habitudes de lecture et de partage, et est prévu pour commencer la semaine du 18 mai pour une durée de quatre semaines. * Les applications Wikipedia pour Android et iOS ont récemment publié en version bêta le [[mw:Special:MyLanguage/Wikimedia_Apps/Team/25th_Birthday_Reading_Challenge|défi de lecture de 25 jours]], dans le cadre des efforts visant à stimuler l'engagement des lecteurs en encourageant les utilisateurs à atteindre des objectifs de lecture. Pour suivre leur série de lectures pendant le défi, les utilisateurs de l'application peuvent ajouter un widget avec Baby Globe à leur écran d'accueil. Le défi commence officiellement le 11 mai. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:17|la tâche soumise|les {{formatnum:17}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:17||s}} la semaine dernière]]. Par exemple, un problème où la préférence globale pour activer la coloration syntaxique dans le wikitexte pouvait s'éteindre de manière inattendue après avoir été activée a maintenant été corrigé. [https://phabricator.wikimedia.org/T425286] '''Actualités pour la contribution technique''' * [[File:Octicons-tools.svg|12px|link=|alt=|Sujet technique]] Le module ResourceLoader <bdi lang="zxx" dir="ltr"><code><nowiki>mediawiki.ui.input</nowiki></code></bdi>, obsolète depuis [[m:Special:MyLanguage/Tech/News/2023/39|septembre 2023]], sera supprimé cette semaine. Il existe un [[mw:Special:MyLanguage/Codex/Migrating_from_MediaWiki_UI|guide pour migrer de l’interface MediaWiki UI vers Codex]] pour tous les outils qui l’utilisent. [https://phabricator.wikimedia.org/T420125] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.2|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/20|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W20"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 11 mai 2026 à 21:20 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30524429 --> == Actualités techniques n° 2026-21 == <section begin="technews-2026-W21"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/21|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * L'équipe de Wikipédia abstraite a identifié cinq wikis pilotes potentiels pour évaluer leur intérêt à adopter des articles abstraits sur leurs wikis. Les pilotes sont Wikipédia en Malayalam, en Bengali, en Dagbani, en Arabe et en Indonésien. La période de retour d'information sera ouverte jusqu'au 22 mai. Si votre communauté est intéressée à devenir un pilote, [[m:Talk:Abstract Wikipedia|faites-nous savoir sur Meta]]. '''Actualités pour la contribution''' * Une expérience visant à afficher [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|les listes de lecture]] aux lecteurs non connectés sur le web mobile sera lancée le 18 mai sur les Wikipédias Allemande, Espagnole, Italienne, Portugaise, Polonaise, Néerlandaise, Turque et Ourdou, et durera un mois. Cet effort soutient des objectifs plus larges consistant à aider les lecteurs à enregistrer et organiser des articles pour une lecture ultérieure, tout en encourageant des habitudes qui pourraient mener à de futures contributions sur Wikipédia. * Pour prendre en charge un bouton de marquage dans la fonctionnalité bêta Liste de lecture, le menu "Outils > Action" a été mis à jour pour afficher des icônes, y compris l'indicateur en forme d'étoile de suivi qui aide les éditeurs à identifier les articles suivis temporairement. Les icônes correspondent désormais également à celles utilisées sur mobile, améliorant la cohérence entre les plateformes. Le changement est actuellement limité au menu des actions et concerne principalement les éditeurs ayant des droits d'utilisateur privilégié. [https://phabricator.wikimedia.org/T426008] * [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Mode de Suggestion]] a été publié en tant qu'[[w:en:A/B test|test A/B]] pour les nouveaux éditeurs sur le site mobile à [[phab:T421189|~15 Wikipédias]]. L'expérience mesurera l'impact que le Mode de Suggestion a sur la proportion de sessions d'édition sur le web mobile par des nouveaux éditeurs qui aboutissent à des modifications constructives (non annulées) des articles. L'expérience évaluera également l'impact de la fonctionnalité sur la rétention des éditeurs et surveillera les changements dans les taux d'annulation et de blocage. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:27|la tâche soumise|les {{formatnum:27}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:27||s}} la semaine dernière]]. Par exemple, un problème dans l'application Android de Wikipédia où les images pourraient parfois ne pas se charger après avoir ouvert une notification de liste de lecture recommandée, a maintenant été corrigé. [https://phabricator.wikimedia.org/T418231] '''Actualités pour la contribution technique''' * L'[[mw:Special:MyLanguage/Wikidata Platform|équipe de la Plateforme Wikidata]] a publié sa [[d:Special:MyLanguage/Wikidata:SPARQL query service/WDQS backend update/Backend Replacement|recommandation de remplacement du backend]] et l'[[wikitech:Wikidata Query Service/WDQS Architecture re-design|architecture technique]] qui l'accompagne pour la migration du Wikidata Query Service (WDQS) hors de Blazegraph grap. Les retours sont attendus jusqu'au 25 mai 2026, en particulier sur les éventuelles lacunes et impacts sur les cas d'utilisation avancés. Les membres de la communauté Wikidata et les utilisateurs de WDQS sont également encouragés à aider à identifier les outils et flux de travail à fort impact qui pourraient nécessiter une attention sur [[d:Wikidata:SPARQL query service/WDQS backend update/High-Impact Use Cases|cette page]]. Les retours peuvent être partagés sur la [[d:Wikidata talk:SPARQL query service/WDQS backend update|page de discussion de la migration]] ou lors de la [[d:Special:MyLanguage/Wikidata:Blazegraph Migration Office Hours|prochaine heure de bureau]]. Voir le [[d:Special:MyLanguage/Wikidata:Wikidata Platform team/Newsletter|bulletin de l'équipe WDP]] pour plus de détails. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.3|MediaWiki]] '''En détails''' * Sur les Wikipédia en anglais, en français, en japonais et quelques autres, il y a eu un [[diffblog:2025/09/02/better-detecting-bots-and-replacing-our-captcha/|essai de hCaptcha]], un service tiers de détection de robots. L'essai a montré que hCaptcha détecte et dissuade efficacement certaines activités automatisées de mauvaise foi, à la fois par lui-même et en donnant des signaux aux [[w:en:Wikipedia:Village pump (technical)/Archive 225#Introducing SuggestedInvestigations|checkusers et stewards]] pour qu'ils enquêtent. Comme les résultats étaient positifs, hCaptcha sera déployé sur toutes les wikis au cours des prochaines semaines. [[mw:Special:MyLanguage/Product Safety and Integrity/Anti-abuse signals/hCaptcha|Voir la page du projet hCaptcha]] pour des informations techniques sur la mise en œuvre et les protections de la vie privée. [[diffblog:2026/05/04/better-detecting-bots-and-replacing-our-captcha-part-2/|En savoir plus]]. * La dernière mise à jour de la Technologie communautaire est désormais disponible, avec des progrès dans plusieurs initiatives de la Liste de souhaits communautaire, y compris l'extension des listes de lecture de l'application mobile au site web, la prise en charge de nouvelles langues pour "Who Wrote That" et le Tableau de bord personnel, des améliorations du rendu 3D et des graphiques, ainsi que des travaux à venir sur le tri des pages de discussion, la lecture audio et les flux de travail d'édition. La mise à jour partage également les priorités actuelles, les tendances de l'état de la Liste de souhaits et les opportunités de retour d'information de la communauté sur les domaines de concentration futurs et le Plan annuel 2026–2027 de la Wikimedia Foundation. [[m:Special:MyLanguage/Community Wishlist/Updates#May 13, 2026: Latest updates from the Community Tech team|Lisez le bulletin d'information complet pour plus de détails]]. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/21|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W21"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18 mai 2026 à 22:21 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30539262 --> == Actualités techniques n° 2026-22 == <section begin="technews-2026-W22"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/22|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Faisant suite à une [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#LOWM|expérience fructueuse sur la création de comptes]], un message d'avertissement pour les personnes déconnectées sera déployé sur les wikis Wikimédia durant la première semaine de juin. Ce changement n'affectera que les personnes déconnectées sur l'interface web mobile qui commencent à modifier. Cette nouvelle expérience est faite pour encourager la création de comptes, tout en autorisant aux utilisateurs de modifier à l'aide de comptes temporaires. Les résultats de l'expérience ont montré une augmentation de la création de compte d'environ 27 % pour ceux ayant vu le nouveau message. Comme prévu, puisque plus de personnes créent un compte, la création de comptes temporaires a diminué de 16 %. L'expérience n'a pas montré d'autres changements sur la qualité des modifications ou sur les autres indicateurs surveillés. [https://phabricator.wikimedia.org/T424595] '''Actualités pour la contribution''' * Pour des raisons de sécurité, les membres de certains groupes d’utilisateurs sont [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|forcés d'avoir l'authentification à 2 facteurs]] (A2F) d'activée. Les membres de ces groupes seront dans l'impossibilité de désactiver la dernière méthode d'A2F sur leur compte, et il sera impossible d'ajouter des utilisateurs sans A2F à ces groupes. Ces utilisateurs auront toujours la possibilité d'ajouter ou d'enlever des nouvelles méthodes d'authentification, tant qu'une de ces méthodes est toujours activée. Dans les prochaines semaines, les utilisateurs sans A2F seront retirés de ces groupes. Cela s'applique entre autres aux bureaucrates. Veuillez lire les tâches liées pour les dates de déploiement. [https://phabricator.wikimedia.org/T423119][https://phabricator.wikimedia.org/T423120] * L'[[m:Special:MyLanguage/WMDE Technical Wishes|équipe des souhaits techniques de Wikimédia Allemagne (WMDE)]] va lancer un [[w:fr:Test A/B|test A/B]] sur [[:phab:T415904|10 wikis]], pour essayer des [[m:WMDE Technical Wishes/References/Reference Previews|améliorations potentielles pour les aperçus de références]]. Cette expérience durera environ 2 semaines à la fin mai ou début juin et affectera 10 % du lectorat sur ordinateur sur les wikis participants. * Après deux expériences fructueuses, l'équipe Croissance du lectorat déploiera une fonctionnalité de [[mw:Special:MyLanguage/Readers/Reader Growth/Image Browsing|visionnage d'images]] en bêta pour toutes les Wikipédia sur mobile le 25 mai. Cela veut dire que toutes les personnes ayant les fonctionnalités bêtas activées verront cette fonctionnalité. Les autres pourront l’activer dans leurs préférences. Cette fonctionnalité inclura un carrousel de toutes les images d'un article en haut de celui-ci, avec la possibilité pour les contributeurs d’[[mw:Readers/Reader_Growth/Image_Browsing#Phase_2.1_beta_feature|exclure des images du carrousel d'un article ou d'enlever la fonctionnalité pour l'entièreté de l'article]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:30|la tâche soumise|les {{formatnum:30}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:30||s}} la semaine dernière]]. Par exemple, les fichiers STL tridimensionnels étaient affichés incorrectement par l'extension 3D du lecteur multimédia, ce qui est maintenant corrigé. [https://phabricator.wikimedia.org/T416723] '''Actualités pour la contribution technique''' * Les classes CSS dépréciées <bdi lang="zxx" dir="ltr"><code><nowiki>tleft</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>tright</nowiki></code></bdi> ont été remplacées par <bdi lang="zxx" dir="ltr"><code><nowiki>floatleft</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>floatright</nowiki></code></bdi> car les premières ne fonctionnent pas correctement sur toutes les plateformes, dont l'interface web mobile et l'application mobile. Les projets se servant de ces classes sont encouragés à vérifier leur usage et à planifier leur migration. Sachez que <bdi lang="zxx" dir="ltr"><code><nowiki>floatleft</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>floatright</nowiki></code></bdi> pourraient aussi être dépréciées dans le futur, même s’il n'y a pas de calendrier défini. [[phab:T426452|En savoir plus]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.4|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/22|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W22"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 25 mai 2026 à 23:52 (CEST) <!-- Message envoyé par User:Quiddity (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30584502 --> == Votez maintenant aux élections 2026 de l'U4C == <section begin="announcement-content" /> Les votants éligibles sont invités à participer à l'élection 2026 du [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Comité de coordination du Code de conduite universel]]. De plus amples informations – notamment sur la vérification de l'éligibilité, le processus de vote, les candidats et un lien vers le scrutin – sont disponibles sur Meta à la [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|page d'informations sur les élections de 2026]]. Le scrutin se termine le 2 juin 2026 à [https://zonestamp.toolforge.org/1780358400 00 h 00 UTC]. Veuillez voter si votre compte est éligble. Les résultats seront disponibles avant le 14 juin 2026. -- en coopération avec l'U4C.<section end="announcement-content" /> [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 27 mai 2026 à 19:14 (CEST) <!-- Message envoyé par User:Keegan (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Actualités techniques n° 2026-23 == <section begin="technews-2026-W23"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/23|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * L'équipe [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience]] mène une expérience pour montrer la fonctionnalité [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|listes de lecture]], qui est encore en développement, aux lecteurs non connectés sur mobile afin de tester si elle encourage la création de compte à un rythme plus élevé que le bouton watchstar. L'[[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists#Experiment timeline|expérience]] a été lancée le 18 mai sur les wikis en allemand, espagnol, italien, portugais, polonais, néerlandais, turc et ourdou, et elle durera un mois. * L'équipe Wikimedia Apps a publié la [[mw:Special:MyLanguage/Wikimedia Apps/Team/Explore Feed Refresh/Phase 1|Phase 1]] du flux d'accueil repensé pour l'application Android Beta. Le nouveau flux d'accueil comprend un onglet « Communauté » actualisé et un onglet « Pour vous » personnalisé contenant des recommandations de lecture mises à jour quotidiennement. La refonte fait partie d'un effort plus large visant à améliorer la découverte de contenu et à créer des expériences d'apprentissage plus engageantes dans les applications Wikipédia. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:18|la tâche soumise|les {{formatnum:18}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:18||s}} la semaine dernière]]. Par exemple, un problème où les images pouvaient ne pas se charger pour certaines modifications suggérées sur [[w:Special:Homepage|Special:Homepage]], laissant la vignette bloquée dans un état de chargement, a maintenant été corrigé. [https://phabricator.wikimedia.org/T424048] '''Actualités pour la contribution technique''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.5|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/23|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W23"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 1 juin 2026 à 23:08 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30613639 --> == Actualités techniques n° 2026-24 == <section begin="technews-2026-W24"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/24|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Wikimedia Entreprise a relevé les limites d’utilisation gratuite de ses API. La limite mensuelle de requêtes pour l’API « à la demande » (<i lang="en">On-demand</i>) est passée de {{formatnum:5000}} à {{formatnum:50000}} requêtes, tandis que celle de l’API des instantanés (<i lang="en">Snapshot</i>) est passée de 15 à 30 requêtes par mois. De plus, les instantanés de contenus structurés sont désormais accessibles aux comptes gratuits. Ces changements élargissent l’accès aux données de Wikimedia Entreprise pour les développeurs et développeuses, les chercheurs et chercheuses et les organisations qui utilisent les contenus Wikimédia. [https://enterprise.wikimedia.com/blog/enhanced-free-api] '''Actualités pour la contribution''' * La [[mw:Special:MyLanguage/Wikimedia_Apps/Team/Explore Feed Refresh/Phase 1|nouvelle version du Fil d’exploration]], désormais appelé « Fil d’accueil », est en cours de déploiement auprès de 50 % des utilisateurs de l’application Wikipédia pour Android. Le fil d’accueil aide le lectorat à découvrir du contenu pertinent grâce à deux nouveaux onglets : « Communauté » et « Pour vous ». L’onglet « Communauté » propose un flux défilant de contenus sélectionnés et d’actualités provenant de l’ensemble de la communauté et du mouvement Wikimédia, tandis que l’onglet « Pour vous » offre une expérience en plein écran et par glissement qui présente des contenus adaptés aux centres d’intérêt de l’utilisateur ou utilisatrice. Cette refonte s’inscrit dans le cadre d’un travail en cours visant à améliorer la découverte et à enrichir l’expérience d’apprentissage au sein de l’application Wikipédia. * Le jeu-questionnaire quotidien [[mw:Special:MyLanguage/Wikimedia Apps/Team/iOS/"Which came first?" Game|Qu’est-ce qui est arrivé en premier ?]] est désormais disponible dans la version bêta de l’application Wikipédia pour iOS en anglais, allemand, français, portugais, russe, espagnol, arabe, chinois et turc. Le jeu s’appuie sur des événements historiques tirés de la rubrique « Éphéméride » de Wikipédia et met les lecteurs au défi de deviner lequel des deux événements s’est produit en premier. Le jeu avait déjà été lancé sur Android. Les communautés souhaitant rendre le jeu disponible dans leur langue peuvent [[mw:Special:MyLanguage/Wikimedia_Apps/Team/Games#Game availability by language|consulter les instructions et les conditions requises]]. * [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Les sous-références]], une nouvelle fonctionnalité de MediaWiki permettant aux contributeurs de réutiliser des références avec des détails différents, va commencer à être déployée sur les wikis Wikimédia après une phase pilote réussie. Le déploiement débutera le 8 juin pour la plupart des [[wikitech:Deployments/Train#Wednesday|wikis du groupe 1]] et Wikipédia en français, puis d'autres éditions linguistiques de Wikipédia bénéficieront de cette fonctionnalité au cours des prochains mois. Les communautés sont invitées à se préparer en vérifiant s’il existe des [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-cite&language=en&action_source=search&filter=%21translated&optional=1&action=translate messages non traduits de l’extension Cite] dans leur langue et en passant en revue toute utilisation de l’outil [[mw:Special:MyLanguage/Reference Tooltips|Infobulles des références]], qui pourraient nécessiter des [[:phab:T416304#11668731|mises à jour]] pour prendre en charge la nouvelle fonctionnalité. Les wikis utilisant les [[mw:Special:MyLanguage/Help:Reference Previews|aperçus de référence]] n’ont aucune action à entreprendre. Les communautés peuvent également créer la [[Special:TrackingCategories|catégorie de suivi]] ''cite-tracking-category-ref-details'' en tant que catégorie cachée à l’aide de <code><nowiki>__HIDDENCAT__</nowiki></code> (ou d’un modèle dédié), et la relier à l’élément Wikidata correspondant [[d:Q129764848]]. [https://phabricator.wikimedia.org/T425662] * L'[[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews#Experimentation|expérience d'Aperçus de page]] sur le Web mobile a pris fin. L'équipe a décidé de ne pas déployer cette fonctionnalité après que les résultats ont montré qu'elle n'avait pas d'impact statistiquement significatif sur la fidélisation des lecteurs, l'amélioration de la fidélisation étant le principal indicateur de réussite. Les « Aperçus de page », déjà disponibles sur ordinateur et dans les applications, affichent une vignette, le premier paragraphe et un lien vers l'article complet lorsque les lecteurs cliquent sur un lien bleu. L'expérience a testé cette fonctionnalité sur le Web mobile sur six versions de Wikipédia. * La [[mw:Special:MyLanguage/Codex/Design/Icons|bibliothèque d'icônes de l'interface utilisateur]] sera [[phab:T399175|mise à jour dans le courant de cette semaine ou la semaine prochaine]]. La plupart des quelque 300 icônes ont été légèrement peaufinées et une trentaine de nouvelles icônes ont été ajoutées. Ces modifications améliorent les icônes afin de les rendre plus cohérentes et plus compréhensibles, et d'offrir un meilleur équilibre visuel lorsqu'elles sont utilisées en groupe. * L'interface [[mw:Special:MyLanguage/Universal Language Selector|Sélecteur universel de langue]] (ULS) de MediaWiki, qui aide les utilisateurs à sélectionner du contenu dans d'autres langues, a été mise à jour. La nouvelle version améliore la rapidité et l'accessibilité, et les utilisateurs des projets Wikimédia peuvent désormais épingler des langues pour changer de langue plus rapidement. Le déploiement sur les sites Wikimédia se fera progressivement au cours des prochaines semaines. Vous pouvez la tester dès maintenant en tant que fonctionnalité bêta en sélectionnant [[Special:Preferences#mw-prefsection-betafeatures|les fonctionnalités bêta]] dans les préférences de votre profil et partager vos commentaires sur [[mw:Special:MyLanguage/Universal Language Selector/New ULS|la page du projet]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:21|la tâche soumise|les {{formatnum:21}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:21||s}} la semaine dernière]]. Par exemple, un problème du le tableau de bord d'analyse des pages vues sur pageviews.wmcloud.org qui a arrêté de mettre à jour les données graphiques en mai 2026, affectant tous les utilisateurs, a été résolu. [https://phabricator.wikimedia.org/T427171] '''Actualités pour la contribution technique''' * La signature de la fonction <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink()</nowiki></code></bdi> a été simplifiée. Les développeurs peuvent désormais passer un objet de configuration à la place d'une liste de paramètres positionnels lors de la création de liens vers des portlets. L'ancienne signature de la fonction reste prise en charge à des fins de compatibilité ascendante. Par exemple, au lieu de : <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink('p-cactions', '#', 'Stub', 'ca-stubtag', 'Add a stub tag to this page');</nowiki></code></bdi>, utilisez <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink('p-cactions', { href: '#', text: 'Stub', id: 'ca-stubtag', tooltip: 'Add a stub tag to this page' });</nowiki></code></bdi>. Les responsables de la maintenance des scripts sont invités à passer en revue les utilisations existantes de <bdi lang="zxx" dir="ltr"><code><nowiki>addPortletLink()</nowiki></code></bdi> et à les mettre à jour si nécessaire. Cette modification sera disponible sur tous les wikis à partir du 11 juin. Merci à Gerges, bénévole de la communauté, d'avoir apporté cette amélioration. [https://phabricator.wikimedia.org/T427945] * '''Discussion sur la liste de souhaits de la communauté''': les [[m:Special:MyLanguage/Community Wishlist/Updates#May 20, 2026: Community Tech becomes a program|changements introduits]] par les équipes Produit et Technologie visent à augmenter le nombre et la complexité des souhaits exaucés, notamment par la dissolution de l'équipe Community Tech. Ils [[m:Special:MyLanguage/Community Wishlist/Updates|mènent actuellement des discussions]] sur une [[m:Talk:Community Wishlist#Proposed direction for Wishlist|orientation proposée pour la liste de souhaits]] émanant des membres de la communauté. Cela inclut des moyens de structurer le vote annuel, un meilleur suivi des souhaits, la suppression de certains domaines prioritaires et des [[m:Special:MyLanguage/Community Wishlist/Updates|mises à jour concernant le personnel]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.6|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/24|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W24"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 8 juin 2026 à 23:29 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30650573 --> == Actualités techniques n° 2026-25 == <section begin="technews-2026-W25"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/25|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * L'[[mw:Special:MyLanguage/Readers/Reader Growth|équipe chargée de la croissance du lectorat]] a lancé une fonctionnalité bêta d'[[mw:Special:MyLanguage/Readers/Reader Growth/Image Browsing|exploration des images]] sur la version mobile de toutes les Wikipédias. Cette fonctionnalité affiche un carrousel d'images en haut des articles contenant au moins trois images. Les contributeurs peuvent configurer cette fonctionnalité à l'aide des commandes suivantes : pour masquer une image spécifique sur une page, utilisez soit <code>class=notpageimage</code> pour l'exclure des aperçus miniatures, soit <code>class=noviewer</code> pour l'exclure de MediaViewer. Le carrousel peut également être désactivé complètement sur une page à l'aide du mot magique <code><nowiki>__NOMEDIAVIEWERCAROUSEL__</nowiki></code>. Pour faire des retours ou signaler des bugs, rendez-vous sur la [[mw:Talk:Readers/Reader Growth/Image Browsing|page de discussion du projet]]. * Les [[mw:Special:MyLanguage/Help:Tables#class="wikitable"|Wikitables]] peuvent désormais être [[mw:Special:MyLanguage/Help:Sortable tables#Forcing the initial sort direction|triées par ordre décroissant]] dès le premier clic en ajoutant <code dir=ltr>data-sort-order="desc"</code> à la cellule d'en-tête. Auparavant, par défaut, cliquer une première fois sur l'en-tête d'une colonne entraînait un tri par ordre croissant. Cette nouveauté offre davantage de contrôle et de flexibilité pour les Wikitables, tandis que le comportement par défaut pour les clics suivants reste inchangé. [https://phabricator.wikimedia.org/T398416] '''Actualités pour la contribution''' * La fonctionnalité d'[[mw:Special:MyLanguage/Article guidance|Aide à la rédaction d'articles]] est actuellement en phase de test auprès de certains contributeurs qui créent de nouveaux articles sur les Wikipédias en anglais simplifié, en français et en turc. L'expérience débutera bientôt sur les Wikipédias en arabe et en bengali également. [[w:simple:Special:NewArticle|Cette fonctionnalité]] fournit aux contributeurs des conseils élaborés par la communauté afin de les aider à créer des articles conformes aux normes communautaires. Les contributeurs expérimentés peuvent continuer à créer ou à adapter des modèles pour des types d'articles spécifiques qui sont couramment créés par des contributeurs moins expérimentés. Ces modèles guident les contributeurs moins expérimentés dans la création d'articles de haute qualité. Un guide rapide des balises utilisées dans les modèles est disponible sur [[mw:Special:MyLanguage/Article guidance/Test feature guide#Markups in outlines|cette page]]. [[w:fr:Projet:Aide à la rédaction d'articles#Liste de plans d'aide à la rédaction|Des exemples de modèles]] pouvant être adaptés, ainsi que des instructions sur la manière de les adapter, se trouvent dans [[mw:Special:MyLanguage/Article guidance#Adapting a sample outline in a Wikipedia|cette section]] de la page du projet. * Les wikis qui souhaitent remplacer le bouton « indéfiniment » dans la page Special:Block pour les comptes temporaires (par exemple, les wikis qui bloquent les utilisateurs temporaires uniquement jusqu'à l'expiration de leur compte) pourront le faire en créant [[MediaWiki:ipb-indefinite-expiry-temporary-account]] avec la durée de blocage souhaitée. [https://phabricator.wikimedia.org/T427125] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:41|la tâche soumise|les {{formatnum:41}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:41||s}} la semaine dernière]]. '''Actualités pour la contribution technique''' * D'ici la fin du mois de juin, une chaîne « user-agent » valide sera requise pour les téléchargements automatisés de sauvegardes depuis le site dumps.wikimedia.org. Les requêtes automatisées fournissant une chaîne « user-agent » générique ou vide seront bloquées. Cette mesure [[phab:T400119|renforce l'application]] de la [[foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|politique relative à l'agent utilisateur]] en vigueur depuis longtemps. L'accès aux sauvegardes via Wikimedia Cloud Services restera inchangé. * La mise en place des [[mw:Wikimedia APIs/Rate limits|limites de débit des API]] à l'échelle mondiale est désormais achevée ; ces limites s'appliquent à toutes les API et sont fixées aux niveaux indiqués dans la documentation pour tous les groupes. Les bots fonctionnant sur Toolforge/WMCS ou disposant du droit d'utilisateur « bot » sur n'importe quel wiki restent exemptés. Tous les bots doivent continuer à respecter les bonnes pratiques décrites dans la documentation afin d'éviter d'être soumis à des limites de débit. * Le [https://api.wikimedia.org/wiki/Main_Page wiki du portail API] sera en lecture seule à partir de cette semaine (du 15 au 18 juin). La semaine suivante (du 22 au 25 juin), toutes les URL du wiki du portail API redirigeront vers [[mw:Wikimedia APIs|les API Wikimedia sur mediawiki.org]]. Pour en savoir plus, consultez la [[wikitech:API Portal/Deprecation|page du projet]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.7|MediaWiki]] '''Rencontres et évènements''' * Le 17 juin à 18 h (UTC), la WMF organisera une réunion sur Discord consacrée à la revue de code. L'[[mw:Special:MyLanguage/Developer Satisfaction Survey/2026|enquête sur la satisfaction des développeurs]] nous a permis de constater que les bénévoles rencontrent des difficultés avec la revue de code, et nous souhaitons discuter de ces expériences afin de trouver des solutions concrètes. Vous pouvez rejoindre la réunion [https://discord.gg/wikipedia?event=1514727511102062664 via le serveur Discord de la communauté Wikimedia]. * La [[m:Special:MyLanguage/Conferencia Wikimedia de América Latina 2026|Conférence Wikimedia d'Amérique latine]] organisera un hackathon régional qui réunira la communauté technique du mouvement Wikimedia, notamment des développeurs, des administrateurs système, des data scientists et des utilisateurs disposant de droits étendus. Les contributeurs techniques intéressés peuvent [https://docs.google.com/forms/d/e/1FAIpQLSf4osJzTHBJjQbYJk7TMVEJjTEQv7IgtsUDfP-o-qTgeRQQxw/viewform postuler à une bourse] pour y participer jusqu'au 21 juin à minuit (heure de la Bolivie, UTC-4). * Inscrivez-vous aux Wikimania Team Challenges pour participer à cet événement exceptionnel. Les défis par équipe se dérouleront en ligne et en présentiel les 21 et 22 juillet, avant la conférence Wikimania. Tout le monde est le bienvenu, quelles que soient ses compétences ou son inscription à Wikimania. Les équipes travailleront sur 10 défis importants visant à soutenir la communauté Wikimedia. Pour plus de détails, rendez-vous sur [[wmania:Special:MyLanguage/2026:Team challenges|la page des défis par équipe]] et [https://wikimedia.eventyay.com/wm/teamchallenges/ inscrivez-vous ici]. Les inscriptions se terminent le 20 juin à 23 h UTC. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/25|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W25"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15 juin 2026 à 18:48 (CEST) <!-- Message envoyé par User:UOzurumba (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30689604 --> == Actualités techniques n° 2026-26 == <section begin="technews-2026-W26"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/26|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Les [[mw:Special:MyLanguage/Growth/Feature summary|fonctionnalités de croissance]] sont [[phab:T418115|désormais disponibles sur Wikidata]]. Cette mise à jour permet d'accéder au mentorat ([[mw:Special:MyLanguage/Help:Growth/Mentorship|s'il est configuré]]), au module Impact, au panneau d'aide et à une page d'accueil simplifiée pour les nouveaux arrivants (sans les suggestions de modifications). Les administrateurs de Wikidata continuent de paramétrer ces fonctionnalités via la configuration communautaire. '''Actualités pour la contribution''' * La page spéciale [[{{#special:RangeCalculator}}]] a été créée. Elle permet aux utilisateurs de trouver une plage d'adresses IP sans avoir à recourir à des outils externes. Jusqu'à présent, cet outil n'était accessible qu'aux CheckUsers. [https://phabricator.wikimedia.org/T268429] * Les [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|sous-références]] sont une nouvelle fonctionnalité de MediaWiki qui permet aux contributeurs de réutiliser des références en modifiant certains détails. Elle sera déployée le 23 juin, sur la plupart des versions de Wikipédia de petite et moyenne taille. La [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#deployment|FAQ]] répertorie les mesures à prendre sur votre wiki pour faciliter ce déploiement. Consultez le [[:phab:T414094|plan de déploiement]] pour connaître les prochaines étapes. [https://phabricator.wikimedia.org/T428902] * À partir de la semaine prochaine, les utilisateurs recevront une notification lorsqu'ils seront bloqués ou débloqués pour l'édition, ou si ce blocage venait à changer. [https://phabricator.wikimedia.org/T100974] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:32|la tâche soumise|les {{formatnum:32}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:32||s}} la semaine dernière]]. '''Actualités pour la contribution technique''' * À partir de la semaine prochaine, les filtres anti-abus configurés pour « exiger une vérification par CAPTCHA » s'appliqueront également aux utilisateurs disposant du droit <code>skipcaptcha</code>, ce qui inclut la plupart des utilisateurs auto-confirmés. Les bots en sont exemptés. Ce changement ne concerne que les modifications qui déclenchent un filtre anti-abus. Le droit <code>skipcaptcha</code> continuera à exempter les utilisateurs de l'obligation de résoudre des CAPTCHA dans le cadre d'une utilisation normale des wikis. [https://phabricator.wikimedia.org/T402595] * La documentation de référence relative à l'[[wikitech:Machine_Learning/LiftWing/API|API Lift Wing]] a été déplacée du portail API vers le [https://wikitech.wikimedia.org/w/index.php?api=lift-wing&title=Special%3ARestSandbox bac à sable REST] interactif. * Le wiki du Portail API est désormais fermé. Pour consulter la documentation relative aux API, rendez-vous sur [[mw:Special:MyLanguage/Wikimedia_APIs|Wikimedia APIs sur mediawiki.org]]. À compter du 22 juin, toutes les URL du wiki du Portail API (https://api.wikimedia.org/wiki/) redirigeront vers la page de mediawiki.org. [https://phabricator.wikimedia.org/T427537] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.8|MediaWiki]] '''Rencontres et évènements''' * Participez à une visioconférence le 25 juin à 14 h 30 UTC pour rencontrer les stagiaires actuels de Wikimédia participant au [[mw:Google_Summer_of_Code/2026|Google Summer of Code]] et à [[mw:Outreachy/Round_32|Outreachy]]. Les stagiaires présenteront leurs projets et feront une brève démonstration du travail qu'ils ont réalisé jusqu'à présent. Les participants sont invités à [[mw:event:Google_Summer_of_Code/Summer_2026_June_Internship_open_session|partager leurs idées et leurs contacts au sein de leur communauté]]. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/26|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W26"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23 juin 2026 à 15:05 (CEST) <!-- Message envoyé par User:Trizek (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30722494 --> == RFC about AI-generated content in Wikimedia Commons == <bdi lang="en" dir="ltr">Apologies for writing in English, please help translate this message to your language. You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|discussion]])</bdi> 23 juin 2026 à 19:11 (CEST) <!-- Message envoyé par User:Codename Noreste@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Intégration du lien vers les contacts juridiques et de sécurité dans le pied de page de votre wiki == <section begin="Message"/> '''Contacts juridiques et de sécurité''' Bonjour à toute la communauté, la Fondation Wikimedia a mis à disposition une [[wmf:Special:MyLanguage/Legal:Wikimedia Foundation Legal and Safety Contact Information|page unique dédiée aux mentions légales et à la sécurité]], à ajouter en pied de page de votre wiki, afin de garantir l'accès à des informations juridiques exactes. Il s'agit d'une exigence réglementaire. Nous avons déjà mis en place des liens vers les wikis en anglais, allemand, italien, espagnol et d'autres langues de Wikipedia, et nous les déploierons bientôt sur votre wiki. Pour en savoir plus, [[m:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|consultez la page du projet]] et n'hésitez pas à laisser vos commentaires dans ce fil de discussion ou sur la [[m:Special:MyLanguage/Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|page de discussion]]. <section end="Message"/> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 25 juin 2026 à 15:30 (CEST) <!-- Message envoyé par User:Sannita (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=30731267 --> == Actualités techniques n° 2026-27 == <section begin="technews-2026-W27"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/27|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * Dans le cadre des [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|expériences sur la création de comptes]], l'équipe Growth a testé l'ajout d'une icône de compte utilisateur dans l'en-tête du site mobile pour les utilisateurs non connectés, offrant ainsi un accès direct aux actions « Créer un compte » et « Se connecter ». Cette expérience a permis d'augmenter le nombre de créations de comptes d'environ 20 % sans nuire à la qualité des modifications ni au taux de modifications constructives. Cette fonctionnalité sera désormais déployée sur tous les wikis de la Fondation Wikimédia sur le site mobile au cours de la première semaine de juillet. [https://phabricator.wikimedia.org/T428220] * À la suite d'une [[phab:T426248|expérience concluante]], les utilisateurs connectés qui n'ont pas [[mw:Special:MyLanguage/Help:Email_confirmation|confirmé leur adresse e-mail]] lors de la création de leur compte voient s'afficher une nouvelle bannière leur demandant de finaliser cette procédure. Cela permet de réduire le risque que les utilisateurs se retrouvent bloqués hors de leur compte et rend les adresses e-mail associées aux comptes globalement plus fiables. Cette mesure s'inscrit dans le cadre du projet [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Sécurité des comptes]]. [https://phabricator.wikimedia.org/T428292] * Une mise à jour de [[Special:Search|Recherche]] affine le comportement de <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> lorsqu'il est utilisé pour exclure des résultats. Auparavant, l'utilisation de <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> avec la négation pouvait élargir involontairement les résultats de recherche en ajoutant les espaces de noms inclus dans le champ de recherche, ce qui entraînait un comportement déroutant pour les utilisateurs s'attendant à un filtre d'exclusion simple. Avec cette mise à jour, <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> exclura désormais strictement les titres de pages correspondants comme prévu et pourra afficher un avertissement si l'espace de noms concerné n'a pas été explicitement sélectionné. Le comportement de <bdi lang="zxx" dir="ltr"><code><nowiki>prefix:</nowiki></code></bdi> sans négation reste toutefois inchangé. [https://phabricator.wikimedia.org/T427443] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:33|la tâche soumise|les {{formatnum:33}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:33||s}} la semaine dernière]]. Par exemple, le problème qui empêchait les réviseurs utilisant la barre d'outils « Page Curation » d'être automatiquement abonnés aux discussions qu'ils avaient lancées sur les pages de discussion a désormais été résolu. Les réviseurs recevront désormais des notifications lorsqu'une personne répondra à ces discussions. [https://phabricator.wikimedia.org/T329346] '''Actualités pour la contribution technique''' * À compter du 29 juin, les téléchargements automatisés depuis le site web « dumps.wikimedia.org » seront soumis à la [[Foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|politique relative aux user-agents]]. Les requêtes automatisées utilisant un user-agent générique ou vide seront bloquées. L'accès aux sauvegardes via Wikimedia Cloud Services n'est pas affecté. Cette mesure fait suite à l'annonce publiée dans le [[m:Special:MyLanguage/Tech/News/2026/25|numéro 2026/25 de Tech News]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.9|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/27|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W27"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 29 juin 2026 à 13:48 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30744833 --> == Actualités techniques n° 2026-28 == <section begin="technews-2026-W28"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/28|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:34|la tâche soumise|les {{formatnum:34}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:34||s}} la semaine dernière]]. Par exemple, les résultats de la barre de recherche sur Wikidata étaient en anglais au lieu d’utiliser la bonne langue de repli pour les utilisateurs de variantes de langues. Ce problème a maintenant été corrigé : les suggestions de recherche suivront désormais correctement la chaîne des langues de repli. [https://phabricator.wikimedia.org/T429769] '''Actualités pour la contribution technique''' * En préparation de la [[m:Special:MyLanguage/Event:Celebrate Women|campagne Célébrons les femmes]] prévues pour mars 2027, l’[[m:Special:MyLanguage/Wikimedia Foundation/Advancement/Community Growth/Content Enablement|équipe Activation du contenu]] de Wikimedia Foundation a lancé un sondage composé de 22 questions pour mieux comprendre les contributions techniques des personnes s’identifiant comme femmes sur les projets Wikimedia. Répondre au sondage prend environ 15 à 20 minutes ; il restera ouvert jusqu’au 20 juillet 2026. Les [[m:Special:MyLanguage/Celebrate Women/Technical contributions survey|questions]] sont aussi sur wiki pour les regarder auparavant. * L’[[mw:Special:MyLanguage/Extension:Score|extension Partitions]] prend désormais en charge le rendu de partition musicales comme images SVG, en plus du format PNG. Cela répond à [[:phab:T49578|une vieille demande]] et résout des problèmes anciens de qualité de l’image. Les deux formats sont désormais fournis aux clients web : PNG dans l’attribut <bdi lang="zxx" dir="ltr"><code><nowiki>src</nowiki></code></bdi> et SVG dans l’attribut <bdi lang="zxx" dir="ltr"><code><nowiki>srcset</nowiki></code></bdi>. * Le nouvel analyseur syntaxique [[wikitech:Parsoid|Parsoid]] continue [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Updates|d’être déployé sur d’autres wikis]], ce qui rend plus facile l’introduction de nouvelles fonctionnalités de lecture et de modification. Il a été activé sur Wikipédia en français, amenant la couverture totale à 78,9 % des pages vues de Wikipédia. Le déploiement sur Wikipédia en anglais sur ordinateur va progresser cette semaine. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.10|MediaWiki]] '''En détails''' * La [[diffblog:2026/06/29/wikimedia-hackathon-2026-building-collaborating-and-shaping-the-future-together/|publication sur le blog récapitulant]] le Hackathon Wikimedia 2026 est désormais en ligne. Il met en avant les projets, séances et activités sociales de l’évènement de cette année et présente les premières grandes lignes du Hackathon Wikimedia 2027. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/28|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W28"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 6 juillet 2026 à 15:56 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30773578 --> == Actualités techniques n° 2026-29 == <section begin="technews-2026-W29"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/29|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * [[mw:Special:MyLanguage/Growth/Revise_Tone|Revise Tone]] aide les nouveaux contributeurs à identifier les passages des articles de Wikipédia susceptibles de contenir un langage non encyclopédique et les encourage à envisager d'en réviser le ton. Cette fonctionnalité a fait l'objet d'un [[w:en:A/B_testing|test A/B]] sur les Wikipédias en arabe, en anglais, en français et en portugais, où le taux d'achèvement des tâches par les nouveaux contributeurs [[mw:Special:MyLanguage/Growth/Revise_Tone#Experiment_Results|a augmenté de 38,7 %]] par rapport à la tâche de relecture par défaut, sans que la qualité des modifications n'en soit affectée. Le test s'est achevé le 9 juillet et la fonctionnalité est désormais accessible à tous sur ces wikis ; elle est configurable via la configuration communautaire. [[phab:T426364|Il est prévu]] de déployer « Revise Tone » sur d’autres wikis. * La configuration communautaire permettant la [[mw:Special:MyLanguage/Help:Growth/Mentorship#Automated mentor list cleanup|suppression automatique des mentors inactifs]] selon des critères configurables sera activée le jeudi 16, [[mw:Special:MyLanguage/Growth/Deployment|sur certains wikis]], afin de maintenir à jour les listes de mentors. Les mentors sont des contributeurs expérimentés qui choisissent d'aider les nouveaux utilisateurs sur le wiki grâce aux [[mw:Special:MyLanguage/Growth/Feature summary|fonctionnalités de croissance]]. Les administrateurs peuvent désormais préparer les paramètres via [[w:Special:CommunityConfiguration/Mentorship|Special:CommunityConfiguration/Mentorship]] ; ces fonctionnalités prendront effet à partir de jeudi. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:38|la tâche soumise|les {{formatnum:38}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:38||s}} la semaine dernière]]. Par exemple, un problème où certains utilisateurs de l'application Android Wikipedia ont été déconnectés immédiatement après leur connexion, les empêchant de rester connectés et de modifier les pages, a maintenant été résolu. [https://phabricator.wikimedia.org/T316916] '''Actualités pour la contribution technique''' * La modification d'une page à l'aide de scripts utilisateur ou de gadgets entraînait la réinitialisation des étiquettes de liste de suivi que l'utilisateur avait attribuées à cette page. Ce problème a désormais été résolu. [https://phabricator.wikimedia.org/T423778] * Pour contourner un bug de Safari (voir [[phab:T425211]]), sur les wikis utilisant Parsoid, wikilink hrefs utilise désormais des URL absolues au lieu d'URL relatives au protocole. La sortie de l'API REST reste inchangée et continue d'utiliser des URL relatives au protocole. Les gadgets, les scripts utilisateur, les bots et les feuilles de style CSS devront probablement être adaptés s'ils s'appuyaient sur la présence d'URL relatives au protocole dans wikilink hrefs. [https://phabricator.wikimedia.org/T431358] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.11|MediaWiki]] '''En détails''' * L'équipe chargée de la plateforme d'expérimentation de la Fondation Wikimedia a publié un article de blog faisant le bilan de sa première année d'expérimentation structurée. Cet article met en avant des expériences couronnées de succès, telles que « Paste Check », « Reference Check » et « Tone Check », qui ont permis d'améliorer les résultats des modifications et ont été étendues à un plus grand nombre d'utilisateurs, ainsi que des expériences qui n'ont pas abouti à des changements au niveau du produit. [[diffblog:2026/07/07/moving-the-needle-how-we-test-new-ideas-across-wikimedia-projects|En savoir plus]]. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/29|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W29"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 13 juillet 2026 à 18:11 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30804401 --> == Actualités techniques n° 2026-30 == <section begin="technews-2026-W30"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/30|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * L'[[mw:Special:MyLanguage/Reader/Reader Experience|équipe chargée de l'expérience utilisateur]] a pris en compte les commentaires de la communauté concernant l'emplacement des boutons « Watchstar » et « Watchlist » pour la [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|fonctionnalité bêta « Listes de lecture »]], qui permettrait d'enregistrer des articles pour les lire plus tard – un [[m:Special:MyLanguage/Community Wishlist/W102|élément de la liste de souhaits]] visant à intégrer cette fonctionnalité sur le site web. Les contributeurs sont invités à activer cette fonctionnalité bêta pour la tester et [[phab:T426453|partager leurs impressions]]. * Le [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|mode Suggestions]] propose des suggestions d'édition au sein de l'éditeur visuel afin d'améliorer les articles de Wikipédia. [[Special:EditChecks|Toutes les suggestions]] sont [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators – local customization|configurables par la communauté]]. La fonctionnalité [[mw:Special:MyLanguage/Edit check/TextMatch|TextMatch]] permet aux bénévoles de créer des suggestions locales personnalisées. Cette fonctionnalité recherche des chaînes de texte dans les articles et prend désormais en charge les expressions régulières. Cela offre aux bénévoles davantage de précision et de flexibilité quant aux types de suggestions locales qu’ils peuvent créer. Remarque : les suggestions [[mw:Special:MyLanguage/Edit check/Configuration#:~:text=maximumEditcount|peuvent être ciblées]] en fonction du nombre de modifications effectuées par la personne qui édite, ainsi que d’autres aspects de la page. Vous pouvez [[mw:Special:MyLanguage/Help:Suggestion mode#Create custom local types of Suggestions|trouver des exemples provenant d’autres communautés]] pour vous inspirer, notamment des TextMatches qui détectent : les fautes de frappe, les erreurs grammaticales, les publicités potentielles, les clichés, l’utilisation incorrecte des tirets ou des traits d’union, les mots-clés temporels non spécifiques, les noms obsolètes, et bien plus encore. Tout [[mw:Special:MyLanguage/Talk:VisualEditor/Suggestion Mode|retour]] est le bienvenu. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:27|la tâche soumise|les {{formatnum:27}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:27||s}} la semaine dernière]]. Par exemple, un problème lié à l'outil SVG Translate, qui pouvait utiliser une version obsolète d'un fichier, entraînant ainsi le remplacement des traductions existantes lors du téléchargement de nouvelles traductions, a désormais [[phab:T430577|été résolu]]. Au total, au cours du dernier trimestre, d'avril à juin 2026, environ 337 tâches communautaires ont été résolues par la Fondation Wikimedia. '''Actualités pour la contribution technique''' * Sur les wikis utilisant Parsoid, ce dernier affiche désormais un maximum de 1 250 images par page. Une nouvelle catégorie de suivi, « media-limit-reached », sera bientôt disponible pour identifier les pages où cette limite est atteinte, ce qui facilitera la recherche des contenus dont l'affichage des médias a pu être restreint lors du rendu. Consultez [[phab:T430854]] pour plus d'informations et pour nous faire part de vos commentaires. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.12|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/30|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W30"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21 juillet 2026 à 07:46 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30836091 --> == Request for comment (the future of Abstract Wikipedia) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies if this has not yet been translated into your wiki's language. {{int:Please-translate}} You are invited to voice your opinions in a [[:m:Requests for comment/The future of Abstract Wikipedia|request for comment about the future of Abstract Wikipedia]]. {{Int:Feedback-thanks-title}} [[:m:User:Kowal2701|Kowal2701]] ([[:m:User talk:Kowal2701|talk]]) 24 juillet 2026 à 14:24 (CEST) </bdi> <!-- Message envoyé par User:DreamRimmer@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == <span lang="en" dir="ltr">Tech News: 2026-31</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W31"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/31|Translations]] are available. '''Updates for editors''' * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] [[mw:Special:MyLanguage/ContentTranslation|Content Translation]] now supports dark mode, fulfilling a [[m:Community Wishlist/W544|Community Wishlist request]]. This brings the tool in line with the accessibility features available in the Vector 2022 and Minerva skins, helping reduce visual fatigue for users translating content. [https://phabricator.wikimedia.org/T367077] * DiscussionTools' source mode and the 2017 wikitext editor will now offer autocomplete for links (<bdi lang="zxx" dir="ltr"><code><nowiki>[[</nowiki></code></bdi>), templates (<bdi lang="zxx" dir="ltr"><code><nowiki>{{</nowiki></code></bdi>), HTML and parser tags (<bdi lang="zxx" dir="ltr"><code><nowiki><</nowiki></code></bdi>), and magic words (<bdi lang="zxx" dir="ltr"><code><nowiki>__</nowiki></code></bdi>), making it quicker and easier to insert links, templates, and other wiki markup while editing. [https://phabricator.wikimedia.org/T432400] * The [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|Readers Growth team]] has concluded its experiment with mobile page previews and will not roll out the feature. Page Previews are a pop-up bottom sheet that appears when readers tap a blue link, showing a thumbnail, lead paragraph, and an option to open the article. The experiment showed flat retention and negative indicator metrics, suggesting that mobile web readers preferred navigating directly to linked articles rather than using page previews. * The Reader Experience team has seen encouraging early results from the [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Reading Lists feature]], with 93% of participating users reporting that it was useful. Reading Lists help active readers save articles for future reading and support their learning goals on Wikimedia projects. The team plans further improvements before expanding the feature to more users. * The [[mw:Special:MyLanguage/Wikimedia Apps/Team/Explore Feed Refresh|Explore Feed Refresh]] initiative was tested with new and casual Wikipedia app readers. The refreshed feed helps readers discover new and relevant content. After a 10.5% increase in engagement with the feed, Wikimedia Apps team has decided to scale the Home Feed redesign to iOS with the learnings from the Android release applied. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where subject names in the Article Guidance feature were displayed with incorrect capitalization on French Wikipedia, has now been fixed. Subject names will now follow the correct capitalization rules for the language. [https://phabricator.wikimedia.org/T427201] '''Updates for technical contributors''' * After running several [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|Account Creation Experiments]] to improve registration completion rates, a new version of the username field on [[Special:CreateAccount|Create Account]] has been rolled out. It includes [[:c:File:Create account - July 2026 updates.png|a popover summarizing the username policy]] to provide clearer guidance during account creation. As part of this change, the messages <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-helpusername</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-help</nowiki></code></bdi> that several communities have configured will no longer be used. If communities want to customize the guidance shown in the new popover, they can instead edit the following messages: <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet1</nowiki></code></bdi>, <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet2</nowiki></code></bdi>, and <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet3</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T430604] * Later this week, the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror syntax highlighter]] will offer [[w:en:Theme (computing)|themes]]. The themes can be picked from a dropdown menu in the full [[mw:Special:MyLanguage/Help:Extension:CodeMirror#CodeMirror preferences|CodeMirror preferences]] dialog. For wikitext, available themes are default, colorblind-friendly (previously the colorblind preference option on [[Special:Preferences#mw-prefsection-editing]]) and no-highlighting. For code languages (i.e., CSS/JavaScript/JSON/Vue/Lua), there are several themes available. These same themes will eventually be available for wikitext, too. [https://phabricator.wikimedia.org/T163533] * From now on, wikis can restrict editing in the "User" namespace to only the page owner and certain user groups. [[mw:Special:MyLanguage/Manual:$wgRestrictUserPageEditing|Read the configuration documentation]] to learn more. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.14|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/31|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W31"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 27 juillet 2026 à 20:49 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30856308 --> == Actualités techniques n° 2026-32 == <section begin="technews-2026-W32"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/32|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * L’[[mw:Special:MyLanguage/Readers/Reader Experience|équipe Expérience de lecture]] a développé une [https://82db7c8d4b.catalyst.wmcloud.org/w/index.php?title=Regent%27s_Park&uselang=de démonstration d’un correctif] qui entoure la barre d’outils sur deux lignes quand il n’y a pas assez d’espace horizontalement pour tous les boutons. Le but est de réduire l’encombrement de la barre d’outil de Vector 2022 qui se constate parfois sur Wikipédia dans certaines langues avec certaines tailles d’écran. [https://phabricator.wikimedia.org/T429518] * L’équipe Expérience de lecture prévoit de lancer les [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Listes de lecture]], un [[m:Special:MyLanguage/Community Wishlist Survey 2021/Mobile and apps/Have Apps reading lists available on Destop/Mobile|souhait de la communauté]] que vous pouvez déjà essayer en bêta, à partir de septembre. Mais avant cela, l’aide des traducteurs et traductrices est nécessaire pour [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-readinglists&filter=&action=translate plusieurs messages] à traduire dans un maximum de langues. Cette fonctionnalité appuie les objectifs de lecture et d’apprentissage sur Wikipédia. * La semaine prochaine, le sommaire sur les pages des fichiers de Wikimedia Commons sera amélioré en fusionnant le sommaire spécifique aux pages de fichier avec le sommaire classique des pages. Cela rendra plus facile la compréhension de la structure des pages de fichier, la navigation vers une section spécifique et le partage de liens vers une section en particulier. [https://phabricator.wikimedia.org/T332644] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:24|la tâche soumise|les {{formatnum:24}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:24||s}} la semaine dernière]]. Par exemple, certaines images [[w:fr:Tagged Image File Format|TIFF]] ne s’affichaient pas après avoir cliqué sur leur vignette : une image cassé s’affichait au lieu de l’image en taille réelle. Ce problème est désormais corrigé. [https://phabricator.wikimedia.org/T429326] '''Actualités pour la contribution technique''' * Le sélecteur de variables et de fonctions dans les Filtres anti-abus a été mis à jour pour prendre en charge la recherche et l’autocomplétion. Il permettra désormais aux mainteneurs de filtres de retrouver la variable ou fonction désirée plus rapidement. [https://phabricator.wikimedia.org/T323698] * Les formats MJPEG et VP8 sont retirés du lecteur vidéo. Le format MP4 (MPEG-4 Partie 2) est ajouté à la place : il fournit une meilleure qualité pour les vieux modèles d’iPhone. Plusieurs semaines seront peut-être nécessaires pour mettre à jour toutes les vidéos déjà en ligne. Le format par défaut pour les appareils modernes ne change pas (VP9/WebM). [https://phabricator.wikimedia.org/T358266] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.15|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/32|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W32"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 3 août 2026 à 21:46 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30872536 --> == Actualités techniques n° 2026-33 == <section begin="technews-2026-W33"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/33|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Concerne un souhait]] Un nouvel assistant à diagrammes (''ChartWizard'') est [[c:Special:ChartWizard/Data:Example.Pie.chart|désormais disponible sur Wikimedia Commons]] pour les utilisateurs et utilisatrices qui souhaitent créer des graphiques à partir de leurs propres données. Cet assistant rend l’[[mw:Special:MyLanguage/Extension:Chart|extension Chart]] plus accessible aux débutants en permettant la création de diagrammes (par exemple des histogrammes ou des graphiques en secteurs) sans devoir utiliser du JSON. Les utilisateurs peuvent encore repasser à l’éditeur JSON s’ils le préfèrent. Vos retours sur ce nouvel outil sont les bienvenus sur la [[m:Talk:Community Wishlist/W414|page de discussion du souhait]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:19|la tâche soumise|les {{formatnum:19}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:19||s}} la semaine dernière]]. Par exemple, le gadget Photo du jour de l’appli Wikipédia pour iOS affichait par erreur la même image chaque jour au lieu d’en afficher une nouvelle quotidiennement. Cela a désormais été corrigé. [https://phabricator.wikimedia.org/T430692] '''Actualités pour la contribution technique''' * Les images SVG de [[mw:Special:MyLanguage/Extension:Math|formules mathématiques]] seront bientôt générées par le navigateur plutôt que côté serveur. MathML continue d’être généré côté serveur et est rendu dans le navigateur sans JavaScript. Ce changement aura lieu sur Wikibooks le 12 aout, sur Wikisource le 19 aout et sur Wikipédia du 20 au 27 aout. Vous pouvez l’essayer en choisissant « {{int:Mw-math-mathjax}} » dans vos préférences. Cela fait partie de la [[mw:Special:MyLanguage/RESTBase/deprecation|dépréciation de RESTBase]] et [[phab:T431372|de celle de Mathoid]]. [https://phabricator.wikimedia.org/T271001] * <span class="mw-translate-fuzzy">Les pages de catégorie permettront bientôt de trier les pages de la catégorie par ordre chronologique d’ajout dans la catégorie. Cela permettra de retrouver facilement les pages récemment ajoutées ou celles depuis longtemps dans la catégorie. Cela améliorera aussi le traitement des catégories de maintenance, par exemple les demandes de suppression ou d’autres tâches nécessitant un traitement chronologique. Utilisez l’argument <bdi lang="zxx" dir="ltr"><code><nowiki>cldsort=timestamp</nowiki></code></bdi> dans l’URL de la vue d’une catégorie pour trier la liste de pages.</span> [https://phabricator.wikimedia.org/T433768] * Les [[mw:Special:MyLanguage/Extension:Gadgets|gadgets]] et scripts utilisateur sur les wikis Wikimedia peuvent désormais utiliser les [[phab:T395347|fonctionnalités de ES 2018]] et [[phab:T419142|celles de ES 2019]] dans le code JavaScript. Auparavant, la plateforme n’acceptait qu’ES 2017. MediaWiki valide le code source pour protéger les fonctionnalités d’erreurs de syntaxes et pour vérifier que les scripts sont fonctionnels dans tous [[mw:Special:MyLanguage/Compatibility#Browser_support_matrix|les navigateurs pris en charges]]. [https://phabricator.wikimedia.org/T419142] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.16|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/33|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W33"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 10 août 2026 à 22:45 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30901051 --> == <span lang="en" dir="ltr">Tech News: 2026-34</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W34"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/34|Translations]] are available. '''Weekly highlight''' * The [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Worklist|Worklist feature]] for the Event Registration tool is now live on all Wikimedia wikis. With Worklist, event organizers can add the articles their event will focus on directly to the event page. The Worklist also powers [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Worklist#How Event Pathways uses the worklist|Event Pathways]] which notifies other editors of the upcoming or ongoing event when they edit an article featured in the event's Worklist. This is the minimum viable version (MVP), and feedback is welcome. Organizers are encouraged to try the feature. A hands-on [[m:Special:MyLanguage/Event:Worklist Setup Workshop: Get Your Event Ready|Worklist Setup Workshop]] will take place on 18 August at 16:00 UTC and 19 August at 11:00 UTC. '''Updates for editors''' * [[Special:ShortPages]] displays short pages by their size, but in many cases it gets filled with disambiguations and soft redirects, making it harder to find the short articles themselves. Starting this weekend, you will be able to choose not to include an article in the special page by adding the magic word <bdi lang="zxx" dir="ltr"><code><nowiki>__EXPECTSHORTPAGE__</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T433203] * One new wiki has been created: a {{int:project-localized-name-group-wikipedia/en}} in [[d:Q3436680|Bole]] ([[w:bol:|<bdi lang="zxx" dir="ltr"><code><nowiki>w:bol:</nowiki></code></bdi>]]) [https://phabricator.wikimedia.org/T429921] * Starting the week of August 17, the page toolbar will wrap onto two lines when there is not enough horizontal space for all the buttons. This is a [[phab:T429518|fully merged patch from the Reader Experience team]] which aims to reduce crowding in the Vector 2022 toolbar, that may occur on some language Wikipedias at certain screen widths. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:16}} community-submitted {{PLURAL:16|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, uploading large files to Wikimedia Commons has become more stable and less prone to failure following some fixes related to the “Could not acquire lock” upload error. [https://phabricator.wikimedia.org/T386640] '''Updates for technical contributors''' * Debian Bullseye will reach the end of its Long Term Support on 31 August 2026. [[phab:T434103|Some Cloud VPS projects]] still have instances running Debian Bullseye. Maintainers of those projects are encouraged to migrate to Debian Bookworm or Debian Trixie. A [[wikitech:Help:Cloud VPS instance operating system migration|migration guide]] is available to help with the process, and users may also want to consider whether their workload is better suited to Toolforge. If you need help or cannot complete the migration by 31 August, please contact the Cloud VPS admins as soon as possible. [[listarchive:list/cloud-announce@lists.wikimedia.org/thread/RVIPQSYLKMSL5M46JP6NEJVGVE6I2RXQ/|Read more]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.16|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/34|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W34"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17 août 2026 à 23:03 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30922806 --> == Actualités techniques n° 2026-35 == <section begin="technews-2026-W35"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/35|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * La page [[Special:CreateAccount|Spécial:Créer_un_compte]] a été simplifiée dans le cadre des travaux en cours visant à moderniser le processus de création de compte. Le panneau affichant les statistiques du projet n'apparaît plus à côté du formulaire, que ce soit sur ordinateur ou sur mobile. Plusieurs tests portant sur la création de comptes ont montré qu'un formulaire plus simple aidait les nouveaux utilisateurs à mener à bien leur inscription. [https://phabricator.wikimedia.org/T433783] * Afin d'améliorer les performances de la page, les images ne se chargent désormais que lorsqu'elles sont visualisées. Cela signifie que les images situées plus bas dans un article ne se chargeront pas si le lecteur ne fait jamais défiler la page jusqu'à cette partie, ce qui peut avoir une incidence sur certains indicateurs liés aux images. [https://phabricator.wikimedia.org/T148047] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:42|la tâche soumise|les {{formatnum:42}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:42||s}} la semaine dernière]]. Par exemple, un problème empêchant l'affichage des vignettes d'images sur Abstract Wikipedia après le déplacement du fichier correspondant sur Wikimedia Commons a désormais été résolu. Les vignettes s'actualisent désormais correctement lorsque les fichiers sont déplacés. [https://phabricator.wikimedia.org/T433448] '''Actualités pour la contribution technique''' * La fiche d'informations sur l'utilisateur est une fonctionnalité qui permet aux modérateurs de consulter des informations sur les comptes d'utilisateurs. Jusqu'à présent, elle n'était disponible que dans des sections telles que l'historique des pages, les journaux et les modifications récentes. Désormais, il est également possible de [[mw:Special:MyLanguage/Help:Extension:CheckUser#User_Info_card_in_page_content|l'insérer dans le contenu d'une page]] à l'aide de la fonction d'analyse <bdi lang="zxx" dir="ltr"><code><nowiki>{{#uic:}}</nowiki></code></bdi>. Cela peut s'avérer particulièrement utile dans des modèles tels que [[:en:Template:Userlinks|<bdi lang="zxx" dir="ltr"><code><nowiki>{{Userlinks}}</nowiki></code></bdi>]] (ou leurs variantes spécialisées), car cela facilitera la compréhension du contexte relatif à un ou une utilisatrice sur les divers forums communautaires. La fiche ne s'affichera que pour les utilisateurs qui l'ont activée dans leurs [[Special:Preferences#mw-input-wpcheckuser-userinfocard-enable|préférences]]. [https://phabricator.wikimedia.org/T424466] * En raison des risques liés à la sécurité et à la confidentialité des utilisateurs, nous avons désactivé l'accès aux URL utilisant <bdi lang="zxx" dir="ltr"><code><nowiki>Special:MyPage</nowiki></code></bdi> (Spécial:Ma_page) avec l’argument <bdi lang="zxx" dir="ltr"><code><nowiki>action=raw</nowiki></code></bdi>. Si vous êtes concerné par cette mesure, demandez-vous s'il est possible d'adopter une autre approche. Les URL utilisant <bdi lang="zxx" dir="ltr"><code><nowiki>Special:MyPage</nowiki></code></bdi> restent accessibles et utilisables sans <bdi lang="zxx" dir="ltr"><code><nowiki>action=raw</nowiki></code></bdi>. Les URL de pages utilisateur spécifiées (par exemple, <bdi lang="zxx" dir="ltr"><code><nowiki>User:Myusername</nowiki></code></bdi>) peuvent toujours être utilisées avec <bdi lang="zxx" dir="ltr"><code><nowiki>action=raw</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T120386] * Suite à une mise à jour, le logiciel de création de vignettes a été amélioré. En effet, <bdi lang="zxx" dir="ltr"><code><nowiki>librsvg</nowiki></code></bdi> a été mis à jour vers la version 2.60 et <bdi lang="zxx" dir="ltr"><code><nowiki>ImageMagick</nowiki></code></bdi> vers la version 7. Cela a permis la résolution d’un certain nombre de bugs de longue date liés à la création de vignettes, tels que des erreurs de rendu. [https://phabricator.wikimedia.org/T419815#12222841] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.17|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/35|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W35"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 24 août 2026 à 22:45 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30961208 --> == Actualités techniques n° 2026-36 == <section begin="technews-2026-W36"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/36|D’autres traductions]] sont disponibles. '''En lumière cette semaine''' * Un nouveau format pour la liste de souhaits de la communauté est ouvert aux commentaires. Vous pouvez [[m:Special:MyLanguage/Community Wishlist/Community Wishlist 2027|lire les idées proposées sur Meta]]. Ce nouveau processus prévoit d'améliorer la manière dont les souhaits sont triés, votés et priorisés d'une manière transparente et équilibrée entre les familles de projets et les éditions linguistiques. Cette consultation est ouverte pendant deux semaines. '''Actualités pour la contribution''' * La dernière version de l'application Wikipédia pour Android comprend des mises à jour de la fonctionnalité «Enregistrés», qui rapprochent l'expérience d'enregistrement de l'application de celle proposée sur iOS et sur le Web. Cette mise à jour repense l'onglet «Enregistrés» en proposant une vue «Tous les articles», supprime la liste de lecture par défaut «Enregistrés», renomme les listes de lecture «Collections» et modernise l'expérience de sauvegarde des articles. [https://phabricator.wikimedia.org/T420788] * La fonctionnalité [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Listes de lecture]] a été activée pour tous les utilisateurs connectés sur les versions de Wikipédia en bengali, chinois, tchèque et vietnamien le 25 août, après plusieurs mois en tant que fonctionnalité bêta. Les listes de lecture seront disponibles pour tous les utilisateurs connectés sur les versions de Wikipédia en arabe, français et indonésien le 1er septembre, suivies par la Wikipédia en anglais le 14 septembre, et toutes les autres versions de Wikipédia le 28 septembre. * À la fin du mois, certains lecteurs non connectés sur les versions en bengali, tchèque, persan, anglais et polonais de Wikipédia utilisant l'habillage Minerva sur mobile verront une [[mw:Special:MyLanguage/Readers/Reader_Growth/Minimal_Minerva|barre de navigation mise à jour]] dans le cadre d'un [[w:A/B test|test A/B]]. Le test comparera la barre de navigation actuelle avec une nouvelle version conçue pour faciliter la recherche d'informations plus rapidement. L'objectif est de déterminer si ces changements encouragent les lecteurs à revenir plus souvent. Cette expérience n'aura aucune incidence sur l'expérience des lecteurs et/ou des rédacteurs connectés. * Les contributeurs qui gèrent les redirections, les modèles et les catégories utilisés sur les pages de redirection disposent désormais de meilleurs moyens pour trouver et organiser les redirections. Auparavant, il n'était pas possible de rechercher les pages de redirection. Deux nouveaux mots-clés de recherche, <bdi lang="zxx" dir="ltr"><code><nowiki>onlyredirects:</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>withredirects:</nowiki></code></bdi>, permettent désormais de rechercher directement les redirections et peuvent être combinés avec des mots-clés existants tels que <bdi lang="zxx" dir="ltr"><code><nowiki>incategory:</nowiki></code></bdi>, <bdi lang="zxx" dir="ltr"><code><nowiki>intitle:</nowiki></code></bdi> et <bdi lang="zxx" dir="ltr"><code><nowiki>insource:</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T204089] * Les outils de recherche ISBN pour générer des citations ne fonctionnaient pas récemment en raison de problèmes de service externe. Les développeurs travaillent sur des solutions. [https://phabricator.wikimedia.org/T435179] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:30|la tâche soumise|les {{formatnum:30}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:30||s}} la semaine dernière]]. Par exemple, un problème où la recherche de pages par catégorie à l'aide de <bdi lang="zxx" dir="ltr"><code><nowiki>deepcat</nowiki></code></bdi> pouvait ne renvoyer aucun résultat ou des résultats sans rapport a été corrigé. [https://phabricator.wikimedia.org/T414859] '''Actualités pour la contribution technique''' * Le domaine des URL pour les miniatures passe de upload.wikimedia.org à thumb.wikimedia.org. Les anciennes URL continueront de fonctionner pour le moment, mais MediaWiki utilisera le nouveau domaine à la place. Les URL vers d'autres types de médias tels que les fichiers originaux, les vidéos et les transcodages seront toujours servies depuis upload.wikimedia.org. [https://phabricator.wikimedia.org/T427465] * L'API Math de Wikimédia [https://www.mediawiki.org/w/index.php?api=wmf-math%2Fv1&title=Special%3ARestSandbox] est désormais obsolète. Ces points de terminaison seront complètement arrêtés d’ici la fin de septembre 2026. Les développeurs qui appellent ces points de terminaison devraient passer à des solutions alternatives de rendu mathématique, telles que le [https://developer.mozilla.org/en-US/docs/Web/MathML MathML] natif ou [https://www.mathjax.org/ MathJax]. Les installations tierces de MediaWiki utilisant l'extension Math pour le rendu des formules doivent effectuer une mise à jour vers la version 1.43+ afin d'éviter toute interruption de service. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.18|MediaWiki]] '''En détails''' * Lisez-en plus sur [[mw:Special:MyLanguage/Edit_check/TextMatch|TextMatch]] dans un article de Diff intitulé [[diffblog:2026/08/28/custom-edit-suggestions-for-every-wiki-how-communities-are-shaping-suggestion-mode-with-textmatch/|Suggestions de modifications personnalisées pour chaque wiki : comment les communautés façonnent le mode Suggestion avec TextMatch]]. '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/36|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W36"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 31 août 2026 à 22:53 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30990659 --> == Actualités techniques n° 2026-37 == <section begin="technews-2026-W37"/><div class="plainlinks"> Dernières '''[[m:Special:MyLanguage/Tech/News|actualités techniques]]''' de la communauté technique de Wikimedia. N’hésitez pas à informer les autres utilisateurs de ces changements. Certains changements ne vous concernent pas. [[m:Special:MyLanguage/Tech/News/2026/37|D’autres traductions]] sont disponibles. '''Actualités pour la contribution''' * La fonctionnalité [[mw:Special:MyLanguage/Help:Growth/Tools/Add_a_link|Ajouter un lien]] a été améliorée pour les utilisateurs de Wikipédia en anglais, avec une meilleure détection des liens présentant des différences de majuscules. Cela permettra de réduire les suggestions ambiguës dues aux différences de majuscules dans les titres d'articles, notamment ceux consacrés aux biens culturels. Une deuxième phase d'améliorations est prévue, qui permettra également de préparer cette fonctionnalité en vue de son déploiement dans d'autres langues. [https://phabricator.wikimedia.org/T435526#12240876] [https://phabricator.wikimedia.org/T434259] * La fonctionnalité [[mw:Special:MyLanguage/Article_guidance|Guide des articles]] sera activée par défaut pour les contributeurs débutants sur Wikipédia en anglais simplifié et en turc à compter du 10 septembre 2026, à la suite d'[[mw:Special:MyLanguage/Article_guidance/Updates#Summary_of_experiment_result|une expérience]]. Les contributeurs débutants ayant effectué entre 0 et 99 modifications verront automatiquement s'afficher cette fonctionnalité lorsqu'ils cliqueront sur un lien rouge ou utiliseront l'option « [[tr:Vikipedi:Madde_sihirbazı|Madde oluşturto]] » sur Wikipédia en turc pour créer un nouvel article. Ce changement vise à aider les contributeurs débutants à créer des articles de meilleure qualité, conformes aux normes de chaque Wikipédia. [[phab:maniphest/query/z3tcTjmLMxk5/#R|D'autres améliorations]] seront apportées en fonction des résultats de l'expérience et des retours de la communauté. * L'outil [https://pageviews.wmcloud.org « Analyse des pages vues »], qui permet aux utilisateurs de comparer le nombre de pages vues sur plusieurs pages, fête cette année ses 10 ans et s'est enrichi de plusieurs nouvelles fonctionnalités. Parmi celles-ci figurent [[toolforge:wikinav|WikiNav]], qui donne un aperçu de la manière dont les lecteurs de Wikipédia explorent le contenu, les statistiques d'édition dans [https://pageviews.wmcloud.org/siteviews?range=latest-30&sites=en.wikipedia.org « Vues du site »], la possibilité de [https://pageviews.wmcloud.org/massviews?source=wikiproject&project=en.wikipedia.org rechercher des articles appartenant à un projet Wiki] et la prise en charge du mode sombre. [https://phabricator.wikimedia.org/T378549] * Une barre de navigation [[mw:Special:MyLanguage/Readers/Reader_Growth/Minimal_Minerva|Minerva, visuellement simplifiée]] est actuellement testée auprès des lecteurs non connectés utilisant la version mobile des Wikipédias en bengali, tchèque, anglais, farsi et polonais. Cette expérience vise à déterminer si la simplification de la navigation permet de fidéliser davantage les lecteurs. Le test se déroulera du 31 août au 28 septembre et ne nécessite aucune intervention de la part des utilisateurs. * [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] travaille à l'amélioration des [[en:Wikipedia:VisualEditor/Named references|noms de référence générés automatiquement dans VisualEditor]]. Les contributeurs ne remarqueront qu'un léger changement à partir de cette semaine. Lors de l'ajout de noms de référence automatiques, la numérotation commencera par <bdi lang="zxx" dir="ltr"><code><nowiki>:1</nowiki></code></bdi> au lieu de <bdi lang="zxx" dir="ltr"><code><nowiki>:0</nowiki></code></bdi>. Pour en savoir plus, consultez la [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|page du projet]]. [https://gerrit.wikimedia.org/r/c/VisualEditor/VisualEditor/+/1332704] * Tous les wikis seront [[m:Special:MyLanguage/Tech/Server switch|en lecture seule pendant quelques minutes]] le 23 septembre. Cette opération est prévue à 14h UTC. De plus amples informations seront publiées dans la rubrique « Tech News » et seront également mises en ligne sur chaque wiki au cours des prochaines semaines. [https://phabricator.wikimedia.org/T433363] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Voir {{PLURAL:25|la tâche soumise|les {{formatnum:25}} tâches soumises}} par la communauté [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|résolue{{PLURAL:25||s}} la semaine dernière]]. Par exemple, un problème lié au fait que [[mw:Special:MyLanguage/Parsoid|Parsoid]] pouvait mal gérer les balises nowiki imbriquées, entraînant la perte de contenu et l'affichage de texte indésirable, a désormais été corrigé. [https://phabricator.wikimedia.org/T435116] '''Actualités pour la contribution technique''' * Les administrateurs de l'interface peuvent configurer les gadgets à partir de [[MediaWiki:Gadgets-definition]]. Le format de définition a été mis à jour et ne nécessite plus l'option <bdi lang="zxx" dir="ltr"><code><nowiki>ResourceLoader</nowiki></code></bdi>, car les gadgets sont toujours chargés via <bdi lang="zxx" dir="ltr"><code><nowiki>ResourceLoader</nowiki></code></bdi>. Cela simplifie la configuration des gadgets en supprimant une option qui n'est plus nécessaire, ce qui facilite la tâche des administrateurs lors de la définition des gadgets. [https://phabricator.wikimedia.org/T298199] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Sujet récurrent]] Détail des mises-à-jour à venir cette semaine : [[mw:MediaWiki 1.47/wmf.19|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Actualités techniques]]''' préparées par les [[m:Special:MyLanguage/Tech/News/Writers|rédacteurs des actualités techniques]] et postées par [[m:Special:MyLanguage/User:MediaWiki message delivery|robot]]. [[m:Special:MyLanguage/Tech/News#contribute|Contribuer]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/37|Traduire]]&nbsp;• [[m:Tech|Obtenir de l’aide]]&nbsp;• [[m:Talk:Tech/News|Donner son avis]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|S’abonner ou se désabonner]].'' </div><section end="technews-2026-W37"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 7 septembre 2026 à 20:44 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=31008437 --> == <span lang="en" dir="ltr">Tech News: 2026-38</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W38"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/38|Translations]] are available. '''Weekly highlight''' * The Future Audiences team has started a [[en:Special:MyLanguage/Wikipedia:Village pump (proposals)#New proposed experiment to let readers know about “Google preferred sources”|discussion on English Wikipedia]] about a proposed new experiment to show a temporary notice about the new [https://blog.google/products-and-platforms/products/search/original-high-quality-content-search/ Google Preferred Sources] feature to Wikipedia readers coming from Google. The experiment is to test whether this notice makes visitors come back to Wikipedia more often. Preferred Sources feature lets users choose websites they trust so Google can highlight content from those sources more prominently in Search and AI experiences. We are interested in testing this on other languages that Google supports and would welcome assistance with starting conversations on other wikis. If interested, please reach out to Future Audiences on the [[m:Special:MyLanguage/Future Audiences/Preferred sources|talk page]]. '''Updates for editors''' * The chat platform Discord is releasing a new self-service framework that websites can use to specify how their links should look when shared on Discord. The Future Audiences team is planning to start using this new framework to improve how Wikipedia links look when shared on Discord, giving better attribution and credit to contributors. The link appearance and behavior won't change in the first phase of this project as we want to first collect some baseline data to assess the impact of future changes. However, if community members who are active on Discord spot any issues, they can reach out on [[phab:tag/future-audiences/|Phabricator]] or [[m:Special:MyLanguage/Future Audiences|Metawiki]]. * The Reader Growth team will be running an experiment to test whether [[mw:Special:MyLanguage/Readers/Reader_Growth/Compact Lead|compacting article lead sections on mobiles]] with the addition of a "read more" button improves reader retention. The test will begin on September 17 on Arabic, Spanish, French, Indonesian, Italian, Japanese, Portuguese, Vietnamese, and Chinese Wikipedias and will run for four weeks. * All wikis will be [[m:Special:MyLanguage/Tech/Server switch|read-only for a few minutes]] on September 23. This is planned at 14:00 UTC. More information will be published in Tech News and will also be posted on individual wikis in the coming week. [https://phabricator.wikimedia.org/T433363] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:28}} community-submitted {{PLURAL:28|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where [https://wikistats.wmcloud.org/ Wikistats] for Wikipedias was returning an HTTP 500 error and could not be reached, has now been fixed. [https://phabricator.wikimedia.org/T435959] '''Updates for technical contributors''' * Developers who maintain a tool that queries the Wikimedia Commons links tables need to update their code to connect to the new x4 database cluster. The links tables have been moved from the s4 cluster to x4, and will no longer receive updates on s4. The page and redirect tables remain available on both clusters. A wiki replica for the x4 cluster will be set up afterwards. The change is being made because the s4 cluster has grown too large to operate efficiently. You can [[wikitech:Special:MyLanguage/News/2026 Commons links tables database split|read more]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.20|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/38|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W38"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 14 septembre 2026 à 17:31 (CEST) <!-- Message envoyé par User:STei (WMF)@metawiki en utilisant la liste sur https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=31039826 --> 6h8myn54q0vpxap3dbcwxeg4fimfuei Catégorie:Recettes de cuisine à base de potimarron 14 84508 772208 2026-09-14T17:52:07Z Cdang 1202 cat 772208 wikitext text/x-wiki {{DEFAULTSORT:potimarron}} [[Catégorie:Recettes de cuisine par ingrédient]] r7sux5wwl0vxflykghyx3enmchnd7lf Livre de cuisine/Risotto au potimarron 0 84509 772210 2026-09-14T18:07:55Z Cdang 1202 Page créée avec « {{SansGluten}} {{Livre de cuisine}} == Ingrédients == * 350 kg de {{i|riz}} rond * 500 g de {{i|potimarron}} * 1 oignon blanc * ½ ℓ de bouillon de légume * 1 verre de lait, ou de la crème fraîche * {{i|parmesan}} râpé, typiquement une cuiller à soupe par personne * persil haché == Préparation == * Laver le potimarron, le couper en deux et enlever les graines. Le couper en tranches fines. * Hacher menu l'oignon et le faire revenir dans 20 g de beur... » 772210 wikitext text/x-wiki {{SansGluten}} {{Livre de cuisine}} == Ingrédients == * 350 kg de {{i|riz}} rond * 500 g de {{i|potimarron}} * 1 oignon blanc * ½ ℓ de bouillon de légume * 1 verre de lait, ou de la crème fraîche * {{i|parmesan}} râpé, typiquement une cuiller à soupe par personne * persil haché == Préparation == * Laver le potimarron, le couper en deux et enlever les graines. Le couper en tranches fines. * Hacher menu l'oignon et le faire revenir dans 20 g de beurre. * Ajouter le potimarron. * Faire cuire à feux doux en ajoutant un peu de bouillon, en mélangeant. Saler éventuellement. * Quand le potimarron est défait, ajouter le riz et faire cuire une vingtaine de minutes en ajoutant le bouillon chaud au fur et à mesure. Remuer, le riz doit boire le bouillon à chaque ajout. * Ajouter le lait et faire cuire à feu vif. * Ajouter le parmesan et le persil, éventuellement poivrer. {{DEFAULTSORT:risotto de potimarron}} [[Catégorie:Recettes végétariennes]] h8udm0m0i2tkk1np69hgm8zfnk4gewf Coulisses 0 84510 772222 2026-09-15T07:37:21Z Xhungab 23827 Création des coulisses de wikibook 772222 wikitext text/x-wiki <templatestyles src="Main Page/minerva.css" /><div style="display: none;"> Version : {{CURRENTTIMESTAMP}} ({{CURRENTHOUR}}h.. UTC) <!-- Page à purger tous les jours pour tous. --> Cette page a besoin de __NOCACHE__ </div> {| class="flexible" style="width:100%; margin:0px; padding:0px 5px 5px 5px;" |<div style="width:auto; text-align:center;"><div id="mf-banner1" style="font-size:162%; padding:0.1em;">Bienvenue sur [[Wikilivres:Présentation|Wikilivres]],</div><div id="mf-banner2" style="font-size:95%; margin-top:0.2em;">{{Bloc|La bibliothèque}} {{Bloc|de livres pédagogiques libres}} {{Bloc|que chacun peut améliorer.}}</div><div style="text-align:center; font-size:95%; margin:0;">[[Wikilivres:Présentation|Wikilivres ?]] • [[Wikilivres|Aide]] • [[Wikilivres:Accueil|Communauté]]</div><div id="pagecount" style="font-size:85%;">[[:Catégorie:Livres par titre|{{NUMBEROFBOOKS}} livres]] contenant [[Spécial:Toutes les pages|{{NUMBEROFARTICLES}} pages]].</div></div>'''Dans cette page, vous trouverez la liste de tous les livres disponibles sur Wikibook. Vous trouverez en particulier des livres en construction, vous pourrez entrer en contact avec les auteurs. Vous trouverez aussi des livres en construction sans auteur actif que vous pourrez compléter.''' {| class="flexible" | style="width:25%;" |[[Fichier:Book_icon.png|lien=Wikilivres:Tous_les_livres|100x100px]] | style="width:25%;" | * [[:Catégorie:Classe 7 - Arts. Divertissements. Sports|Arts]] * [[:Catégorie:Loisirs|Loisirs]] * [[:Catégorie:Histoire|Histoire]] | style="width:25%;" | * [[:Catégorie:Classe 8 - Langue. Linguistique. Littérature|Langues]] * [[:Catégorie:Technologie|Technologie]] * [[:Catégorie:Informatique|Informatique]] | style="width:25%;" | * [[:Catégorie:Classe 5 - Mathématique. Sciences exactes et naturelles|Sciences]] * [[:Catégorie:Sciences humaines|Sciences humaines]] * '''[[Wikilivres:Tous les livres|Tous les livres]]''' |} <div style="width:100%; margin:0px; padding:0px 5px 5px 5px;"><div id="mf-index" title="Index des livres" class="only_mobile"> * [[:Catégorie:Classe 7 - Arts. Divertissements. Sports|Arts]] * [[:Catégorie:Informatique|Informatique]] * [[:Catégorie:Classe 8 - Langue. Linguistique. Littérature|Langues]] * [[:Catégorie:Loisirs|Loisirs]] * [[:Catégorie:Classe 5 - Mathématique. Sciences exactes et naturelles|Sciences]] * [[:Catégorie:Sciences humaines|Sciences humaines]] * [[:Catégorie:Technologie|Technologie]] * '''[[Wikilivres:Tous les livres|Tous les livres]]''' </div><div class="projects only_nonmobile">{{Projets Wikimedia}}</div><div class="projects only_mobile">{{Projets Wikimedia|Mobile}}</div><div style="margin-top:12px;border:1px solid #4faff380;border-radius:10px;text-align:center;" class="plainlinks"> [[Wikilivres:Avertissements généraux|Wikilivres ne garantit pas le contenu mis en ligne]].<div style="font-size:85%;">La [{{fullurl:wikimedia:Accueil|uselang=fr}} Wikimedia Foundation] étant un hébergeur, elle ne saurait être tenue responsable des erreurs éventuelles contenues sur ce site. Chaque rédacteur est responsable de ses contributions. </div></div> </div> |} lisbqtxjmtfrddw0595ntfnymk3up7l 772229 772222 2026-09-15T07:51:08Z Xhungab 23827 772229 wikitext text/x-wiki <templatestyles src="Main Page/minerva.css" /><div style="display: none;"> Version : {{CURRENTTIMESTAMP}} ({{CURRENTHOUR}}h.. UTC) <!-- Page à purger tous les jours pour tous. --> Cette page a besoin de __NOCACHE__ </div> {| class="flexible" style="width:100%; margin:0px; padding:0px 5px 5px 5px;" |<div style="width:auto; text-align:center;"><div id="mf-banner1" style="font-size:162%; padding:0.1em;">Bienvenue sur [[Wikilivres:Présentation|Wikilivres]],</div><div id="mf-banner2" style="font-size:95%; margin-top:0.2em;">{{Bloc|La bibliothèque}} {{Bloc|de livres pédagogiques libres}} {{Bloc|que chacun peut améliorer.}}</div><div style="text-align:center; font-size:95%; margin:0;">[[Wikilivres:Présentation|Wikilivres ?]] • [[Wikilivres|Aide]] • [[Wikilivres:Accueil|Communauté]]</div><div id="pagecount" style="font-size:85%;">[[:Catégorie:Livres par titre|{{NUMBEROFBOOKS}} livres]] contenant [[Spécial:Toutes les pages|{{NUMBEROFARTICLES}} pages]].</div></div>'''Dans cette page, vous trouverez la liste de tous les livres disponibles sur Wikibook. Vous trouverez en particulier des livres en construction, vous pourrez entrer en contact avec les auteurs. Vous trouverez aussi des livres en construction sans auteur actif que vous pourrez compléter.''' {| class="flexible" | style="width:25%;" |[[Fichier:Book_icon.png|lien=Wikilivres:Tous_les_livres|100x100px]] | style="width:25%;" | * [[:Catégorie:Classe 7 - Arts. Divertissements. Sports|Arts]] * [[:Catégorie:Loisirs|Loisirs]] * [[:Catégorie:Histoire|Histoire]] | style="width:25%;" | * [[:Catégorie:Classe 8 - Langue. Linguistique. Littérature|Langues]] * [[:Catégorie:Technologie|Technologie]] * [[:Catégorie:Informatique|Informatique]] | style="width:25%;" | * [[:Catégorie:Classe 5 - Mathématique. Sciences exactes et naturelles|Sciences]] * [[:Catégorie:Sciences humaines|Sciences humaines]] * '''[[Wikilivres:Tous les livres|Tous les livres]]''' |} <div style="width:100%; margin:0px; padding:0px 5px 5px 5px;"><div id="mf-index" title="Index des livres" class="only_mobile"> * [[:Catégorie:Classe 7 - Arts. Divertissements. Sports|Arts]] * [[:Catégorie:Informatique|Informatique]] * [[:Catégorie:Classe 8 - Langue. Linguistique. Littérature|Langues]] * [[:Catégorie:Loisirs|Loisirs]] * [[:Catégorie:Classe 5 - Mathématique. Sciences exactes et naturelles|Sciences]] * [[:Catégorie:Sciences humaines|Sciences humaines]] * [[:Catégorie:Technologie|Technologie]] * '''[[Wikilivres:Tous les livres|Tous les livres]]''' </div><div class="projects only_nonmobile">{{Projets Wikimedia}}</div><div class="projects only_mobile">{{Projets Wikimedia|Mobile}}</div><div style="margin-top:12px;border:1px solid #4faff380;border-radius:10px;text-align:center;" class="plainlinks"> [[Wikilivres:Avertissements généraux|Wikilivres ne garantit pas le contenu mis en ligne]].<div style="font-size:85%;">La [{{fullurl:wikimedia:Accueil|uselang=fr}} Wikimedia Foundation] étant un hébergeur, elle ne saurait être tenue responsable des erreurs éventuelles contenues sur ce site. Chaque rédacteur est responsable de ses contributions. </div></div> </div> |} [[Catégorie:Wikilivres]] 0tzy7kess7d6jezzuwz8kq4lemrshja