Wikipedia pcdwiki https://pcd.wikipedia.org/wiki/Accueul MediaWiki 1.47.0-wmf.15 first-letter Média Spécial Discussion Utilisateur Discussion utilisateur Wikipedia Discussion Wikipedia Fichier Discussion fichier MediaWiki Discussion MediaWiki Modèle Discussion modèle Aide Discussion aide Catégorie Discussion catégorie TimedText TimedText talk Module Discussion module Event Event talk Module:Langue 828 7041 79897 74891 2026-08-13T15:27:26Z Geoleplubo 204 màj 79897 Scribunto text/plain -- luacheck: globals mw, no max line length local Langue = { } local dataLangue = mw.loadData( 'Module:Langue/Data' ) -- attention, plusieurs modules cherchent « class="error" » pour détecter si ce module a retourné une erreur -- pour trouver ces codes, on peut rechercher dans le namespace Module : insource:Langue insource:/(find|match)\([^)]+error/ local langErrorMess = '<span class="error">langue non reconnue : %s</span>' -- Renvoie le premier paramètre de Frame, que celui-ci ait été passé au module par invoke, directement au modèle, -- ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string. -- Si aucun de ces arguments ne contient de chaine, la fonction renvoie nil. -- Si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscules. local function premierParametre( frame, normalize ) local arg if type( frame ) == 'table' then arg = ( frame.getParent and ( frame.args[1] or frame:getParent().args[1] ) ) or frame[1] elseif type( frame ) == 'string' then arg = frame end if type( arg ) ~= 'string' then arg = nil end if arg and normalize then arg = mw.ustring.lower( mw.text.trim( arg ) ) end return arg end -- Retourne une table contenant le code de langue principal et la liste des subcodes -- si le code de langue principal n'est pas reconnu, retourne nil. local function determinationCode( langue ) if type( langue ) == 'string' and langue ~= '' then local tabCode = mw.text.split( langue, '-' ) local tabLangue = dataLangue[ mw.ustring.lower( tabCode[1] ) ] if tabLangue and tabLangue.code then tabCode[1] = tabLangue.code if tabLangue.invalide then tabCode.invalide = true end return tabCode end end end -- Voir Modèle:Code langue -- Paramètre : -- 1 : nom de langue. function Langue.codeLangue( frame ) local arg = premierParametre( frame, true ) local tabCode = determinationCode( arg ) return ( tabCode and table.concat( tabCode, '-' ) ) or arg or '' end -- Voir Modèle:Code langue 2 -- Paramètre : -- 1 : nom de langue. function Langue.codeLangue2( frame ) local arg = premierParametre( frame, true ) local tabCode = determinationCode( arg ) return ( tabCode and table.concat( tabCode, '-' ) ) or '' end -- Voir Modèle:Direction langue -- Paramètre : -- 1 : nom de langue ou code IETF. function Langue.directionLangue( frame ) local arg = premierParametre( frame, true ) if type( arg ) ~= 'string' or arg == '' then return 'ltr' end -- séparation du code de langue en code principal et les différents subcodes. local tabCode = determinationCode( arg ) if tabCode then -- on essaye de savoir si la direction est de droite à gauche local codeScript = tabCode[2] if codeScript and string.len( codeScript ) == 4 and dataLangue[ 'rtl script' ] then -- il y a un subcode d'écriture, c'est lui qui est pris en compte codeScript = string.upper( string.sub( codeScript, 1, 1 ) ) .. string.sub( codeScript, 2 ) if dataLangue[ 'rtl script' ][ codeScript ] then return 'rtl' end else -- il n'y a pas de subcode d'écriture, on prend en compte le code de langue principal. local tabLangue = dataLangue[ tabCode[1] ] if tabLangue and tabLangue.rtl then return 'rtl' end end end -- la langue n'est pas écrite de droite à gauche, donc ltr. return 'ltr' end local function getDataLangue( frame ) -- Obtenir le code de la langue local codeLangue = premierParametre( frame, true ) -- Si le paramètre est incorrect, retourner un message d'erreur if type( codeLangue ) ~= 'string' or codeLangue == '' then return nil, '<span class="error">langue non précisée</span>' end -- Obtenir le tableau contenant les informations sur la langue local tabLangue = dataLangue[ codeLangue ] -- Si le code étendu n'est pas trouvé, chercher à nouveau avec le code racine if not tabLangue then tabLangue = dataLangue[ mw.ustring.match( codeLangue, '^(%a-)%-' ) ] end -- Si on n'a toujours rien trouvé, retourner un message d'erreur if not tabLangue then return nil, langErrorMess:format( codeLangue ) end return tabLangue end -- Fournit un wikilien vers l'article traitant d'une langue à partir de son code. -- Voir Modèle:Lien langue -- Paramètre : -- 1 : code IETF de langue. function Langue.lienLangue( frame ) local tabLangue, erreur = getDataLangue( frame ) if not tabLangue then return erreur end -- Créer un lien pour la langue depuis le tableau if type( tabLangue.page ) == 'string' then if tabLangue.page ~= '' then return '[[' .. tabLangue.page .. '|' .. tabLangue.nom .. ']]' else return tabLangue.nom end else return '[[' .. tabLangue.nom .. ']]' end end -- Récupère le nom d'une langue à partir de son code. -- Voir Modèle:Nom langue -- Paramètre : -- 1 : code IETF de langue. -- Retourne : -- Le nom de la langue, un message d'erreur sinon. function Langue.nomLangue( frame ) local tabLangue, erreur = getDataLangue( frame ) if not tabLangue then return erreur end -- Extraire le nom de la langue depuis le tableau return tabLangue.nom end -- Récupère le nom de l'article portant sur une langue à partir de son code. -- Voir Modèle:Article langue -- Paramètre : -- 1 : code IETF de langue. -- Retourne : -- Le nom de l'article portant sur la langue -- si le code est trouvé, un message d'erreur sinon. function Langue.articleLangue( frame ) local tabLangue, erreur = getDataLangue( frame ) if not tabLangue then return erreur end -- Extraire le titre de l'article depuis le tableau if type( tabLangue.page ) == 'string' and tabLangue.page ~= '' then return tabLangue.page else return tabLangue.nom end end -- Voir Modèle:Langue -- Paramètres : -- 1 : code IETF de langue ; -- texte ou 2 : texte dans cette langue ; -- trans : translittération du texte ; -- dir : direction de la langue (obsolète : peut être en paramètre 1, avec code en 2 et texte en 3). function Langue.langue( frame ) local args = ( frame.getParent and frame:getParent().args ) or frame -- préparation pour appel par modèle ou direct. local code = mw.ustring.lower( mw.text.trim( args[1] or '' ) ) local texte = args.texte or '' if texte == '' then texte = args[2] or '' end local dir = args.dir local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true } local categorisation = namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] and not args.nocat -- Décalage des paramètres si code contient la direction du texte (obsolète mais toujours possible). if code == 'ltr' or code == 'rtl' then dir = code code = mw.ustring.lower( mw.text.trim( args[2] ) or '' ) texte = args[3] or '' end local codeArg = code -- sortie immédiate s'il n'y a pas de texte if texte == '' then if categorisation then return '<span class="error">erreur du modèle [[modèle:Langue|{{langue}}]] : texte absent</span>[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Langue]]' else return '' end end -- récursion si texte contient des blocs if texte:find( '\n', nil, true ) and texte:find( '\n *\n' ) or texte:find( '\n[*#:]' ) then -- les parenthèses permettent d'éliminer la seconde valeur retournée par gsub (nombre de remplacements) return ( texte:gsub( '(\n?[*#:]?%s*)([^\n]+)', function ( init, ligne ) return init .. Langue.langue{ code, ligne } end ) ) end -- Si la langue est reconnue, la valeur de la table est prise en compte (permet de corriger les noms de langue en toutes lettres). local tabCode = determinationCode( code ) local tabLangue if tabCode then code = table.concat( tabCode, '-' ) tabLangue = dataLangue[ tabCode[1] ] local codeScript = tabCode[2] -- Si codeScript est bien un style d'écriture (len = 4) on applique sa direction if codeScript and string.len( codeScript ) == 4 and dataLangue[ 'rtl script' ] then -- formatage type Latn correspondant au format dans dataLangue[ 'rtl script' ] codeScript = string.upper( string.sub( codeScript, 1, 1 ) ) .. string.sub( codeScript, 2 ) tabLangue = { code = tabLangue.code, rtl = dataLangue[ 'rtl script' ][ codeScript ], invalide = tabLangue.invalide } end end -- Préparation du rendu de direction du texte. dir = dir and dir:lower() if dir ~= 'ltr' and dir ~= 'rtl' then dir = ( tabLangue and tabLangue.rtl and 'rtl' ) end -- Compilation du texte à retourner. local html = mw.html.create( '' ) if code == '' then html:wikitext( texte ) else local span = mw.html.create( 'span' ) :addClass( 'lang-' .. code ) :attr( 'lang', code ) :attr( 'dir', dir ) :wikitext( texte ) if args.class and args.class ~= '' then span:addClass( args.class ) end html:node( span ) -- Translittération. if ( args.trans or '' ) ~= '' then local trans = args.trans:gsub( "^''%f[^'](.+)%f[']''$", "%1" ) html:wikitext( " (''" ) :tag( 'span' ) :addClass( 'transcription lang-' .. code ) :attr( 'lang', code .. '-Latn' ) :attr( 'dir', 'ltr' ) :wikitext( trans ) :done() :wikitext( "'')" ) end end -- Ajout de la catégorie Page avec code de langue invalide si le code langue non reconnu ou invalide. if categorisation and ( type( tabLangue ) ~= 'table' or tabCode.invalide ) then local erreur = string.format( langErrorMess, codeArg ) if codeArg == '' then erreur = '<span class="error">langue non précisée</span>' end html:wikitext( '[[Catégorie:Page avec code de langue invalide|Langue]] ' .. erreur ) end return tostring( html ) end -- Alias nom de fonction Langue.lang = Langue.langue -- Voir Modèle:Indication de langue -- Paramètres : -- 1 : nom de langue ; -- 2 : code IETF ; -- texte : texte dans cette langue ; -- dir : direction de la langue. function Langue.indicationDeLangue( frame ) local args = ( frame.getParent and frame:getParent().args ) or frame local nomLangue = mw.text.trim( args[1] or '' ) local code = mw.text.trim( args[2] or '' ) local texte = args.texte local dir = args.dir -- Cas où le premier et/ou le deuxième paramètre est vide. if code == '' and nomLangue == '' then return texte elseif nomLangue == '' then nomLangue = dataLangue[ mw.ustring.lower( code ) ] nomLangue = (nomLangue and nomLangue.nom or '???') elseif code == '' then code = dataLangue[ nomLangue ] code = ( code and code.code or '' ) if code == '' then return texte end end -- Gestion du texte. if texte and texte ~= '' then texte = '\194\160' .. Langue.lang{ code, dir = dir, texte = texte } else texte = '' end -- Compilation de l'indicateur de langue et du texte. local html = mw.html.create() html:tag( 'abbr' ) :addClass( 'abbr' ) :addClass( 'indicateur-langue' ) :attr( 'title', 'Langue : ' .. nomLangue ) :wikitext( '(' .. code .. ')' ) :done() :wikitext( texte ) return tostring( html ) end -- Voir Modèle:Mul -- Paramètres : codes IETF ou noms de langue, en nombre indéfini (string ou nil uniquement). function Langue.indicationMultilingue( frame ) local args = (frame.getParent and frame:getParent().args) or frame local listeNom = { } local listeCode = { } -- Valeur par défaut du premier paramètre = 'mul'. local code = mw.text.trim( args[1] or '' ) if code == '' then code = 'mul' end local maxLang = tonumber(args.maxLang) or nil if not args[2] and not dataLangue[ mw.ustring.lower( code ) ] then local split = mw.text.split( code, '[+,;:/ .]+' ) if #split > 1 then split.maxLang = maxLang return Langue.indicationMultilingue( split ) end end -- Ajout des noms et codes de langue de chaque paramètre dans listeNom et ListeCode. local i = 1 repeat code = mw.ustring.lower( code ) local tabLangue = dataLangue[ code ] if not tabLangue then code = mw.text.split( code, '-' )[1] tabLangue = dataLangue[ code ] end if type( tabLangue ) == 'table' then table.insert( listeNom, tabLangue.nom ) table.insert( listeCode, tabLangue.code ) else table.insert( listeNom, '???' ) local erreur = string.format( langErrorMess, code ) table.insert( listeCode, erreur ) end i = i + 1 code = mw.text.trim( args[i] or '' ) until code == '' -- Préparation et renvoi du texte. local n = #listeCode if n == 0 then return '' end if maxLang and n > maxLang then listeCode = {'mul'} end local plusieurs = ( n > 1 ) local html = mw.html.create( 'abbr' ) :addClass( 'abbr' ) :addClass( 'indicateur-langue' ) :attr( 'title', 'Langue' .. ( plusieurs and 's' or '' ) .. ' : ' .. mw.text.listToText( listeNom ) ) :wikitext( '(' .. table.concat( listeCode, '\194\160+\194\160' ) .. ')' ) return tostring( html ) end -- Voir Modèle:Langue avec nom -- Paramètres : -- 1 : code IETF de langue ; -- texte ou 2 : texte dans cette langue ; -- trans : translittération du texte ; -- dir : direction de la langue. function Langue.langueAvecNom( frame ) local args = ( frame.getParent and frame:getParent().args ) or frame local code = mw.ustring.lower( mw.text.trim( args [1] or '') ) local texte = args.texte or args[2] or '' local trans = args.trans local dir = args.dir -- Détection de la direction du texte. if code == 'ltr' or code == 'rtl' then dir = code code = mw.ustring.lower( mw.text.trim( args[2] ) ) texte = args[3] or '' end -- Définition du nom de la langue en français. local nom = Langue.lienLangue{ code } if texte ~= '' then texte = ' ' .. Langue.lang{ code, dir = dir, texte = texte, trans = trans } end return nom .. ' :' .. texte end -- Détermine si la chaine fournie contient des caractères qui ne sont pas latins (étendu, unicode < U+0370) function Langue.nonLatin( frame ) local texte = premierParametre( frame ) -- pour convertir les code points Unicode en UTF-8 : https://r12a.github.io/app-conversion/ -- (dans le dropdown "Treat bare numbers as", penser à sélectionner "Hex code points" ou "Dec code points") -- voir [[mw:Extension:Scribunto/Lua reference manual#Patterns]] : -- les fonctions string.* ne permettent pas le caractère \0 dans les patterns, il faudrait donc faire [%z\001-\127], par exemple -- les fonctions mw.ustring.* semblent ne pas avoir cette limitation, mais par précaution faisons comme si elles l'avaient aussi -- avec Lua 5.2, on pourrait saisir les octets en format hexadécimal : [^%z\x01-\xCD\xAF...] -- avec Lua 5.3, on pourrait saisir directement les code points Unicode, que Lua convertirait en UTF-8 : [^%z\u{1}-\u{36F}...] -- la concaténation du pattern est effectuée à chaque appel de la fonction, -- mais elle est extrêmement performante (c'est optimisé en faisant une seule opcode concat, et il y a le string interning) -- on pourrait mettre en variable locale dans le module et réutiliser, mais il n'y a même pas de différence mesurable local pattern = '[^' .. '%z' -- U+0000 (UTF-8 00), cas particulier qu'il faut représenter avec %z .. '\001-\205\175' -- U+0001 (UTF-8 01) à U+036F (UTF-8 CDAF) .. '\225\180\128-\225\187\191' -- suppléments phonétique, diacritiques et latin : U+1D00 (UTF-8 E1B480) à U+1EFF (UTF-8 E1BBBF) .. '\226\128\128-\226\177\191' -- espace, indices, monnaies et symboles divers : U+2000 (UTF-8 E28080) à U+2C7F (UTF-8 E2B1BF) .. '\234\156\160-\234\159\191' -- latin étendu D : U+A720 (UTF-8 EA9CA0) à U+A7FF (UTF-8 EA9FBF) .. ']' -- après essais, mw.ustring.match() est *très légèrement* plus performant que mw.ustring.find(), mais ça reste le même ordre de grandeur return mw.ustring.match( texte, pattern ) and true or false end -- Affiche un message d'erreur si le Module:Langue/Data n'a pas été chargé correctement, -- pour la page de discussion de la base de données et ceux qui veulent surveiller cette page. function Langue.erreurModuleData() if type( dataLangue ) ~= 'table' then local message = [[<strong class="error">Le chargement du module Langue/Data génère une erreur.</strong> <br> <span class="error">Cette erreur doit être corrigée au plus vite car des milliers de pages ne s'affichent pas correctement.</span> ]] return message end end -- Génère un tableau triable de la liste des langues disponible dans Module:langue/Data. function Langue.tableauLangues() local tableau = { } local entete = [[{| class="wikitable alternance sortable" |- !scope=col|Alias !scope=col|Code IETF !scope=col|Nom principal !scope=col|Titre de l'article<br>(si différent du nom) !scope=col|Lien vers l'article !scope=col|RTL !scope=col|Invalide]] local ligneTab, ligneSrt for k, v in pairs( dataLangue ) do if v.code then ligneTab = { k, v.code, v.nom, v.page or '', Langue.lienLangue(v.code), v.rtl and '[[Fichier:Yes check.svg|15px|oui|lien=]]' or '', v.invalide and '[[Fichier:Yes check.svg|15px|oui|lien=]]' or '', } ligneSrt = table.concat( ligneTab, '\n|' ) table.insert( tableau, ligneSrt ) end end table.sort( tableau ) table.insert( tableau, 1, entete ) table.insert( tableau, '}' ) return table.concat( tableau, '\n|-\n|' ) end -- Génère une liste ; les langues sont de la forme : * code : alias1, alias2 function Langue.listeCodeAlias() local languesTab, listeCodesAlias = { }, { } local code, alias, codeAlias for k, v in pairs( dataLangue ) do -- on construit une table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias code = v.code if code and not v.invalide then languesTab[code] = languesTab[code] or { } if k ~= mw.ustring.lower( code ) then table.insert( languesTab[code], k ) end end end for k, v in pairs( languesTab ) do -- transformation en une table séquence, avec pour valeur une chaine correspondant à une ligne de la liste alias = table.concat( v, ', ' ) if alias == '' then codeAlias = '* <code>' .. k .. '</code>' else codeAlias = '* <code>' .. k .. '</code> : ' .. alias end table.insert( listeCodesAlias, codeAlias ) end table.sort( listeCodesAlias ) return table.concat( listeCodesAlias, '\n' ) end -- Génère une liste ; les langues sont de la forme : * alias = code function Langue.listeAliasCode() local languesTab = { } local code for k, v in pairs( dataLangue ) do -- on construit une table séquence, avec pour valeur une chaine correspondant à une ligne de la liste code = v.code if code and k ~= code and not v.invalide then table.insert( languesTab, '* ' .. k .. ' = ' .. code ) end end table.sort( languesTab ) return table.concat( languesTab, '\n' ) end return Langue 12awgyfj4xspnyiks7lniwv9q59at7u Naguib Mahfouz 0 7242 79899 50543 2026-08-13T15:53:54Z IvanScrooge98 7005 /* */ image 79899 wikitext text/x-wiki [[Image:Naguib Mahfouz HR.jpg|thumb|Necip Mahfuz.]] Naguib Mahfouz l'est né ch' 11 ed déchimpe 1911 pis défuncté ch' 30 d' eut 2006 chés deus fos au Caire in [[Édjipe]]. Ch'est un écrivin égipcien du XX{{e}} sèke ed lingue arabe et un intellectuel réputé in Édjipe et pis il a érchuvoué ch'prix Nobel ed litérature in 1988. {{DEFAULTSORT:Mahfouz,Najib}} [[Catégorie:Écrivin]] pi17cen7w16z2yxr1uq999f085t6c4j 79900 79899 2026-08-13T15:54:13Z IvanScrooge98 7005 /* */ 79900 wikitext text/x-wiki [[Image:Naguib Mahfouz HR.jpg|thumb|upright|Necip Mahfuz.]] '''Naguib Mahfouz''' l'est né ch' 11 ed déchimpe 1911 pis défuncté ch' 30 d' eut 2006 chés deus fos au Caire in [[Édjipe]]. Ch'est un écrivin égipcien du XX{{e}} sèke ed lingue arabe et un intellectuel réputé in Édjipe et pis il a érchuvoué ch'prix Nobel ed litérature in 1988. {{DEFAULTSORT:Mahfouz,Najib}} [[Catégorie:Écrivin]] cs3wyz5lolqkrvx0wwgejpktcq0r8sf 79901 79900 2026-08-13T15:54:27Z IvanScrooge98 7005 /* */ 79901 wikitext text/x-wiki [[Image:Naguib Mahfouz HR.jpg|thumb|upright|Naguib Mahfouz.]] '''Naguib Mahfouz''' l'est né ch' 11 ed déchimpe 1911 pis défuncté ch' 30 d' eut 2006 chés deus fos au Caire in [[Édjipe]]. Ch'est un écrivin égipcien du XX{{e}} sèke ed lingue arabe et un intellectuel réputé in Édjipe et pis il a érchuvoué ch'prix Nobel ed litérature in 1988. {{DEFAULTSORT:Mahfouz,Najib}} [[Catégorie:Écrivin]] 7bdf2a6e2kgw6fmz2ojedzppgzbv309 Module:Biblio 828 7318 79894 50736 2026-08-13T14:59:01Z Geoleplubo 204 màj 79894 Scribunto text/plain -- Le module biblio centralise les différentes fonctions utiles pour les bibliographie et références. -- luacheck: globals mw, no max line length local Biblio = { } require( 'strict' ) local Outils = require( 'Module:Outils' ) Biblio.ouvrage = function ( frame ) local args = Outils.extractArgs( frame ) local Ouvrage = require( 'Module:Biblio/Ouvrage' ) return Ouvrage.ouvrage( args ) end Biblio.chapitre = function ( frame ) local args = Outils.extractArgs( frame ) local Ouvrage = require( 'Module:Biblio/Ouvrage' ) return Ouvrage.chapitre( args ) end Biblio.article = function ( frame ) local args = Outils.extractArgs( frame ) local Ouvrage = require( 'Module:Biblio/Article' ) return Ouvrage.article( args ) end Biblio.lienWeb = function( frame ) local args = Outils.extractArgs( frame ) local Ouvrage = require( 'Module:Biblio/Lien web' ) return Ouvrage.lienWeb( args ) end Biblio.lienBrise = function( frame ) local args = Outils.extractArgs( frame ) local Ouvrage = require( 'Module:Biblio/Lien web' ) return Ouvrage.lienBrise( args ) end Biblio.lienVideo = function( frame ) local args = Outils.extractArgs( frame ) local Ouvrage = require( 'Module:Biblio/Lien vidéo' ) return Ouvrage.lienVideo( args ) end Biblio.dictionnaire = function( frame ) local args = Outils.extractArgs( frame ) local article = Outils.validTextArg( args, 'notice', 'article', 'titre chapitre' ) local Ouvrage = require( 'Module:Biblio/Ouvrage' ) if article then args['titre chapitre'] = article return Ouvrage.chapitre( args ) else args.titre = args['titre ouvrage'] args['sous-titre'] = args['sous-titre ouvrage'] args.auteur1 = args['auteur ouvrage'] args.auteurs = args['auteurs ouvrage'] return Ouvrage.ouvrage( args ) end end -- catégorise une page en fonction du namespace local function categorise(args) local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true, [104] = true } local category = args[1] local flag = args[2] if type(category) == 'string' and flag and namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] then return '[[Category:' .. category .. ']]' end return '' end Biblio.ISBN = function ( frame ) local args = Outils.extractArgs( frame ) if Outils.trim( args[1] ) then local newArgs = { isbn = args[1] } local i = 2 while args[i] do newArgs[ 'isbn' .. i ] = args[i] i = i + 1 end return Biblio.identifiantsBiblio( newArgs ) else return '<small>([[International Standard Book Number|ISBN]]&nbsp;inconnu)</small>' .. categorise{ 'ISBN nécessaire', true } end end Biblio.rechercheIsbn = function( frame ) local args = Outils.extractArgs( frame ) local References = require( 'Module:Biblio/Références' ) local newArgs = { isbn = args[1], sansLabel = true, categ = {} } local isbn = References.isbn( newArgs ) or '' local categ = categorise{ 'Page avec ISBN invalide', newArgs.categ.isbnInvalid } return isbn .. categ end Biblio.EAN = function ( frame ) local args = Outils.extractArgs( frame ) if Outils.trim( args[1] ) then local newArgs = { ean = args[1], categ = {} } local i = 2 while args[i] do newArgs[ 'ean' .. i ] = args[i] i = i + 1 end return Biblio.identifiantsBiblio( newArgs ) else return '<small>([[EAN 13|EAN]]&nbsp;inconnu)</small>[[Catégorie:EAN nécessaire]]' end end Biblio.ISSN = function ( frame ) local args = Outils.extractArgs( frame ) if Outils.trim( args[1] ) then local newArgs = { issn = args[1], categ = {} } local i = 2 while args[i] do newArgs[ 'issn' .. i ] = args[i] i = i + 1 end return Biblio.identifiantsBiblio( newArgs ) else return '<small>([[International Standard Serial Number|ISSN]]&nbsp;inconnu)</small>' .. categorise{ 'ISSN nécessaire', true } end end Biblio.rechercheIssn = function( frame ) local args = Outils.extractArgs( frame ) local References = require( 'Module:Biblio/Références' ) local newArgs = { issn = args[1], sansLabel = true, categ = {} } local issn = References.issn( newArgs ) or '' local categ = categorise{ 'Page avec ISSN invalide', newArgs.categ.issnInvalid } return issn .. categ end Biblio.BNF = function ( frame ) local References = require( 'Module:Biblio/Références' ) return References.bnf( Outils.extractArgs( frame )[1] ) end Biblio.enLigne = function ( frame ) local args = Outils.extractArgs( frame ) local References = require( 'Module:Biblio/Références' ) return '<small>[' .. References.enLigne( args ) .. ']</small>' end Biblio.identifiantsBiblio = function( frame ) local args = Outils.extractArgs( frame ) args.categ = {} local References = require( 'Module:Biblio/Références' ) return ( References.affichageLiensExternes( args, nil, true, true ) or '' ) .. categorise{ 'Page avec ISBN invalide', args.categ.isbnInvalid } .. categorise{ 'Page avec ISSN invalide', args.categ.issnInvalid } .. categorise{ 'Page avec EAN invalide', args.categ.eanInvalid } end return Biblio 2e51rukmx4kd0sdfi58fy6dun1ei136 Module:Biblio/Commun 828 7321 79895 50739 2026-08-13T15:05:00Z Geoleplubo 204 màj 79895 Scribunto text/plain -- luacheck: globals mw, no max line length -- Les fonctions du module Biblio/Commun sont des éléments nécessaires aux modules Biblio/Ouvrage, Biblio/Article, Biblio/Lien web. local Commun = {} local Date = require( 'Module:Date' ) local Langue -- = require( 'Module:Langue' ) ne sera chargé que si nécessaire local Languedata -- = mw.loadData( 'Module:Langue/Data' ) ne sera chargé que si nécessaire --[=[ Trouve le premier lien interwiki '[[lien|texte]]' de str et retourne : texte, lien Si le lien est '[[texte]]', retourne : texte, texte. Si str ne contient pas de lien interwiki, retourne : str (et nil) Les fichiers et images ne sont pas considérés comme des liens. Si str n'est pas une chaine, retourne : nil ]=] local function texteLien( str ) if type( str ) == 'string' then for lien, texte in string.gmatch( str, '%[%[ *([^%[%]|]*)|? *([^%[%]]*)%]%]' ) do texte = ( texte ~= '' and texte ) or lien or str if not lien then return str end local testlien = string.lower( lien ) local fichier = string.match( testlien, '^fichier:' ) or string.match( testlien, '^image:' ) or string.match( testlien, '^file:' ) if not fichier then return texte, lien end end return str end end -- retire tous les liens internes, externes et balises html pour ne garder que le texte brut. local function nettoyageTexte( texte ) if type( texte ) == 'string' then if texte:match( '[%[<]' ) then local function texteDuLien( l, t ) return ( t ~= '' and t ) or l end -- nettoyage des liens internes texte = texte:gsub( '%[%[([^%[%]|]*)|?([^%[%]]*)%]%]', texteDuLien ) -- nettoyage des liens externes :gsub( '%[https?://[^%[%] ]* *([^%]]+)%]', '%1' ) :gsub( '%[//[^%[%] ]* *([^%]]+)%]', '%1' ) -- nettoyage des balises html :gsub( '%b<>', '' ) end return texte end end --[[ Génère une abréviation discrète paramètres : 1 = abréviation, 2 = texte, nbsp = '-' pour une espace insécable avant l'abréviation, '+' pour l'avoir après. ]] local function abr( args ) return ( args.nbsp == '-' and '&nbsp;' or '' ) .. '<abbr class="abbr" title="' .. args[2] .. '">' .. args[1] .. '</abbr>' .. ( args.nbsp == '+' and '&nbsp;' or '' ) end -- Abréviation utiles Commun.chap = abr{ 'chap.', 'chapitre(s)', nbsp='+' } Commun.coll = abr{ 'coll.', 'collection', nbsp='+' } Commun.ed = abr{ 'éd.', 'édition', nbsp='-' } Commun.nbp = abr{ 'p.', 'pages', nbsp='-' } Commun.numero = abr{ 'n<sup>o</sup>', 'numéro', nbsp='+' } Commun.numeros = abr{ 'n<sup>os</sup>', 'numéros', nbsp='+' } Commun.page = abr{ 'p.', 'page', nbsp='+' } Commun.pages = abr{ 'p.', 'pages', nbsp='+' } Commun['page(s)'] = abr{ 'p.', 'page(s)', nbsp='+' } Commun.plume = '<span class="nowrap" title="Ouvrage utilisé pour la rédaction de l\'article">\194\160[[Fichier:Icon_flatdesign_plume.svg|20px|link=|alt=Ouvrage utilisé pour la rédaction de l\'article]]</span>' Commun.premiere = abr{ '1<sup>re</sup>', 'première' } Commun.reimpr = abr{ 'réimpr.', 'réimpression', nbsp='+' } Commun.tome = abr{ 't.', 'tome', nbsp='+' } Commun.vol = abr{ 'vol.', 'volume', nbsp='+' } local function nobr( texte ) return '<span class="nowrap">' .. texte .. '</span>' end -- Copie de Outils.validTextArg sans trim, pour performances avec les paramètres nommés ? -- refs [[Spécial:Diff/105796198]] ainsi que [[Spécial:Diff/172108202]] function Commun.validTextArg( args, name, ... ) local texte = args[name] if type( texte ) == 'string' and texte ~= '' then return texte elseif #{ ... } > 0 then return Commun.validTextArg( args, ... ) end end function Commun.detailEdition( ref ) return '<small>&#91;[[' .. ref .. '|détail de l’édition]]&#93;</small>' end function Commun.detailEditions( ref ) return '<small>&#91;[[' .. ref .. '|détail des éditions]]&#93;</small>' end -- affiche le texte en nombre romain majuscule. function Commun.romain( texte ) local a = '<span class="romain" style="text-transform:uppercase">' local b = '</span>' return a, texte, b end function Commun.fusionTexteLien( texte, lien, categ ) local categorisation, result local message = '<sup style="color:red;">[le lien externe a été retiré]</sup>' if lien and lien ~= '' then if texte:match( '%[%[' ) then result = Commun.fusionTexteLien( texte, nil, categ ) elseif lien:match( '^http' ) or lien:match( '//' ) then lien = false categorisation = true result = texte .. message else result = string.format( '[[%s|%s]]', lien, texte ) end else --[=[ if texte:match( '//' ) then result = texte:gsub( '%[https?://[^%[%] ]* *([^%]]+)%]', '%1' ) :gsub( '%[//[^%[%] ]* *([^%]]+)%]', '%1' ) if result ~= texte then result = result .. message categorisation = true end end ]=] -- désactivé pour le moment (peut être activé si quelqu'un est prêt à corriger les erreurs) end if categorisation and type( categ ) == 'table' then categ.lienExterne = true end return result or texte end -- voir Modèle:Module biblio/span initial function Commun.spanInitial( args, validArg ) local id = validArg( 'id' ) local id2 if id then id = ' id="' .. id .. '"' else local nom = validArg( 'nom1', 'nom', 'last1', 'last', 'author' ) local prenom = validArg( 'prénom1', 'prénom', 'firt1', 'first' ) local postnom = validArg( 'postnom1', 'postnom' ) local auteur_i = validArg( 'auteur1', 'author1', 'auteur' ) local i = 1 local idTab, id2Tab = { }, { } local presence_auteur = false while nom or auteur_i do if auteur_i and not nom then -- tentative de séparation de l'auteur en prénom nom. -- Enregistre le résultat dans args pour les COinS. auteur_i = texteLien( auteur_i ) if auteur_i == '' then break end local a1, a2, a3 = string.match( auteur_i, '^([^ ]+) *([^ ]*) *(.*)$' ) if a3 ~= '' then local a2len = mw.ustring.len( a2 ) if a2len == 1 or ( a2len == 2 and mw.ustring.sub( a2, -1 ) == "." ) then -- a1 est le prénom, a2 une initiale et a3 le nom nom = a3 if i == 1 then args.nom = a3 args['prénom'] = a1 .. ' ' .. a2 end else -- a2 peut être le deuxième prénon ou le début du nom nom = a2 .. ' ' .. a3 end elseif a2 ~= '' then -- a1 prénom, a2 nom nom = a2 if i == 1 then args.nom = a2 args['prénom'] = a1 end else nom = a1 end end if not auteur_i then if prenom and postnom then auteur_i = prenom .. ' ' .. nom .. ' ' .. postnom elseif prenom then auteur_i = prenom .. ' ' .. nom elseif postnom then auteur_i = nom .. ' ' .. postnom else auteur_i = nom end end table.insert( idTab, mw.uri.anchorEncode( nom ) ) table.insert( id2Tab, mw.uri.anchorEncode( auteur_i ) ) presence_auteur = true if i == 4 then break end i = i + 1 nom = validArg( 'nom' .. i, 'last' .. i ) prenom = validArg( 'prénom' .. i, 'first' .. i ) postnom = validArg( 'postnom' .. i) auteur_i = validArg( 'auteur' .. i, 'author' .. i ) end if #idTab < 4 and validArg( 'auteur institutionnel' ) then table.insert( idTab, mw.uri.anchorEncode( validArg( 'auteur institutionnel' ) ) ) table.insert( id2Tab, idTab[#idTab] ) presence_auteur = true end local annee = validArg( 'année', 'year', 'date' ) if annee then local t, d = Date.separationJourMoisAnnee( annee ) if t and d.annee and annee ~= d.annee then annee = tostring( d.annee ) -- XXX TODO : lorsque "args" est un objet "frame.args", [[mw:Extension:Scribunto/Lua reference manual#frame.args]] -- les éléments qui lui sont ici ajoutés ne le sont pas à la "metatable", mais à la table brute sous-jacente -- pour mieux comprendre : [[Discussion module:Outils#Fonction extractArgs()]] -- de plus, c'est un code smell que spanInitial() ait pour effet de bord de modifier l'objet "args" qui lui est passé args['année'] = annee if d.mois then args.mois = validArg( 'mois' ) or tostring( d.mois ) end if d.jour then args.jour = validArg( 'jour' ) or tostring( d.jour ) end elseif mw.ustring.find( annee, "%a" ) and annee:find( "%f[%d]%d%d%d%d%f[%D][a-h]?" ) then -- le [a-h]? final est destiné à accepter les lettres ajoutées lorsqu'il y a plusieurs ouvrages d'un même auteur la même année (cf. [[:en:Template:Harvard citation no brackets#More than one work in a year]]) annee = annee:match( "%f[%d]%d%d%d%d%f[%D][a-h]?" ) end annee = mw.uri.anchorEncode( tostring( annee ) ) table.insert( idTab, annee ) table.insert( id2Tab, annee ) end if #idTab > 0 and presence_auteur == true then id = ' id="' .. table.concat( idTab ) .. '"' id2 = ' id="' .. table.concat( id2Tab ) .. '"' if id2 == id then id2 = false end else id = '' end end local spaninitial, spanfinal if id2 then spaninitial = '<span class="ouvrage"' .. id .. '><span class="ouvrage"' .. id2 .. '>' spanfinal = '</span></span>' else spaninitial = '<span class="ouvrage"' .. id .. '>' spanfinal = '</span>' end return spaninitial, spanfinal end -- voir Modèle:Module biblio/libellé function Commun.libelle( args ) local lib = args['libellé'] if lib and lib ~= '' then return '<small>[' .. lib .. ']</small> ' else return '' end end -- voir Modèle:Commentaire biblio function Commun.commentaire( args ) if args.commentaire and args.commentaire ~= '' then local a = '<div style="margin-left:2em; line-height:1.5;">' local b = '</div>' return a, args.commentaire, b end return '' end -- voir Modèle:Module biblio/indication de langue function Commun.indicationDeLangue( args, validArg ) local lang = validArg( 'langue', 'lang', 'lien langue', 'language' ) if lang then Langue = require( 'Module:Langue' ) -- on essaie le code de langue complet (nécessaire pour les langues avec plusieurs mots comme "grec ancien") local codeLangue = Langue.codeLangue2( lang ) if codeLangue == 'fr' or codeLangue:lower() == 'fr-fr' then return '' elseif codeLangue ~= '' then return Langue.indicationMultilingue{ codeLangue }, codeLangue end -- si la langue n'a pas été trouvée on considère qu'il y a plusieurs langues -- séparation des langues s'il y en a plusieurs local listeLangue = mw.text.split( lang, '[+,;:/ %.]+' ) -- code langue principal qui sera appliqué aux titres codeLangue = Langue.codeLangue2( listeLangue[1] ) if codeLangue == '' then if type( args.categ ) == 'table' then args.categ.langue = true end return Langue.indicationMultilingue( listeLangue ) else -- calcul code de langue et catégorie local indicationLangue = Langue.indicationMultilingue( listeLangue ) if type( args.categ ) == 'table' then args.categ.langue = indicationLangue:find( '???', 1, true ) end if codeLangue ~= 'fr' and codeLangue:lower() ~= 'fr-fr' then return indicationLangue, codeLangue elseif #listeLangue > 1 then return indicationLangue, codeLangue end end end return '' end -- voir Modèle:Module biblio/responsabilité principale function Commun.responsabilitePrincipale( args, validArg ) local auteurs = validArg( 'auteurs' ) local nom = validArg( 'nom1', 'nom', 'last1', 'last' ) local auteur = validArg( 'auteur1', 'auteur', 'author1', 'author' ) local auteurInstitutionnel = validArg( 'auteur institutionnel' ) if not ( auteurs or nom or auteur or auteurInstitutionnel ) then return '' end if nom or auteur then -- clarification des paramètres args['prénom1'] = validArg( 'prénom1', 'prénom', 'first1', 'first' ) args['postnom1'] = validArg( 'postnom1', 'postnom' ) args.directeur1 = validArg( 'directeur1', 'directeur' ) args['lien auteur1'] = validArg( 'lien auteur1', 'lien auteur', 'author-link' ) end -- préparation des variables local listeResponsables = { } -- contiendra un élément pour chaque nom local directeur = abr { 'dir.', 'directeur de publication' } local prenom, postnom, dir, precision, resp local i = 1 -- boucle sur chaque nom, assemble toutes les caractéristiques et ajoute l'ensemble à la liste. while nom or auteur do -- nom de l'auteur if not auteur then prenom = validArg( 'prénom' .. i, 'first' .. i ) nom = '<span class="nom_auteur">' .. nom .. '</span>' postnom = validArg( 'postnom' .. i) if prenom and postnom then auteur = prenom .. ' ' .. nom .. ' ' .. postnom elseif prenom then auteur = prenom .. ' ' .. nom elseif postnom then auteur = nom .. ' ' .. postnom else auteur = nom end end -- lien sur l'auteur auteur = Commun.fusionTexteLien( auteur, args['lien auteur' .. i], args.categ) -- définition des responsabilités dir = validArg( 'directeur' .. i ) resp = validArg( 'responsabilité' .. i ) if dir then if resp then precision = ' (' .. directeur .. ' et ' .. resp .. ')' else precision = ' (' .. directeur .. ')' end elseif resp then precision = ' (' .. resp .. ')' else precision = '' end table.insert( listeResponsables, auteur .. precision ) i = i + 1 nom = validArg( 'nom' .. i, 'last' .. i ) auteur = validArg( 'auteur' .. i, 'author' .. i ) end local et_al = '' if validArg( 'et al.', 'et alii' ) then et_al = " ''" .. abr { "et al.", "et alii (et d’autres)" } .. "''" end local listeAuteurs if auteurs then listeAuteurs = auteurs .. et_al elseif #listeResponsables > 0 then if et_al ~= '' then listeAuteurs = table.concat( listeResponsables, ', ' ) .. et_al else listeAuteurs = mw.text.listToText( listeResponsables ) end else assert( auteurInstitutionnel ) end if listeAuteurs then if auteurInstitutionnel then return listeAuteurs .. ', ' .. auteurInstitutionnel else return listeAuteurs end else return auteurInstitutionnel .. et_al end end -- voir Module biblio/responsabilité secondaire function Commun.responsabiliteSecondaire( args, validArg ) local liste = { } -- fonction qui teste l'existence d'un paramètre et insère dans liste une abréviation discrète suivie de ce paramètre local function insertAbr( arg, abrev, texte ) if arg then table.insert( liste, abr{ abrev, texte, nbsp='+' } .. arg ) end end -- langue originale et traducteur local trad = validArg( 'traducteur', 'trad', 'traduction' ) local langueOriginale = validArg( 'langue originale' ) if langueOriginale then local Languedata = mw.loadData( 'Module:Langue/Data' ) langueOriginale = Languedata[langueOriginale] and Languedata[langueOriginale].nom end if langueOriginale then if trad then trad = ' par ' .. trad else trad = '' end if langueOriginale:match( '^[aeiou]' ) or langueOriginale:match( '^é' ) -- regex dédiée pour cette lettre, vu qu'elle est codée sur plusieurs octets or langueOriginale == 'hébreu' then trad = "de l'" .. langueOriginale .. trad else trad = 'du ' .. langueOriginale .. trad end end insertAbr( trad, 'trad.', 'traduction' ) -- ajout des différents responsables insertAbr( validArg( 'préface' ), 'préf.', 'préface' ) if validArg( 'postface' ) then table.insert( liste, 'postface ' .. args.postface ) end insertAbr( validArg( 'illustrateur', 'illustrations' ), 'ill.', 'illustrations' ) insertAbr( validArg( 'photographe', 'photographies' ), 'photogr.', 'photographies' ) if validArg( 'champ libre' ) then table.insert( liste, args['champ libre'] ) end -- concaténation de l'ensemble local texte = table.concat( liste, ', ') if texte ~= '' then return ' (' .. texte .. ')' end end -- Affiche une date correctement formatée, sans liens. -- En cas de paramètres erronés, cette fonction fait au mieux pour formater, sans générer d'erreur. function Commun.inscriptionDate( args ) -- pour [[Modèle:Inscription date]], où args est en fait la frame du #invoke if type( args.getParent ) == 'function' then args = args:getParent().args end local annee = Commun.validTextArg( args, 'année', 'annee', 'year' ) if annee then if annee:match( '^%-?%d+$' ) then -- si l'année est correctement renseignée, on essaye de trouver le jour et le mois local jour = Commun.validTextArg( args, 'jour', 'day', 'quantième' ) local mois = Commun.validTextArg( args, 'mois', 'month', 'saison' ) mois = string.lower( mois or '' ) local t, jma = Date.validationJourMoisAnnee{ jour, mois, annee } if t then jma.nolinks = true return Date._modeleDate( jma ) else local date = { jour } table.insert( date, mois ) table.insert( date, annee ) return '<time class="nowrap" datetime="' .. annee .. '">' .. table.concat( date, ' ' ) .. '</time>' end else return Commun.inscriptionDate{ date = annee } end else -- si annee n'est pas précisé, on utilise le paramètre date local date = Commun.validTextArg( args, 'date' ) if date then local t, jma date = date:lower() -- Date iso avec l'heure : suppression de l'heure date = date:gsub( '^(%d%d%d%d%-%d%d%-%d%d)t[%d:+-]+$', '%1' ) t, jma = Date.separationJourMoisAnnee( date ) if t then jma.nolinks = true return Date._modeleDate( jma ) end return date end end return '' end function Commun.formatePagesTotales( pages ) -- seulement un nombre entier -- (avec éventuellement un "formatnum" appliqué dessus) if pages:match( '^%d+$' ) or pages:match( '^%d+\194\160%d+$' ) then return pages .. Commun.nbp end -- détection de « nombre - nombre » -- (double pagination, le plus souvent « nombre romain - nombre arabe »), -- avec éventuellement une abréviation sur le nombre romain local pagesTagsRemoved = pages:gsub( '%b<>', '' ) if pagesTagsRemoved:match('^[%dIVXLCDM]+ ?%- ?[%dIVXLCDM]+$') -- "tiret du 6" (noter que c'est un caractère à escaper dans les regexes Lua) or pagesTagsRemoved:match('^[%dIVXLCDM]+ ?– ?[%dIVXLCDM]+$') -- tiret moyen (attention, c'est un caractère sur 3 octets) or pagesTagsRemoved:match('^[%dIVXLCDM]+ et [%dIVXLCDM]+$') then -- « nombre et nombre », cas de figure quelquefois rencontré return pages .. Commun.nbp end -- détection d'un suffixe « p. » déjà présent, -- que l'on remplace alors par la version wikifiée (espace insécable, balise d'abréviation) local pages2 = pages :gsub( ' p%.$', '' ) :gsub( '\194\160p%.$', '' ) :gsub( '&nbsp;p%.$', '' ) :gsub( '&#160;p%.$', '' ) if pages2 ~= pages then return pages2 .. Commun.nbp end return pages end -- ajoute l'abréviation « p. » la plus précise possible devant le passage, -- si un numéro de page ou un intervalle de pages est détecté function Commun.formatePassage( passage ) local test = passage:gsub( '%b<>', '' ) -- on retire les balises (notamment <abbr>) pour les tests -- nombre entier if test:match( '^[%dIVXLCDM]+$' ) then -- uniquement des chiffres (arabes ou romains) return Commun.page .. passage -- nobr() serait inutile ici -- intervalle elseif test:match( '^%d+ ?%- ?%d+$' ) -- "tiret du 6" (noter que c'est un caractère à escaper dans les regexes Lua) or test:match( '^%d+ ?– ?%d+$' ) -- tiret moyen (attention, c'est un caractère sur 3 octets) or test:match( '^[IVXLCDM]+ ?%- ?[IVXLCDM]+$' ) -- même chose avec les nombres romains or test:match( '^[IVXLCDM]+ ?– ?[IVXLCDM]+$' ) then return Commun.pages .. nobr( passage ) -- nobr() pour que la valeur soit insécable -- indication de page, mais complexe elseif test:match( '^%d' ) -- commence par un chiffre arabe or test:match( '^[IVXLCDM]+[ ,%-]' ) -- nombre romain suivi d'un caractère de séparation, pour s'assurer que c'est un nombre romain et pas le début d'un nom or test:match( '^[IVXLCDM]+–' ) then -- regex dédiée pour le tiret moyen, vu qu'il est codé sur 3 octets return Commun['page(s)'] .. passage -- pas de nobr(), au cas où la valeur serait longue -- toute autre valeur else return passage -- pas de nobr(), au cas où la valeur serait longue end end -- voir Modèle:COinS bibliographique -- NISO Z39.88 -- http://www.openurl.info/registry function Commun.COinS( args, validArg, genre ) local liste = { } -- insertlist ajoute à la table 'liste' un couple 'nom Coins normalisé' - 'donnée' -- Si istexte = true, le deuxième élément de tab est considéré comme du texte, -- sinon comme le nom d'un paramètre. local function insertList( key, value, prefix ) prefix = prefix or '' if type( value ) == 'string' and value ~= '' then liste[#liste + 1] = key .. '=' .. mw.uri.encode( prefix .. value ) end end -- norme du COinS insertList( 'ctx_ver', 'Z39.88-2004' ) -- genre, titre et sous-titre if genre == 'article' then insertList( 'rft_val_fmt', 'info:ofi/fmt:kev:mtx:journal' ) insertList( 'rft.genre', 'article' ) insertList( 'rft.atitle', nettoyageTexte( args.titre ) ) insertList( 'rft.jtitle', nettoyageTexte( validArg( 'périodique', 'revue', 'journal' ) ) ) insertList( 'rft.issue', validArg( 'numéro', 'no', 'issue' ) ) else -- genre = ouvrage ou chaitre insertList( 'rft_val_fmt','info:ofi/fmt:kev:mtx:book' ) if genre == 'chapitre' then insertList( 'rft.genre', 'bookitem' ) else insertList( 'rft.genre', 'book' ) end insertList( 'rft.btitle', nettoyageTexte( args.titre ) ) insertList( 'rft.atitle', nettoyageTexte( validArg( 'titre chapitre', 'titreChap' ) ) ) -- donnée sur l'éditeur insertList( 'rft.place', texteLien( validArg( 'lieu', 'location' ) ), nil ) insertList( 'rft.pub', texteLien( validArg( 'éditeur', 'édition' ) ), nil ) insertList( 'rft.edition', texteLien( validArg( "numéro d'édition", "numéro édition" ) ), nil ) end insertList( 'rft.stitle', args['sous-titre'] ) -- Premier auteur, séparé en noms et prénoms local nom = texteLien( validArg( 'nom1', 'nom', 'last1', 'last' ) ) if nom then insertList( 'rft.aulast', nom ) insertList( 'rft.aufirst', validArg( 'prénom1', 'prénom', 'first1', 'first' ) ) insertList( 'rtf.ausuffix ', validArg( 'postnom1', 'postnom' ) ) else local auteur = texteLien( validArg( 'auteur', 'auteur1' ) ) if auteur then insertList( 'rft.au', auteur ) end end -- les autres auteurs, la norme ne prévoit pas de séparation for i = 2, 20 do local nom_i = texteLien( validArg( 'nom' .. i ) ) if nom_i then local prenom_i = validArg( 'prénom' .. i ) local postnom_i = validArg( 'postnom' .. i) if prenom_i and postnom_i then insertList( 'rft.au', nom_i .. ' ' .. postnom_i .. ', ' .. prenom_i ) elseif prenom_i then insertList( 'rft.au', nom_i .. ', ' .. prenom_i ) elseif postnom_i then insertList( 'rft.au', nom_i .. ' ' .. postnom_i ) else insertList( 'rft.au', nom_i ) end else local auteur_i = texteLien( validArg( 'auteur' .. i ) ) if auteur_i then insertList( 'rft.au', auteur_i ) else break end end end if validArg( 'auteur institutionnel' ) then insertList( 'rft.aucorp', args['auteur institutionnel'] ) end -- date local datePub = Date.dateISO( args ) if datePub then insertList( 'rft.date', datePub ) else insertList( 'rft.date', args.date ) end -- doonées physique de la publication insertList( 'rft.volume', validArg( 'volume', 'vol' ) ) insertList( 'rft.pages', validArg( 'passage', 'page' ) ) insertList( 'rft.spage', args['page début chapitre'] ) insertList( 'rft.tpages', args['pages totales'] ) -- références internationales insertList( 'rft.isbn', args.isbn ) insertList( 'rft.issn', args.issn ) insertList( 'rft_id', args.doi, 'info:doi/' ) insertList( 'rft_id', args.pmid, 'info:pmid/' ) insertList( 'rft_id', args.oclc, 'info:oclcnum/' ) insertList( 'rft_id', args.url ) -- referer : page Wikipedia ou se trouve cette référence insertList( 'rfr_id', 'fr.wikipedia.org:' .. mw.title.getCurrentTitle().fullText, 'info:sid/' ) local contextObject = table.concat( liste, '&' ) return '<span class="Z3988" title="' .. contextObject .. '"></span>' end return Commun owt5eg20r004yjl8z1w0vtk6azrpren Module:Biblio/Références 828 7322 79896 50740 2026-08-13T15:14:23Z Geoleplubo 204 màj 79896 Scribunto text/plain -- Les fonctions de ce module sont destinées à être utilisées par un autre module. -- Leur paramètre d'entrée est une table simple (args), voire une chaine (oclc, bnf...) -- luacheck: globals mw, no max line length local References = { } local Outils = require( 'Module:Outils' ) local validTextArg = Outils.validTextArg local Commun = require 'Module:Biblio/Commun' -- local Date = require( 'Module:Date' ) -- chargé uniquement si nécessaire --[[ ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in checkisbn(). If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes, spaces and other non-isxn characters. ]] function References.is_valid_isxn( isxn_str, len ) local temp = 0 isxn_str = isxn_str:gsub( 'x', 'X' ) isxn_str = { isxn_str:byte(1, len) } -- make a table of bytes len = len+1 -- adjust to be a loop counter for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum if v == string.byte( 'X' ) then -- if checkdigit is X temp = temp + 10 * ( len - i ) -- it represents 10 decimal else temp = temp + tonumber( string.char( v ) ) * ( len - i ) end end return temp % 11 == 0 -- returns true if calculation result is zero end function References.isValidIsmn10( ismn ) local temp = 9 if ismn:match( 'M%d%d%d%d%d%d%d%d%d' ) then for i = 2, 10 do temp = temp + ( 1 + 2 * ( i % 2 ) ) * ismn:sub( i, i ) end end return temp % 10 == 0 end -- Teste si une chaine ISBN est valide function References.checkisbn( isbn_str ) if type( isbn_str ) == 'string' then isbn_str = isbn_str:gsub( '[-%s]', '' ) -- supprime les traits d’union et espaces if isbn_str:len() == 10 then if isbn_str:match( '^%d+[xX]?$' ) then return References.is_valid_isxn( isbn_str, 10 ) end elseif isbn_str:match( '^97[89]' ) then return References.checkean13( isbn_str ) end end return false end -- Teste si une chaine EAN 13 est valide function References.checkean13( ean_str ) if type( ean_str ) == 'string' then ean_str = ean_str:gsub( '[-%s]', '' ) -- supprime les traits d’union et espaces if ean_str:len() == 13 and ean_str:match( '^%d+$' ) then local temp, strVal = 0 ean_str = { ean_str:byte( 1, 13 ) } for i = 1, #ean_str do strVal = tonumber( string.char( ean_str[i] ) ) temp = temp + ( 3 - 2 * ( i % 2 ) ) * strVal end return temp % 10 == 0 end end return false end function References.checkissn( issn_str ) if type( issn_str ) == 'string' then issn_str = issn_str:gsub( '[%s]', '' ) if issn_str:match( '^%d%d%d%d%-%d%d%d[%dxX]$' ) then issn_str = issn_str:gsub( '-', '' ) -- supprime les traits d’union et espaces return References.is_valid_isxn( issn_str, 8 ) end end return false end -- Teste si une chaine ISMN est valide function References.checkismn( ismn_str ) if type( ismn_str ) == 'string' then ismn_str = ismn_str:gsub( '[-%s]', '' ) -- supprime les traits d’union et espaces if ismn_str:len() == 10 then return References.isValidIsmn10( ismn_str, 10 ) elseif ismn_str:match( '^9790' ) then return References.checkean13( ismn_str ) end end return false end local function isbn13to9( isbn_str ) if type( isbn_str ) == 'string' then local isbn = isbn_str:gsub( '[-%s]', '' ) if isbn:len() == 13 and isbn:sub( 1, 3 ) == '978' then isbn = isbn:sub( 4, 12 ) return isbn elseif isbn:len() == 10 then return isbn:sub( 1, -2 ) end end return isbn_str end local function isbn13to10( isbn_str ) local isbn = isbn13to9( isbn_str ) if isbn ~= isbn_str and isbn_str:len() ~= 10 then for i = 0, 9 do if References.checkisbn( isbn .. i ) then return isbn .. i end end return isbn .. 'X' end return isbn_str end function References.isbn13to10( frame ) local args = Outils.extractArgs( frame ) return isbn13to10( args[1] ) end function References.same_isbn( isbn1, isbn2 ) if type( isbn1 ) ~= 'string' or type( isbn2 ) ~= 'string' then return false end -- remove dash and spaces isbn1 = isbn1:gsub( '[-%s]', '' ) isbn2 = isbn2:gsub( '[-%s]', '' ) -- check if both isbn are valid if not ( References.checkisbn(isbn1) and References.checkisbn(isbn2) ) then return false end -- compare isbn return isbn13to9( isbn1 ) == isbn13to9( isbn2 ) end local function doublonIsxn( isxn, liste2, xnCode) if type( References[ 'same_' .. xnCode ] ) == 'function' then for _, v in ipairs( liste2 ) do if References[ 'same_' .. xnCode ]( isxn, v ) then return true end end end end local function formatIsxn( args, validArg, xnCode, invalideCateg, checkFunction, formatLien, page ) validArg = validArg or function ( ... ) return validTextArg( args, ... ) end local liste = { } local liste2 = { } local i = 1 local invalide = '<sup style="color:red">[à vérifier : ' .. invalideCateg .. ']</sup>' local isxnErr = validArg( xnCode .. ' erroné' ) local XN = xnCode:upper() local isxn = validArg( xnCode, XN, xnCode .. '1', XN .. '1' ) if isxnErr or isxn then local isxnErrSanitised = isxnErr and isxnErr:match( '%d[%d -]+[%dXx]' ) if isxnErrSanitised then local lien = formatLien:format( isxnErrSanitised, isxnErr ) table.insert( liste, lien .. ' (édité erroné)' ) end -- boucle sur les isxn2, 3... while isxn do -- vérification de la validité de l'ISXN local isxnValid = checkFunction( isxn ) -- préparation du texte à afficher if isxnValid then local lien = formatLien:format( isxn, isxn ) table.insert( liste, lien ) if type( args.categ ) == 'table' and doublonIsxn( isxn, liste2, xnCode) then args.categ[ xnCode .. 'Dupliqué' ] = isxn end table.insert( liste2, isxn ) else table.insert( liste, isxn .. invalide ) if type( args.categ ) == 'table' then -- pour les propriétés isbnInvalid, issnInvalid et eanInvalid args.categ[ xnCode .. 'Invalid' ] = true end end i = i + 1 isxn = validArg( xnCode .. i, XN .. i ) end if args['sansLabel'] then page = '' else page = page .. '&nbsp;' end return page .. mw.text.listToText( liste ) end end -- voir Modèle:ISBN -- renvoie une liste de chaines formant le résultat du modèle une fois concaténées function References.isbn( args, validArg ) return formatIsxn( args, validArg, 'isbn', '[[:Catégorie:Page avec ISBN invalide|ISBN invalide]]', References.checkisbn, '[[Spécial:Ouvrages de référence/%s|<span class="nowrap">%s</span>]]', '[[International Standard Book Number|ISBN]]' ) end -- voir Modèle:EAN -- renvoie une liste de chaines formant le résultat du modèle une fois concaténées function References.ean( args, validArg ) return formatIsxn( args, validArg, 'ean', '[[:Catégorie:Page avec EAN invalide|EAN invalide]]', References.checkean13, '[[Spécial:Ouvrages de référence/%s|<span class="nowrap">%s</span>]]', '[[EAN 13|EAN]]' ) end -- voir Modèle:ISSN -- renvoie une liste de chaines formant le résultat du modèle une fois concaténées function References.issn( args, validArg ) return formatIsxn( args, validArg, 'issn', '[[:Catégorie:Page avec ISSN invalide|ISSN invalide]]', References.checkissn, '<span class="plainlinks noarchive">[https://portal.issn.org/resource/ISSN/%s %s]</span>', '[[International Standard Serial Number|ISSN]]' ) end function References.eissn( args, validArg ) return formatIsxn( args, validArg, 'e-issn', '[[:Catégorie:Page avec ISSN invalide|ISSN invalide]]', References.checkissn, '<span class="plainlinks noarchive">[https://portal.issn.org/resource/ISSN/%s %s]</span>', '[[International Standard Serial Number#ISSN électronique|e-ISSN]]' ) end -- voir Modèle:ISMN -- renvoie une liste de chaines formant le résultat du modèle une fois concaténées function References.ismn( args, validArg ) return formatIsxn( args, validArg, 'ismn', '[[:Catégorie:Page avec ISMN invalide|ISMN invalide]]', References.checkismn, '<span class="nowrap">%s</span>', '[[International Standard Music Number|ISMN]]' ) end -- fonctions liant des bases de données externes local function databaseExterne( num, lienIinterne, lienExterne, complement, texteAffiche ) if Outils.notEmpty( num ) then local numEncoded if num:find( '[^a-zA-Z0-9/_.~-]' ) then numEncoded = mw.uri.encode( num, 'PATH' ):gsub( '%%2F', '/' ) else numEncoded = num end local adresse = lienIinterne .. '&nbsp;<span class="plainlinks noarchive nowrap">[' .. 'https://' .. lienExterne .. numEncoded .. ( complement or '' ) .. ' ' .. mw.text.nowiki( texteAffiche or num ) .. ']</span>' return adresse end end function References.arkId( base ) -- Nice Opaque Identifiern utilisé par les formats Ark pour générer une clé base = tostring( base ) if base then local xdigits = '0123456789bcdfghjkmnpqrstvwxz' local sum = 0 local position for i = 1, base:len() do position = xdigits:find( base:sub( i, i ), 1, true ) or 1 sum = sum + i * ( position - 1 ) end local index = sum % 29 + 1 return xdigits:sub( index, index ) end end function References.arxiv( arxiv ) if Outils.trim( arxiv ) then return databaseExterne( arxiv, '[[arXiv]]', 'arxiv.org/abs/' ) end end function References.asin( asin ) return databaseExterne( asin, '[[Amazon Standard Identification Number|ASIN]]', 'www.amazon.fr/s/?url=search-alias&lang=fr&field-keywords=' ) end function References.bibcode( bibcode ) return databaseExterne( bibcode, '[[Bibcode]]', 'ui.adsabs.harvard.edu/abs/' ) end function References.bnf( bnf ) bnf = Outils.trim( bnf ) if bnf then local texte = '' local category = '' local bnfId = bnf:upper():match( 'BNF(%d+%w)' ) or bnf:lower():match( 'cb(%d+%w)' ) or bnf:match( '^%d+%w' ) if bnfId then -- bnf contient une suite de chiffres qui peut être un ark valide local base = bnfId:sub( 1, 8 ) local arkId = References.arkId( 'cb' .. base ) if bnfId:len() == 8 then -- il manque la clé, on l'ajoute bnf = base .. arkId texte = base elseif bnfId:len() > 8 and bnfId:sub( 9, 9 ) == arkId then -- ark valide bnf = bnfId:sub( 1, 9 ) texte = base else -- ark qui semble non valide bnf = bnfId texte = bnfId category = '[[Catégorie:Recension temporaire pour le modèle Ouvrage|bnf]]' end else -- le paramètre ne semble pas un ark valide texte = bnf category = '[[Catégorie:Recension temporaire pour le modèle Ouvrage|bnf]]' end -- dans tous les cas on renvoie l'adresse, on catégorise juste pour vérifier ce qui ne va pas local lien = databaseExterne( bnf, '[[Bibliothèque nationale de France|BNF]]', 'catalogue.bnf.fr/ark:/12148/cb', '.public', texte ) return lien .. category end end function References.citeseerx( citeseerx ) return databaseExterne( citeseerx, '[[CiteSeerX|CiteSeer<sup>x</sup>]]', 'citeseerx.ist.psu.edu/viewdoc/summary?doi=' ) end function References.dnb( dnb ) return databaseExterne( dnb, '[[Bibliothèque nationale allemande|DNB]]', 'd-nb.info/' ) end function References.doi( doi, paywall ) local result = databaseExterne( doi, '[[Digital Object Identifier|DOI]]', 'dx.doi.org/' ) if result and paywall then result = result .. ( References.indicationIconeAcces( paywall ) or '' ) end return result end function References.jfm( jfm ) return databaseExterne( jfm, '[[zbMATH|JFM]]', 'zbmath.org/?format=complete&q=an:' ) end function References.jstor( jstor ) return databaseExterne( jstor, '[[JSTOR]]', 'jstor.org/stable/' ) end function References.hal( hal ) if Outils.trim( hal ) then if not hal:match( '^%w+%-%d' ) then hal = 'hal-' .. hal end return databaseExterne( hal, '[[HAL (archive ouverte)|HAL]]', 'hal.science/' ) end end function References.hdl( hdl, paywall ) local result = databaseExterne( hdl, '[[Handle System|hdl]]', 'hdl.handle.net/' ) if result and paywall then result = result .. ( References.indicationIconeAcces( paywall ) or '' ) end return result end function References.lccn( lccn ) return databaseExterne( lccn, '[[Numéro de contrôle de la Bibliothèque du Congrès|LCCN]]', 'lccn.loc.gov/' ) end function References.libris( libris ) return databaseExterne( libris, '[[LIBRIS]]', 'libris.kb.se/bib/' ) end function References.mathreviews( mathreviews ) return databaseExterne( mathreviews, '[[Mathematical Reviews|MR]]', 'www.ams.org/mathscinet-getitem?mr=' ) end function References.oclc( oclc ) return databaseExterne( oclc, '[[Online Computer Library Center|OCLC]]', 'worldcat.org/fr/title/' ) end function References.pmcid( pmcid ) return databaseExterne( pmcid, '[[PubMed Central|PMCID]]', 'www.ncbi.nlm.nih.gov/pmc/articles/' ) end function References.pmid( pmid ) return databaseExterne( pmid, '[[PubMed|PMID]]', 'www.ncbi.nlm.nih.gov/pubmed/' ) end function References.s2cid( s2cid ) return databaseExterne( s2cid, '[[Semantic Scholar|S2CID]]', 'api.semanticscholar.org/CorpusID:' ) end function References.sbn( sbn ) local id = ( sbn or '' ):upper():gsub( '\\', '' ):gsub( '^ITICCU', '' ) return databaseExterne( id, '[[Service bibliothécaire national]]', 'opac.sbn.it/bid/' ) end function References.sudoc( sudoc ) return databaseExterne( sudoc, '[[Système universitaire de documentation|SUDOC]]', 'www.sudoc.fr/' ) end function References.wikisource( wikisource ) if Outils.notEmpty( wikisource ) then return '[[s:' .. wikisource .. '|lire sur Wikisource]]' end end function References.zbl( zbl ) return databaseExterne( zbl, '[[Zentralblatt MATH|zbMATH]]', 'zbmath.org/?q=an:' ) end -- enLigne est destiné à remplacer "lire en ligne", "écouter en ligne", "présentation en ligne" function References.enLigne( args, validArg ) validArg = validArg or function ( ... ) return validTextArg( args, ... ) end local lang, esp = '', '' if args.langue then local Langue = require( 'Module:Langue' ) lang = Langue.indicationMultilingue{ args.langue, args.langue2, args.langue3 } esp = '&nbsp;' end local url = validArg( 'lien', 'url' ) local urlSimple = true if url then if url:match( '^https?://' ) or url:match( '^ftp://' ) or url:match( '^//' ) then url = url:gsub( '%[', '%%5B' ):gsub( '%]', '%%5D' ):gsub( ' ', '%%20' ) else urlSimple = false end elseif validArg( 'doi' ) then url = 'https://dx.doi.org/' .. mw.uri.encode( args.doi ) else return end local lien if urlSimple then local texte = validArg( 'texte' ) or 'en ligne' lien = '[' .. url .. ' ' .. texte .. ']' else lien = url end local date = validArg( 'date', 'consulté le' ) if date then return lang .. esp .. lien .. '&nbsp;(consultée le' .. date .. ')' else return lang .. esp .. lien end end function References.affichageLiensExternes( args, validArg, lireEnLigne, consulteLe ) validArg = validArg or function ( ... ) return validTextArg( args, ... ) end local liensExternes = {} local function minsert( ... ) for i = 1, select( '#', ... ) do local sel = select( i, ... ) if sel then liensExternes[#liensExternes+1] = sel end end end -- isbn et issn minsert( References.isbn( args, validArg ), References.ean( args, validArg ), References.issn( args, validArg ), References.eissn( args, validArg ), References.ismn( args, validArg ) ) minsert( References.oclc( args.oclc ), References.bnf ( args.bnf ), References.sbn ( args.sbn ), References.lccn( args.lccn ), References.dnb ( args.dnb ), References.pmid( validArg( 'pmid', 'PMID' ) ), References.pmcid ( validArg( 'pmcid', 'pmc' ) ), References.doi( validArg( 'doi', 'DOI' ), validArg( 'accès doi' ) ), References.jstor( args.jstor ), References.bibcode( args.bibcode ), References.mathreviews( validArg( 'math reviews', 'mathreviews', 'mr' ) ), References.zbl( validArg( 'zbl', 'zbmath' ) ), References.arxiv( args.arxiv ), References.hal( args.hal ), References.hdl( args.hdl, validArg( 'accès hdl') ), References.s2cid( args.s2cid ), References.libris( args.libris ), References.citeseerx( args.citeseerx ), References.jfm( args.jfm ), References.asin( args.asin ), References.sudoc( args.sudoc ), References.wikisource( args.wikisource ) ) minsert( References.enLigne{ url = args['résumé'], texte = 'résumé' }, References.enLigne{ url = args['présentation en ligne'], texte = 'présentation en ligne' }, References.enLigne{ url = args['écouter en ligne'], texte = 'écouter en ligne' } ) local url = validArg( 'lire en ligne', 'url texte', 'url', 'texte' ) local paywall = validArg( 'accès url' ) if url and lireEnLigne then local archiveUrl = validArg( 'archive-url', 'archiveurl' ) if archiveUrl then if not ( string.match( archiveUrl, '^http' ) or string.match( archiveUrl, '^//' ) ) then archiveUrl = 'http://' .. archiveUrl end local textArchive = 'archive' local dateArchive = validArg( 'archive-date', 'archivedate' ) if dateArchive then textArchive = 'archive du ' .. Commun.inscriptionDate{ date = dateArchive } end minsert( '<span class="noarchive">' .. References.enLigne{ url = url, texte = 'lire en ligne' } .. ' <small class="cachelinks">&#91;[' .. archiveUrl .. ' ' .. textArchive .. ']&#93;</small>' .. ( paywall and References.indicationIconeAcces( paywall ) or '' ) .. '</span>' .. ( References.indicationDeFormat( args['format électronique'] ) or '' ) ) else minsert( References.enLigne{ url = url, texte = 'lire en ligne' } .. ( paywall and References.indicationIconeAcces( paywall ) or '' ) .. ( References.indicationDeFormat( args['format électronique'] ) or '' ) ) end end -- consulté le if consulteLe then local consult = validArg( 'consulté le', 'accessdate', 'access-date', 'Consulté le', 'consulté', 'consultée le' ) if consult then local prefixe = 'consulté le ' if consult:sub( -1, -1 ) == '.' then consult = consult:sub( 1, -2 ) end consult = consult:lower() local Date = require( 'Module:Date' ) local dateWikifiee = Date.modeleDate{ consult, nolinks = true, afficherErreurs = true, categoriserErreurs = 'Page contenant un paramètre « consulté le » avec une date invalide' } if dateWikifiee:match( 'datetime="%d%d%d%d"' ) or dateWikifiee:match( 'datetime="%d%d%d%d%-%d%d"' ) then prefixe = 'consulté en ' end minsert( prefixe .. dateWikifiee ) end end if #liensExternes > 0 then return ' <small style="line-height:1em;">(' .. table.concat( liensExternes, ', ' ) .. ')</small>' end end function References.indicationDeFormat( format ) if not Outils.trim( format ) then return end local listeFormat = { audio = { "audio", "Fichiers audio au format MP3, Ogg..." }, bat = { "bat", "Script de traitement par lot (batch)" }, djvu = { "DjVu", "Document au format DjVu" }, doc = { "doc", "Document Microsoft Word" }, epub = { "EPUB", "Document au format Epub" }, flash = { "flash", "Animation vectorielle au format Macromedia Flash" }, hlp = { "hlp", "Fichier HeLP (aide) datant de Microsoft Windows 3.1" }, html = { "html", "Fichier au format Hypertext Markup Language (HTML)" }, image = { "image", "Image au format JPEG, PNG, GIF..." }, java = { "java", "Applet Java" }, mov = { "mov", "Vidéo au format Apple QuickTime" }, mp3 = { "MP3", "Fichier audio au format MP3" }, odt = { "odt", "Document au format OpenDocument" }, ogg = { "ogg", "Fichier au format conteneur Ogg" }, pdf = { "PDF", "Document au format Portable Document Format (PDF) d'Adobe" }, php = { "php", "Script PHP" }, pl = { "pl", "Script Practical Extraction and Report Language (Perl)" }, ppt = { "ppt", "Présentation Microsoft PowerPoint" }, ps = { "ps", "Fichier de description vectorielle au format PostScript" }, radio = { "radio", "Radio au format MPEG, AVI..." }, rar = { "rar", "Document compressé au format RAR" }, rm = { "rm", "Vidéo au format RealMedia, RealAudio..." }, rtf = { "RTF", "Document texte en Rich Text Format (RTF)" }, svg = { "SVG", "Image vectorielle au format Scalable Vector Graphics (SVG)" }, sxi = { "sxi", "Présentation OpenOffice.org Impress" }, sxw = { "sxw", "Document OpenOffice.org Writer" }, tex = { "TeX", "Document TeX" }, txt = { "txt", "Fichier au format texte brut" }, video = { "vidéo", "Vidéo au format MPEG, AVI..." }, xls = { "xls", "Classeur Microsoft Excel" }, xlsx = { "xlsx", "Classeur Microsoft Excel" }, xml = { "XML", "Document au format Extensible Markup Language (XML)" }, zip = { "zip", "Archive au format Zip" }, } listeFormat['vidéo'] = listeFormat.video listeFormat.vid = listeFormat.video listeFormat.htm = listeFormat.html listeFormat.excel = listeFormat.xls listeFormat.powerpoint = listeFormat.ppt listeFormat.word = listeFormat.doc listeFormat.aud = listeFormat.audio local tabFormat = listeFormat[ string.lower( format ) ] if tabFormat then return ( ' <abbr class="abbr indicateur-format format-' .. tabFormat[1]:lower() .. '" ' .. 'title="' .. tabFormat[2] .. '">' .. mw.text.nowiki( '[' .. tabFormat[1] .. ']' ) .. '</abbr>' ) else -- teste si le suffixe est suivi d'une précision (ex : pdf 6 Mo) local ext, texte = string.match( format, "^([%S]+) (.+)$") if ext and listeFormat[ string.lower( ext ) ] then return References.indicationDeFormat( ext ) .. ' ' .. texte else return ' &#91;' .. format .. '&#93;' -- '&#91;' = '<nowiki>[</nowiki>', '&#93;' = '<nowiki>]</nowiki>', end end end function References.indicationIconeAcces( paywall ) local val = string.lower( paywall ) -- nettoyage qui devrait être suffisant if val == 'payant' then return ' [[File:Lock-red-alt-2.svg|9px|link=|alt=Accès payant|Accès payant au document]]' elseif val == 'libre' then return ' [[File:Lock-green.svg|9px|link=|class=skin-invert-image|alt=Accès libre|Accès libre au document]]' elseif val == 'limité' then return ' [[File:Lock-gray-alt-2.svg|9px|link=|class=skin-invert-image|alt=Accès limité|Accès limité au document]]' elseif val == 'inscription' then return ' [[File:Lock-gray-alt-2.svg|9px|link=|class=skin-invert-image|alt=Inscription nécessaire|Inscription nécessaire pour accéder au document]]' else return '' end end return References 2guqlouu8xcxe7d3nvzab9t8ilahkt9 Modèle:Param 10 12467 79906 74982 2026-08-13T16:31:49Z Geoleplubo 204 m 79906 wikitext text/x-wiki <includeonly><var title="Paramètre « {{{1|}}} »">{{{1|valeur}}}</var></includeonly><noinclude> {{Documentation|contenu= == Utilisation == Ce modèle met en forme un paramètre (ou plus précisément, une valeur paramétrée) pour l’écriture de l’aide ou dans la documentation de modèles. == Syntaxe == <code><nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|</nowiki>1={{Param|nom}}<nowiki>}}</nowiki></code> * <code>1</code> : l’identifiant (le nom) du paramètre (obligatoire). == Exemples == « <code><nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|nom}}</nowiki></code> » :donne « {{{{PAGENAME}}|nom}} ». « <code>La page perso. d’un wikipédien <nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|lambda}}</nowiki> est Utilisateur:<nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|lambda}}</nowiki>.</code> » :donne « La page perso. d’un wikipédien {{{{PAGENAME}}|lambda}} est Utilisateur:{{{{PAGENAME}}|lambda}}. ». }}<!-- fin contenu --> [[Catégorie:Modèle de l'espace Aide|{{PAGENAME}}]] [[Catégorie:Modèle éd l'épace modèle|{{PAGENAME}}]] [[Catégorie:Modèle de formatage|{{PAGENAME}}]] </noinclude> agii9rgi0tjekezjpqr32ou2ev93lvb Catégorie:Documentation de modèle 14 12479 79911 74994 2026-08-13T16:40:52Z Geoleplubo 204 Catégorie:Modèle éd l'épace modèle 79911 wikitext text/x-wiki :''Vir itou : [[:Catégorie:Documentation de module]], [[:Catégorie:Bac à sable de modèle]].'' Cette catégorie contient des pages de [[Aide:Documentation de modèle|documentation de modèle]]. Il s'agit des modèles de contenu de la documentation, tels les sous-pages <code>/Documentation</code> ou des modèles de contenu de documentation communs à plusieurs modèles. Consulter la [[Aide:Documentation de modèle|page d'aide]] pour des informations sur la création de pages de documentation. Ne pas confondre avec la [[:Catégorie:Modèle de documentation]] qui contient les modèles destinés à la génération de la documentation. {{Catégorisée par|Sous-page de documentation|note=oui}} [[Catégorie:Modèle éd l'épace modèle]] j5jqkazz9cankat32e5bhi69zy1u42b Modèle:Cite web/Documentation 10 13421 79898 2026-08-13T15:40:05Z Geoleplubo 204 N 79898 wikitext text/x-wiki {{Sous-page de documentation}} {{Modèle utilisant les modules Lua|Module:Biblio|Module:Biblio/Lien web}} == Utilisation == Ce modèle sert à [[Wikipédia:Citez vos sources|citer une source]] dans un article. Il permet de formater une référence externe à un site web. Son usage est particulièrement recommandé pour les [[Aide:Note|notes et références]]. Remarque : si le modèle est utilisé dans une note, la note doit se terminer par un point afin de se conformer aux [[Aide:Note#Règles relatives à la ponctuation|conventions bibliographiques]]. L'utilisation de [[m:WMDE_Technical_Wishes/Sub-referencing/fr|sous-références]] permet de n'afficher qu'une fois une source utilisée plusieurs fois, avec des indications détaillées précisées à chaque utilisation par le paramètre <code>details=</code> à l'intérieur de la balise <code><nowiki><ref></nowiki></code>: <code><nowiki><ref name=... details=...>{{Lien web|...}}</ref></nowiki></code>. == Syntaxe == [[Fichier:OOjs UI icon information-progressive.svg|link=|27px]] ''Copiez-collez le code ci-après et complétez avec les informations en votre possession.'' === Syntaxe minimale === Sans auteur : <nowiki>{{Lien web |langue= |titre= |url= |date= |site= |consulté le=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}.</nowiki> Avec un auteur : <nowiki>{{Lien web |langue= |auteur= |titre= |url= |date= |site= |consulté le=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}.</nowiki> Avec plusieurs auteurs : <nowiki>{{Lien web |langue= |auteur1= |auteur2= |titre= |url= |date= |site= |consulté le=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}.</nowiki> <nowiki>{{Lien web |langue= |auteur1= |auteur2= |auteur3= |titre= |url= |date= |site= |consulté le=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}.</nowiki> === Syntaxe minimale indentée === Présentation plus lisible, mais prend plus de place : Sans auteur : <nowiki>{{Lien web | langue = | titre = | url = <!-- Paramètre obligatoire --> | date = | site = | consulté le = </nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> }}.</nowiki> Avec un auteur : <nowiki>{{Lien web | langue = | auteur = | titre = | url = <!-- Paramètre obligatoire --> | date = | site = | consulté le = </nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> }}.</nowiki> Sans auteur et avec un éditeur : <nowiki>{{Lien web | langue = | titre = | url = <!-- Paramètre obligatoire --> | date = | site = | éditeur = | consulté le = </nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> }}.</nowiki> Avec un auteur et un éditeur : <nowiki>{{Lien web | langue = | auteur = | titre = | url = <!-- Paramètre obligatoire --> | date = | site = | éditeur = | consulté le = </nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> }}.</nowiki> === Syntaxe intermédiaire === <nowiki>{{Lien web |langue= |auteur= |titre= |url= |format= |série= |date= |site= |périodique= |éditeur= |isbn= |page= |citation= |consulté le=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> |id= |libellé= }}.</nowiki> === Syntaxe intermédiaire indentée === Présentation plus lisible, mais prend plus de place : <nowiki>{{Lien web | langue = | auteur = | lien auteur = | titre = | url = <!-- Paramètre obligatoire --> | format = | série = | date = | site = | périodique = | éditeur = | isbn = | page = | citation = | consulté le = </nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> | id = | libellé = }}.</nowiki> === Syntaxe complète === <nowiki>{{Lien web |langue= |auteur1= |prénom1= |nom1= |postnom1= |lien auteur1= |directeur1= |responsabilité1= |auteur2= |prénom2= |nom2= |postnom2= |lien auteur2= |directeur2= |responsabilité2= |et al.= |auteur institutionnel= |traducteur= |photographe= |champ libre= |titre= |sous-titre= |traduction titre= |description= |nature document= |url= |format= |accès url= |série= |site= |périodique= |lieu= |éditeur= |jour= |mois= |année= |date= |isbn= |issn= |e-issn= |oclc= |pmid= |doi= |accès doi= |jstor= |numdam= |bibcode= |math reviews= |zbl= |arxiv= |consulté le=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> |citation= |page= |id= |libellé= |archive-url= |archive-date= |dead-url= |plume=}}.</nowiki> === Syntaxe complète indentée === Présentation plus lisible, mais qui prend plus de place et scinde le paragraphe la contenant : <nowiki>{{Lien web | langue = | auteur1 = | prénom1 = | nom1 = | postnom1 = | lien auteur1 = | directeur1 = | responsabilité1 = | auteur2 = | prénom2 = | nom2 = | postnom2 = | lien auteur2 = | directeur2 = | responsabilité2 = … | et al. = | auteur institutionnel = | traducteur = | photographe = | champ libre = | titre = | sous-titre = | traduction titre = | description = | nature document = | url = <!-- Paramètre obligatoire --> | format = | accès url = | série = | site = | périodique = | lieu = | éditeur = | jour = | mois = | année = | date = | isbn = | issn = | e-issn = | oclc = | pmid = | doi = | accès doi = | jstor = | numdam = | bibcode = | math reviews = | zbl = | arxiv = | consulté le = </nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki> | citation = | page = | id = | libellé = | brisé le = | archive-url = | archive-date = | plume = }}.</nowiki> == Paramètres == ; <code id="param-langue">langue</code> : Langue du document, ne sera affichée que si elle diffère du français, à indiquer en [[Étiquette d'identification de langues IETF|code de langue IETF]] ([[Liste des codes ISO 639-1|liste]]). : Exemples : <code>en</code>, <code>it</code>, <code>fa</code> : On peut indiquer plusieurs langues en les séparant par une espace ou une virgule : <code>en, it</code>. : Nota : la langue utilisée ici étant le français, il n’est pas nécessaire de renseigner ce paramètre dans le cas où la seule langue utilisée dans le document est le français : des sondages en [[Wikipédia:Sondage/Modèle:fr|2009]] et [[Wikipédia:Sondage/Utilisation de l'indicateur de langue française|2011]] ont montré une majorité d'utilisateurs opposés à l'indication de la langue française quand il n'y a pas d'ambiguïté. ; <code id="param-auteur">auteur</code>, <code id="param-auteur1">auteur1</code> : Nom de l'auteur du document. : Exemples : <code>Jean Dupont</code>, <code><nowiki>[[Jean Dupont]]</nowiki></code> ; <code id="param-prénom">prénom</code>, <code id="param-prénom1">prénom1</code> : Prénom de l'auteur du document (paramètre alternatif à <code>[[#param-auteur|auteur]]</code>). ; <code id="param-nom">nom</code>, <code id="param-nom1">nom1</code> : Nom de famille de l'auteur du document (paramètre alternatif à <code>[[#param-auteur|auteur]]</code>). ; <code id="param-lien_auteur">lien auteur</code>, <code id="param-lien_auteur1">lien auteur1</code> : Nom de l’article de la Wikipédia consacré à l’auteur, si celui-ci existe, pour faire apparaître un lien interne sur le nom de l'auteur (qui doit être défini avec le paramètre <code>[[#param-auteur|auteur]]</code> ou <code>[[#param-nom|nom]]</code>). : Ce paramètre n'est pas utile si le lien a été placé directement dans le paramètre <code>[[#param-auteur|auteur]]</code> sous forme de syntaxe wiki (plus simple). ; <code id="param-directeur">directeur</code>, <code id="param-directeur1">directeur1</code> : Si l’auteur assume la responsabilité de directeur de publication, indiquer <code>oui</code> ; sinon, ne pas utiliser ce paramètre. ; <code id="param-responsabilité1">responsabilité1</code> : Responsabilité complémentaire éventuelle assumée par l'auteur concernant la publication ; s'il est directeur de publication, préférer le paramètre <code>[[#param-directeur|directeur]]</code>. ; <code id="param-auteur2">auteur2</code>, <code id="param-auteur3">auteur3</code>... : Nom d'un autre auteur du document. ; <code id="param-prénom2">prénom2</code>, <code id="param-prénom3">prénom3</code>... : Prénom d'un autre auteur du document (paramètre alternatif à <code>[[#param-auteur2|auteur2]]</code>). ; <code id="param-nom2">nom2</code>, <code id="param-nom3">nom3</code>... : Nom de famille d'un autre auteur du document (paramètre alternatif à <code>[[#param-auteur2|auteur2]]</code>). ; <code id="param-lien_auteur2">lien auteur2</code>, <code id="param-lien_auteur3">lien auteur3</code>... : Nom de l’article de Wikipédia consacré à l’auteur, si celui-ci existe, pour faire apparaître un lien interne sur le nom de l'auteur (qui doit être défini avec le paramètre <code>[[#param-auteur2|auteur2]]</code> ou <code>[[#param-nom2|nom2]]</code>). ; <code id="param-directeur2">directeur2</code>, <code id="param-directeur3">directeur3</code>... : Si l’auteur assume la responsabilité de directeur de publication, indiquer <code>oui</code> ; sinon, ne pas utiliser ce paramètre. ; <code id="param-responsabilité2">responsabilité2</code>, <code id="param-responsabilité3">responsabilité3</code>... : Responsabilité complémentaire éventuelle assumée par l'auteur ; s'il est directeur de publication, préférer le paramètre <code>[[#param-directeur2|directeur2]]</code>. ; <code id="param-et_al.">et al.</code> : Si ce paramètre contient une valeur quelconque, « {{et al.}} » sera inséré à la fin de la chaîne de responsabilité principale (ce qui indique que tous les auteurs ne sont pas cités). ; <code id="param-auteur_institutionnel">auteur institutionnel</code> : Si l'auteur n'est pas un personne physique, mais une personne morale (organisation, association, entreprise...) : Exemples : <code>Organisation mondiale de la santé</code> ou <code><nowiki>[[Organisation mondiale de la santé]]</nowiki></code> ; <code id="param-traducteur">traducteur</code> : Nom du/des traducteur(s) du document. ; <code id="param-photographe">photographe</code> : Nom de la personne ayant réalisé les photographies s'il y en a. ; <code id="param-champ_libre">champ libre</code> : Pour ajouter un texte quelconque, qui vient se placer entre parenthèses après les noms d’auteurs ; ne sera affiché que si un paramètre de responsabilité principale d'auteur (<code>[[#param-auteur|auteur]]</code>, <code>[[#param-nom|nom]]</code>, <code>[[#param-auteur_institutionnel|auteur institutionnel]]</code>…) est lui-même renseigné. ; <code id="param-titre">titre</code> : Titre du document : Obligatoire, sauf si le paramètre <code>[[#param-description|description]]</code> est renseigné, lorsque le document n'a pas de titre ou un titre trop vague. Si le titre n'est pas en français, le paramètre <code>[[#param-langue|langue]]</code> remplace l'utilisation du modèle {{m|Langue}}. ; <code id="param-sous-titre">sous-titre</code> : Sous-titre du document. ; <code id="param-traduction_titre">traduction titre</code> : Traduction en français du titre du document. ; <code id="param-description">description</code> : Si le document n'a pas de titre ou un titre trop vague, ce paramètre permet d'avoir une description en français de l’intérêt de cette page. Si la page a un titre, cela peut permettre d'ajouter des informations importantes comme un identifiant, numéro… ; <code id="param-nature_document">nature document</code> : Sert à indiquer la nature du document. : Exemple : <code>tableau numérique</code> ; <code id="param-url">url</code> : [[Uniform Resource Locator|Adresse web]] complète de la page concernée. Obligatoire, mais laisser vide si le DOI renvoie vers cette même adresse. : Exemple : <code><nowiki>https://www.example.com/document.html</nowiki></code> ; <code id="param-format">format</code> : Type de fichier, si différent d'une page HTML ; sera affiché entre crochets. : Voir [[:Catégorie:Modèle extension de fichier|les formats acceptés]]. Le format [[Hypertext Markup Language|HTML]] est le format par défaut et ne doit pas être indiqué. : Exemples : <code>pdf</code>, <code>doc</code>, <code>audio</code> ; <code id="url accès">accès url</code> : Définir à <code>libre</code>, <code>inscription</code>, <code>limité</code>, ou <code>payant</code> pour afficher le symbole signalétique « Accès url » correspondant, juste après le lien url en question (par défaut, un lien est considéré comme en accès libre et ce paramètre avec l'attribut <code>libre</code> ne doit être ajouté que dans certains cas particuliers, voir [[WP:Accès url]]). ; <code id="param-série">série</code> : Nom de la série ou de la collection dont fait partie le document. ; <code id="param-site">site</code> : Nom du site, s'il ne s'agit pas d'un périodique, ou adresse web (votresite.com). Ajouter un wikilien vers l'article de Wikipédia (s'il existe), par exemple <code><nowiki>[[Organisation des Nations unies]]</nowiki></code>), ou, si le nom du site n'est pas explicite, une description en quelques mots, par exemple <code>Savoir News, première agence de presse privée au Togo</code>. : <small>Correspond au champ <code>work</code> sur Wikipédia en anglais.</small> ; <code id="param-périodique">périodique</code> : S'il s'agit d’un périodique, indiquer son nom ici. Ajouter si possible un lien vers l'article Wikipédia correspondant. : S'il s'agit d'un article publié dans un périodique, le modèle {{m|Article}} est plus adapté. : Exemple : <code><nowiki>[[Le Monde]]</nowiki></code> ; <code id="param-éditeur">éditeur</code> : Éditeur du support bibliographique. ; <code id="param-date">date</code>, <code id="param-en_ligne_le">en ligne le</code> : Date de publication du document. : Exemples : <code>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}</code>, <code>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}</code> ou <code>{{CURRENTDAY2}}/{{CURRENTMONTH}}/{{CURRENTYEAR}}</code> (dans ce dernier format, la date est considérée comme <var>JJ</var>/<var>MM</var>/<var>YYYY</var>, au contraire des [[Date#Pays utilisant le format mm-jj-aa|dates américaines]] qui inversent le mois et le jour). ; <code id="param-jour">jour</code> : Jour de publication. Utiliser de préférence le paramètre <code>[[#param-date|date]]</code>. : Exemple : <code>{{CURRENTDAY}}</code> ; <code id="param-mois">mois</code> : Mois de publication. Utiliser de préférence le paramètre <code>[[#param-date|date]]</code>. : Exemples : <code>{{CURRENTMONTHNAME}}</code> ou <code>{{CURRENTMONTH}}</code> ; <code id="param-année">année</code> : Année de publication en quatre chiffres. Utiliser de préférence le paramètre <code>[[#param-date|date]]</code>. : Exemple : <code>{{CURRENTYEAR}}</code> ; <code id="param-isbn">isbn</code> : [[International Standard Book Number|ISBN]] du support bibliographique. ; <code id="param-issn">issn</code> : [[International Standard Serial Number|ISSN]] de la publication. ; <code id="param-e-issn">e-issn</code> : [[International Standard Serial Number#ISSN_électronique|ISSN électronique]] de la publication. ; <code id="param-oclc">oclc</code> ; <code id="param-pmid">pmid</code> ; <code id="param-pmcid">pmcid</code> ; <code id="param-doi">doi</code> ; <code id="doi accès">accès doi</code> : Définir à <code>libre</code>, <code>inscription</code>, <code>limité</code>, ou <code>payant</code> pour afficher le symbole signalétique « Accès doi » correspondant, juste après le lien doi en question (par défaut, un lien est considéré comme en accès libre et ce paramètre avec l'attribut <code>libre</code> ne doit être ajouté que dans certains cas particuliers, voir [[WP:Accès url]]). ; <code id="param-jstor">jstor</code> ; <code id="param-bibcode">bibcode</code> ; <code id="param-math_reviews">math reviews</code> ; <code id="param-zbmath">zbmath</code> ; <code id="param-arxiv">arxiv</code> : Identifiants [[Online Computer Library Center|OCLC]], [[PubMed]], [[Digital Object Identifier|DOI]], [[JSTOR]], [[Bibcode]], [[Mathematical Reviews]], [[Zentralblatt MATH]] ou [[arXiv]]. : Si l'un de ces paramètres est rempli, le paramètre <code>[[#param-url|url]]</code> n'est plus obligatoire. ; <code id="param-consulté_le">consulté le</code> : Date de consultation du document. Permet de surveiller l’obsolescence de l'URL. : <small>Correspond au champ <code>accessdate</code> sur la Wikipédia anglophone.</small> ; <code id="param-page">page</code> : Numéro, liste ou plage de pages. À associer à une citation. : Exemples : <code>14</code>, <code>15-18</code>, <code>21, 26, 32</code> ; <code id="param-citation">citation</code> <small>(alias : <code>extrait</code>)</small> : Permet de formater une citation de la publication dans la note de fin de page. Cette citation est considérée comme étant dans la langue déclarée dans le paramètre <code>[[#param-langue|langue]]</code>. ; <code id="param-id">id</code> : Identifiant unique dans l'article incluant le modèle, qui permet le lien interne <code><nowiki>[[#id_du_lien|voir ce lien]]</nowiki></code> (notamment dans les notes et références de bas de page ; pour des exemples d’utilisation, voir la documentation des modèles {{m|Sfn}} ou {{m|Harvsp}}). ; <code id="param-plume">plume</code> : Définir à <code>oui</code> pour afficher le symbole signalétique « [[Aide:Présentez vos sources/avancée#Solution à l’aide du symbole signalétique « Plume »|plume]] » ({{plume}}) à la fin de la référence. : Lorsque ce paramètre est utilisé, un point est ajouté automatiquement entre la fin de la référence et la plume. Il ne faut donc pas ajouter de point entre la fin du modèle <code><nowiki>{{Lien web}}</nowiki></code> et la balise <code><nowiki></ref></nowiki></code> en cas d'utilisation de ce paramètre. ; <code id="param-libellé">libellé</code> : Libellé permettant d'identifier un renvoi bibliographique. Voir « [[Wikipédia:Conventions bibliographiques#Renvois bibliographiques (références Harvard et autres)|Renvois bibliographiques (références Harvard et autres)]] » pour plus de détails. : Contrairement à <code>[[#param-id|id]]</code>, ce paramètre n'est pas utilisé pour créer des liens avec d'autres modèles ; il s'agit d'un simple libellé d'affichage. <!--Voir aussi [[#Exemples avec des renvois bibliographiques]].--> ; <code id="param-brisé_le">brisé le</code> : Booléen, ou date et heure où l'on constate qu'un site web ne fonctionne plus, ce qui permet à tous d'y accéder à travers les archives ou d'en chercher un autre en remplacement. Lorsque ce paramètre est renseigné, quelle que soit sa valeur, le titre est affiché en rouge, comme avec le modèle {{m|Lien brisé}}, si le paramètre <code>[[#param-archive-url|archive-url]]</code> n'est pas renseigné. : NB : certains [[Bot informatique|bots]] peuvent aussi les compléter. Voir « [[Projet:Correction des liens externes#J'ai trouvé un lien mort, que faire ?|J'ai trouvé un lien mort]] » pour des conseils plus détaillés. ; <code id="param-archive-url">archive-url</code> : ''(déconseillé)'' Adresse URL que le modèle pourra afficher dans le lien « archive » ; laisser vide de préférence, en faveur de l'archivage partiellement automatisé (<code>archive-url</code> ne déclenche l'archivage de la page cible que lorsqu'un utilisateur clique sur le lien « archive »), à moins que celui-ci n'échoue. Le modèle {{m|Lien archive}} permet d'orienter vers une version archivée de la page web visée. ; <code id="param-archive-date">archive-date</code> : ''(déconseillé)'' Date que le modèle affichera dans le lien « archive » si <code>[[#param-archive-url|archive-url]]</code> est utilisé, <code>[[#param-archive-date|archive-date]]</code> étant alors obligatoire. == Exemples == === Lien basique === <pre>{{Lien web |langue=en |titre=Toho sues Cosmo Contents for selling DVDs of Kurosawa’s early works |url=https://akirakurosawa.info/2007/04/02/toho-sues-cosmo-contents-for-selling-dvds-of-kurosawas-early-works/ |date=1 avril 2007}}.</pre> comme <pre>{{Lien web | langue = en | titre = Toho sues Cosmo Contents for selling DVDs of Kurosawa’s early works | url = https://akirakurosawa.info/2007/04/02/toho-sues-cosmo-contents-for-selling-dvds-of-kurosawas-early-works/ | date = 1 avril 2007 }}.</pre> donnent : « {{Lien web |langue=en |titre=Toho sues Cosmo Contents for selling DVDs of Kurosawa’s early works |url=https://akirakurosawa.info/2007/04/02/toho-sues-cosmo-contents-for-selling-dvds-of-kurosawas-early-works/ |date=1 avril 2007}}. » === Lien plus complet === <pre>{{Lien web |langue=en |auteur=Massoumeh Price |titre=Translation Movements in Iran; Sassanian Era to Year 2000, Expansion, Preservation and Modernization |url=https://www.iranchamber.com/podium/literature/030206_translation_movement_iran.php |éditeur=Iran Chamber |année=2000 |consulté le=13 octobre 2006}}.</pre> comme <pre>{{Lien web | langue = en | auteur = Massoumeh Price | titre = Translation Movements in Iran; Sassanian Era to Year 2000, Expansion, Preservation and Modernization | url = https://www.iranchamber.com/literature/articles/translation_movement_iran.php | éditeur = Iran Chamber | année = 2000 | consulté le = 13 octobre 2006 }}.</pre> donnent : « {{Lien web |langue=en |auteur=Massoumeh Price |titre=Translation Movements in Iran; Sassanian Era to Year 2000, Expansion, Preservation and Modernization |url=https://www.iranchamber.com/podium/literature/030206_translation_movement_iran.php |éditeur=Iran Chamber |année=2000 |consulté le=13 octobre 2006}}. » === Lien vers un site, objet d'un article sur Wikipédia === <pre>{{Lien web |auteur=Virgile Juhan |titre= Pourquoi Wikipedia est si bien référencé |url=https://www.journaldunet.com/solutions/seo-referencement/1000472-pourquoi-wikipedia-est-si-bien-reference/ |site=[[Le Journal du Net]] |date=27/06/2012 |consulté le=2021-01-07}}.</pre> comme <pre>{{Lien web | auteur = Virgile Juhan | titre = Pourquoi Wikipedia est si bien référencé | url = https://www.journaldunet.com/solutions/seo-referencement/1000472-pourquoi-wikipedia-est-si-bien-reference/ | site = [[Le Journal du Net]] | date = 27 juin 2012 | consulté le = 7 janvier 2021 }}. </pre> donnent : « {{Lien web |auteur=Virgile Juhan |titre=Pourquoi Wikipedia est si bien référencé |url=https://www.journaldunet.com/solutions/seo-referencement/1000472-pourquoi-wikipedia-est-si-bien-reference/ |site=[[Le Journal du Net]] |date=27/06/2012 |consulté le=2021-01-07}}. » === Lien vers un ouvrage publié sur Internet === <pre>{{Lien web |auteur=[[Joël de Rosnay]] |titre=2020, les scénarios du futur : comprendre le monde qui vient |url=https://www.agoravox.fr/sc2020/2020.pdf |format=PDF |site=[[AgoraVox]] |éditeur=Des idées et des hommes |date=avril 2007 |isbn=978-2-35369-013-8 |consulté le=24 novembre 2013}}.</pre> comme <pre>{{Lien web | auteur = [[Joël de Rosnay]] | titre = 2020, les scénarios du futur : comprendre le monde qui vient | url = https://www.agoravox.fr/sc2020/2020.pdf | format = pdf | site = [[AgoraVox]] | éditeur = Des idées et des hommes | date = avril 2007 | isbn = 978-2-35369-013-8 | consulté le = 24 novembre 2013 }}.</pre> donnent : « {{Lien web |auteur=[[Joël de Rosnay]] |titre=2020, les scénarios du futur : comprendre le monde qui vient |url=https://www.agoravox.fr/sc2020/2020.pdf |format=PDF |site=[[AgoraVox]] |éditeur=Des idées et des hommes |date=avril 2007 |isbn=978-2-35369-013-8 |consulté le=24 novembre 2013}}. » == Notes == On n'utilisera <code>lien auteur1</code> et/ou <code>coauteurs</code> que lorsque <code>auteur1</code> est donné. Lorsque l'URL contient des caractères spéciaux, on peut utiliser [[Wikipédia:URL#Codage|<nowiki>{{urlencode:URL}}</nowiki>]]. L'ordre des paramètres n'a pas d'influence sur le résultat obtenu et affiché. Ils sont présentés ici par l'ordre d'apparition à l'affichage pour faciliter la compréhension. == Voir aussi == * [[Wikipédia:Conventions bibliographiques]], pour les ouvrages écrits publiés. * {{m|Lien brisé}}, pour réparer un [[Lien mort|lien brisé]] (syntaxe identique à celle de Lien web). * {{m|Lien archive}}, pour un lien externe vers une page d'[[Internet Archive]] remplaçant un lien web disparu ou dirigeant vers une version antérieure d'une page web. * [[Aide:Utilitaires#MonobookToolbarSources]] : boutons pour barre d'outil d'édition * [https://refswikipedia.toolforge.org/ refswikipedia], [http://tools51.nasqueron.org/wikimedia/write/sourcetemplatesgenerator/ SourceTemplatesGenerator] et [[WP:REFILL|reFill]], outils qui génèrent une référence bibilographique à partir d'une URL ; les premiers sur une page Web, le dernier sur un lien ajouté sur l'interface de l'utilisateur. == TemplateData == {{Boîte déroulante/début|titre=TemplateData}} <templatedata> { "description": "Modèle de source pour citer une page ou document web en référence. Pour les éditions dans des périodiques, le modèle {{Article}} est plus adapté.", "params": { "langue": { "suggested": true, "description": "Langue dans laquelle est écrite la page (français, anglais, russe…) ou code langue (fr, en, ru…). Voir la page « Modèle:Code langue 2#Liste des codes ».", "type": "string", "aliases": [ "lang", "language", "lien langue" ], "label": "Langue", "example": "« en », « es »" }, "format": { "description": "Format du fichier ou de la référence. À préciser s'il s'agit d'autre chose que d'une page HTML.", "type": "string", "aliases": [ "format électronique" ], "example": "« pdf », « doc », « audio »", "label": "Format électronique", "suggested": true }, "date": { "suggested": true, "description": "Date de publication du document. Formats acceptés : « 1 janvier 2015 », « 01/01/2015 », « 01-01-2015 » ou « 2015-01-01 ». Si vous n'avez pas le jour, utilisez à la place les champs « Date de publication - année » et « Date de publication - mois ».", "type": "string", "aliases": [ "en ligne le", "en ligne" ], "example": "1 janvier 2015", "label": "Date de publication" }, "responsabilité1": { "type": "string", "description": "Responsabilité assumée par le premier auteur. Affiché entre parenthèses après l'auteur.", "label": "Auteur - responsabilité" }, "directeur": { "type": "line", "description": "Si l'auteur est aussi directeur de publication, indiquer « oui ».", "example": "oui", "label": "Auteur - directeur", "aliases": [ "directeur1" ] }, "auteur2": { "description": "Deuxième auteur du document. Si un article consacré à cet auteur existe sur l'encyclopédie, il est possible de faire un lien interne en l'entourant de crochets : « [[Jean Dupont]] ».", "type": "string", "aliases": [ "author2" ], "label": "Auteur 2", "example": "Jean Dupont" }, "auteur3": { "label": "Auteur 3", "aliases": [ "author3" ], "description": "Autre auteur du document. Si un article consacré à cet auteur existe sur l'encyclopédie, il est possible de faire un lien interne en l'entourant de crochets : « [[Jean Dupont]] ».", "example": "Jean Dupont", "type": "string" }, "auteur4": { "label": "Auteur 4", "aliases": [ "author4" ], "inherits": "auteur3" }, "auteur5": { "label": "Auteur 5", "aliases": [ "author5" ], "inherits": "auteur3" }, "auteur6": { "label": "Auteur 6", "aliases": [ "author6" ], "inherits": "auteur3" }, "auteur7": { "label": "Auteur 7", "aliases": [ "author7" ], "inherits": "auteur3" }, "auteur8": { "label": "Auteur 8", "aliases": [ "author8" ], "inherits": "auteur3" }, "auteur9": { "label": "Auteur 9", "aliases": [ "author9" ], "inherits": "auteur3" }, "auteur10": { "label": "Auteur 10", "aliases": [ "author10" ], "inherits": "auteur3" }, "auteur11": { "label": "Auteur 11", "aliases": [ "author11" ], "inherits": "auteur3" }, "auteur12": { "label": "Auteur 12", "aliases": [ "author12" ], "inherits": "auteur3" }, "auteur13": { "label": "Auteur 13", "aliases": [ "author13" ], "inherits": "auteur3" }, "auteur14": { "label": "Auteur 14", "aliases": [ "author14" ], "inherits": "auteur3" }, "nom2": { "type": "string", "aliases": [ "last2" ], "description": "Nom de famille du deuxième auteur. Champ alternatif à « Auteur 2 », à utiliser avec le champ « Auteur 2 - prénom ».", "label": "Auteur 2 - nom", "example": "Dupont" }, "prénom2": { "aliases": [ "first2" ], "type": "string", "description": "Prénom du deuxième auteur. Champ alternatif à « Auteur 2 », à utiliser avec le champ « Auteur 2 - nom ».", "label": "Auteur 2 - prénom", "example": "Jean" }, "lien auteur2": { "description": "Nom de l'article Wikipédia consacré au deuxième auteur, s'il existe déjà. Le lien peut aussi être fait dans le champ « Auteur 2 » en l'entourant de crochets : « [[Jean Dupont]] ».", "type": "string", "label": "Auteur 2 - lien" }, "responsabilité2": { "type": "string", "description": "Responsabilité assumée par le deuxième auteur. Affiché entre parenthèses après l'auteur.", "label": "Auteur 2 - responsabilité" }, "directeur2": { "type": "string", "description": "Si le deuxième auteur est aussi directeur de publication, indiquer « oui ».", "label": "Auteur 2 - directeur", "example": "oui" }, "nom3": { "aliases": [ "last3" ], "label": "Auteur 3 - nom", "description": "Nom de famille d'un autre auteur.", "example": "Dupont", "type": "string" }, "prénom3": { "inherits": "prénom2", "aliases": [ "first3" ], "label": "Auteur 3 - prénom", "description": "Prénom d'un autre auteur.", "example": "Jean", "type": "string" }, "nom4": { "label": "Auteur 4 - nom", "aliases": [ "last4" ], "inherits": "nom3" }, "prénom4": { "label": "Auteur 4 - prénom", "aliases": [ "first4" ], "inherits": "prénom3" }, "nom5": { "label": "Auteur 5 - nom", "aliases": [ "last5" ], "inherits": "nom3" }, "prénom5": { "label": "Auteur 5 - prénom", "aliases": [ "first5" ], "inherits": "prénom3" }, "nom6": { "label": "Auteur 6 - nom", "aliases": [ "last6" ], "inherits": "nom3" }, "prénom6": { "label": "Auteur 6 - prénom", "aliases": [ "first6" ], "inherits": "prénom3" }, "nom7": { "label": "Auteur 7 - nom", "aliases": [ "last7" ], "inherits": "nom3" }, "prénom7": { "label": "Auteur 7 - prénom", "aliases": [ "first7" ], "inherits": "prénom3" }, "nom8": { "label": "Auteur 8 - nom", "aliases": [ "last8" ], "inherits": "nom3" }, "prénom8": { "label": "Auteur 8 - prénom", "aliases": [ "first8" ], "inherits": "prénom3" }, "nom9": { "label": "Auteur 9 - nom", "aliases": [ "last9" ], "inherits": "nom3" }, "prénom9": { "label": "Auteur 9 - prénom", "aliases": [ "first9" ], "inherits": "prénom3" }, "nom10": { "label": "Auteur 10 - nom", "aliases": [ "last10" ], "inherits": "nom3" }, "prénom10": { "label": "Auteur 10 - prénom", "aliases": [ "first10" ], "inherits": "prénom3" }, "nom11": { "label": "Auteur 11 - nom", "aliases": [ "last11" ], "inherits": "nom3" }, "prénom11": { "label": "Auteur 11 - prénom", "aliases": [ "first11" ], "inherits": "prénom3" }, "nom12": { "label": "Auteur 12 - nom", "aliases": [ "last12" ], "inherits": "nom3" }, "prénom12": { "label": "Auteur 12 - prénom", "aliases": [ "first12" ], "inherits": "prénom3" }, "nom13": { "label": "Auteur 13 - nom", "aliases": [ "last13" ], "inherits": "nom3" }, "prénom13": { "label": "Auteur 13 - prénom", "aliases": [ "first13" ], "inherits": "prénom3" }, "nom14": { "label": "Auteur 14 - nom", "aliases": [ "last14" ], "inherits": "nom3" }, "prénom14": { "label": "Auteur 14 - prénom", "aliases": [ "first14" ], "inherits": "prénom3" }, "et al.": { "label": "et al. ?", "type": "line", "description": "Si ce paramètre contient une valeur quelconque, le texte « et al. » (locution latine \"et autres\") sera inséré à la fin de la chaîne de responsabilité principale, ce qui indique que tous les auteurs ne sont pas cités — volontairement ou non.", "aliases": [ "et alii" ], "example": "oui" }, "auteur institutionnel": { "type": "string", "description": "Si l'auteur n'est pas un personne physique, mais une personne morale (organisation, association, entreprise…).", "label": "Auteur institutionnel", "example": "[[Organisation mondiale de la santé]]" }, "coauteurs": { "description": "D’autres auteurs (facultatif et uniquement si « Auteur » est donné).", "type": "string", "aliases": [ "coauteur", "coauthors" ], "deprecated": true, "label": "Coauteurs" }, "traducteur": { "label": "Traducteur", "type": "string", "description": "Nom du (des) traducteur(s) du document. Ajouter « ({{dir.}}) » s’il existe un traducteur principal.", "aliases": [ "trad", "traduction" ] }, "photographe": { "label": "Photographe", "type": "string", "description": "Nom de la personne ayant réalisé les photographies, s'il y en a." }, "titre": { "label": "Titre du document", "type": "string", "required": true, "aliases": [ "title" ], "description": "Titre du document." }, "sous-titre": { "label": "Titre du document - sous-titre", "type": "string", "description": "Sous-titre du document." }, "url": { "label": "Adresse web (URL)", "description": "Adresse web du document, sous forme d'URL complète. Laisser vide si le DOI (Digital Object Identifier) renvoie vers cette même adresse.", "type": "url", "required": true, "aliases": [ "url texte", "lire en ligne", "lien" ], "example": "https://www.example.com/document.html" }, "série": { "description": "Nom de la série ou de la collection dont fait partie ce document.", "type": "string", "aliases": [ "work" ], "label": "Série / collection" }, "site": { "suggested": true, "description": "Indiquer le nom du site ou, si le nom du site n'est pas explicite, une description en quelques mots. Ne pas indiquer l'URL complète. Insérer si possible un lien interne, de la manière suivante : « [[Organisation mondiale du commerce]] ».", "type": "string", "aliases": [ "website" ], "example": "[[Organisation mondiale du commerce]], ou à défaut d'article existant : exemple.com", "label": "Site" }, "périodique": { "description": "S'il s'agit d’un périodique, indiquer son nom. Ajouter si possible un lien vers l'article Wikipédia correspondant, de la manière suivante : « [[Le Monde]] ».", "type": "string", "example": "[[Le Monde]]", "label": "Périodique" }, "lieu": { "label": "Lieu d'édition", "type": "string", "description": "Lieu d'édition du périodique.", "aliases": [ "lieu édition", "location" ] }, "éditeur": { "description": "L’éditeur du support bibliographique.", "type": "string", "aliases": [ "publisher", "editeur" ], "label": "Éditeur" }, "lien éditeur": { "description": "Nom de l’article de Wikipédia sur la maison d’édition ou l'organisme éditeur.", "type": "wiki-page-name", "example": "Fayard (maison d'édition)", "deprecated": "le lien peut être mis directement dans le champ « Éditeur ».", "label": "Éditeur - lien" }, "jour": { "description": "Le jour de publication. Champ alternatif à « Date de publication », à utiliser avec « Date de publication - mois » et « Date de publication - année ».", "type": "number", "aliases": [ "day" ], "label": "Date de publication - jour", "example": "1" }, "mois": { "description": "Le mois de publication du document. Champ alternatif à « Date de publication », à utiliser avec « Date de publication - année ».", "type": "line", "aliases": [ "month" ], "label": "Date de publication - mois", "example": "« janvier » ou « 1 »" }, "année": { "description": "L’année de publication, en quatre chiffres. Champ alternatif à « Date de publication ».", "type": "number", "aliases": [ "year" ], "label": "Date de publication - année", "example": "2015" }, "isbn": { "label": "ISBN", "description": "ISBN (International Standard Book Number) du support bibliographique.", "type": "line", "aliases": [ "ISBN" ], "example": "2-7654-1005-4" }, "issn": { "type": "line", "label": "ISSN", "description": "ISSN (International Standard Serial Number) de la publication." }, "e-issn": { "type": "line", "label": "E-ISSN", "description": "ISSN électronique (Electronique International Standard Book Number) de la publication sur internet.", "example": "ISSN 2380-5382" }, "oclc": { "type": "number", "label": "OCLC", "description": "Identifiant OCLC (Online Computer Library Center), un système de gestion des catalogues de bibliothèques. " }, "pmid": { "label": "PMID", "type": "number", "description": "Identifiant PubMed. PubMed est une base de données de publication dans le domaine de la biologie et la médecine.", "aliases": [ "PMID" ] }, "pmcid": { "label": "PMCID", "type": "line", "description": "Identifiant PubMed Central.", "aliases": [ "pmc" ] }, "doi": { "label": "DOI", "type": "line", "description": "Digital Object Identifier (littéralement : identifiant numérique d'objet). Identifiant unique d'une ressource numérique permettant de retrouver cette ressource, même si, par exemple, elle change d'adresse URL. ", "aliases": [ "DOI" ], "example": "doi:10.1340/309registries" }, "accès doi": { "label": "Accès DOI", "description": "Signale si l'accès au document est payant, restreint ou gratuit. S'emploie si le paramètre « doi » (Digital Object Identifier) est renseigné.", "type": "line", "suggestedvalues": [ "libre", "inscription", "limité", "payant" ], "example": "libre" }, "jstor": { "label": "JStor", "type": "line", "description": "Identifiant Serial Item and Contribution Identifier." }, "bibcode": { "type": "line", "description": "Identifiant bibcode." }, "math reviews": { "type": "line", "description": "Identifiant MR." }, "zbl": { "type": "line", "label": "zbMATH", "description": "Identifiant zbMATH.", "aliases": [ "zbmath" ] }, "arxiv": { "type": "line", "label": "arXiv", "description": "Identifiant arXiv. ArXiv est une archive ouverte de prépublications d'articles scientifiques." }, "consulté le": { "suggested": true, "description": "Date de consultation du document.", "type": "string", "aliases": [ "accessdate", "access-date", "Consulté le", "consulté", "consultée le" ], "example": "31 décembre 2015", "label": "Date de consultation", "autovalue": "" }, "extrait": { "description": "Permet de formater une citation de la publication dans la note de bas de page.", "type": "string", "aliases": [ "citation", "quote" ], "label": "Extrait" }, "page": { "description": "Un numéro, une liste ou une plage de pages. À associer éventuellement à une citation.", "type": "string", "aliases": [ "pages", "passage" ], "label": "Page", "example": "« 14 », « 15-18 », « 21, 26, 32 »" }, "id": { "label": "id", "description": "Identifiant unique dans la page qui inclut le modèle, permettant de créer un lien ancré vers cette référence.", "type": "line" }, "libellé": { "type": "line", "description": "Libellé permettant d'identifier un renvoi bibliographique." }, "traduction titre": { "label": "Titre du document - traduction", "type": "string", "description": "Traduction en français du titre du document." }, "description": { "description": "Si le document n'a pas de titre ou un titre trop vague, ce champ permet de saisir une description en français de l’intérêt de ce document. Si le document a un titre, il permet d'ajouter des informations importantes comme un identifiant, numéro...", "type": "string", "label": "Description" }, "archive-url": { "aliases": [ "archiveurl" ], "label": "Lien vers la page archivée (déconseillé)", "description": "Adresse url d'une archive du lien donné dans Lien. Préférer {{m|Lien archive}} si nécessaire.", "type": "url" }, "archive-date": { "aliases": [ "archivedate" ], "label": "Date de l'archivage (déconseillé)", "description": "Date à préciser dans le libellé du lien vers l'archive. Préférer {{m|Lien archive}} si nécessaire.", "type": "date" }, "brisé le": { "aliases": [ "dead-url", "deadurl", "lien brisé" ], "label": "brisé le", "description": "Permet de signaler si un lien est brisé.", "example": "4 juin 2018, oui" }, "lien auteur": { "aliases": [ "lien auteur1" ], "description": "Nom de l'article de Wikipédia consacré à l'auteur, s'il existe déjà. Le lien peut aussi être fait dans le champ « Auteur » en l'entourant de crochets : « [[Jean Dupont]] ».", "type": "wiki-page-name", "label": "Auteur - lien", "example": "Jean Dupont" }, "plume": { "label": "Afficher plume", "description": "Indiquer « oui » pour signaler que ce document sert de source à l'article.", "example": "oui", "type": "line" }, "nature document": { "label": "Nature du document", "description": "Préciser la nature du document.", "example": "« tableau numérique », « rapport », « communiqué de presse »", "type": "string" }, "auteur": { "aliases": [ "auteurs", "auteur1", "author" ], "label": "Auteur", "description": "Nom de l'auteur du document. Si un article consacré à cet auteur existe sur l'encyclopédie, il est possible de faire un lien interne en l'entourant de crochets : « [[Jean Dupont]] ». Un 2e auteur peut être défini avec le champ « Auteur 2 ».", "example": "Jean Dupont", "type": "string", "suggested": true }, "nom": { "aliases": [ "nom1", "last1", "last" ], "label": "Auteur - nom", "description": "Nom de famille de l'auteur. Champ alternatif à « Auteur », à utiliser avec le champ « Auteur - prénom ».", "example": "Dupont", "type": "string" }, "prénom": { "aliases": [ "prénom1", "first1", "first" ], "label": "Auteur - prénom", "description": "Prénom de l'auteur. Champ alternatif à « Auteur », à utiliser avec le champ « Auteur - nom ».", "example": "Jean", "type": "string" }, "accès url": { "description": "Signale que l'accès au document est payant, restreint ou gratuit.", "type": "string", "label": "Accès URL", "suggestedvalues": [ "libre", "inscription", "limité ", "payant" ], "default": "libre", "suggested": true } }, "maps": { "citoid": { "language": "langue", "director": [ [ "prénom", "nom" ], [ "prénom2", "nom2" ] ], "podcaster": [ [ "prénom", "nom" ], [ "prénom2", "nom2" ] ], "author": [ [ "prénom", "nom" ], [ "prénom2", "nom2" ] ], "title": "titre", "subject": "titre", "url": "url", "series": "série", "websiteTitle": "site", "publicationTitle": "site", "blogTitle": "site", "forumTitle": "site", "publisher": "éditeur", "studio": "éditeur", "date": "date", "ISBN": [ "isbn" ], "ISSN": [ "issn" ], "E-ISSN": [ "e-issn" ], "PMID": "pmid", "PMCID": "pmcid", "DOI": "doi", "accessDate": "consulté le", "pages": "page", "archiveUrl": "archive-url", "archiveDate": "archive-date" } }, "paramOrder": [ "langue", "auteur", "prénom", "nom", "lien auteur", "responsabilité1", "directeur", "auteur2", "prénom2", "nom2", "lien auteur2", "responsabilité2", "directeur2", "auteur3", "prénom3", "nom3", "auteur4", "prénom4", "nom4", "auteur5", "prénom5", "nom5", "auteur6", "prénom6", "nom6", "auteur7", "prénom7", "nom7", "auteur8", "prénom8", "nom8", "auteur9", "prénom9", "nom9", "auteur10", "prénom10", "nom10", "auteur11", "prénom11", "nom11", "auteur12", "prénom12", "nom12", "auteur13", "prénom13", "nom13", "auteur14", "prénom14", "nom14", "et al.", "auteur institutionnel", "coauteurs", "traducteur", "photographe", "titre", "sous-titre", "traduction titre", "description", "url", "format", "accès url", "série", "site", "périodique", "lieu", "éditeur", "lien éditeur", "date", "jour", "mois", "année", "isbn", "issn", "e-issn", "oclc", "pmid", "pmcid", "doi", "accès doi", "jstor", "bibcode", "math reviews", "zbl", "arxiv", "consulté le", "extrait", "page", "id", "libellé", "archive-url", "archive-date", "brisé le", "plume", "nature document" ], "format": "{{_ |_=_}}" } </templatedata> {{Boîte déroulante/fin}} <!-- {{Palette|Modèles de sources|Modèles bibliographiques}} --> <includeonly> [[Catégorie:Modèle]] <!-- [[Catégorie:Modèle créant un lien externe]] [[Catégorie:Modèle pour bibliographie|*]] [[Catégorie:Modèle de source|*]] [[Catégorie:Modèle citation]] [[Catégorie:Modèle de formatage]] --> </includeonly> oa334lvg45zw3pz7jqpmisowx45d6y6 Catégorie:Modèle éd l'épace modèle 14 13422 79902 2026-08-13T16:03:26Z Geoleplubo 204 N 79902 wikitext text/x-wiki Chole catégorie contient des modèles qui sont propes à l'épace ''Modèle''. Chés ''dsous''-modèles i sont uzés pou foaire d'eutes modèles. * én poin les foaire aparoète dirèktémint dins chés artikes. [[Catégorie:Modèle des épaces non incyclopédikes|Modele]] [[Catégorie:Modèle par épace éd noms|Modele]] t03frkuwmx75pddir3v70obm74h7azf 79907 79902 2026-08-13T16:33:12Z Geoleplubo 204 Geoleplubo a déplacé l' pache [[Catégorie:Modèle de l'espace Modèle]] vers [[Catégorie:Catégorie:Modèle éd l'épace modèle]] 79902 wikitext text/x-wiki Chole catégorie contient des modèles qui sont propes à l'épace ''Modèle''. Chés ''dsous''-modèles i sont uzés pou foaire d'eutes modèles. * én poin les foaire aparoète dirèktémint dins chés artikes. [[Catégorie:Modèle des épaces non incyclopédikes|Modele]] [[Catégorie:Modèle par épace éd noms|Modele]] t03frkuwmx75pddir3v70obm74h7azf 79909 79907 2026-08-13T16:34:38Z Geoleplubo 204 Geoleplubo a déplacé l' pache [[Catégorie:Catégorie:Modèle éd l'épace modèle]] vers [[Catégorie:Modèle éd l'épace modèle]] 79902 wikitext text/x-wiki Chole catégorie contient des modèles qui sont propes à l'épace ''Modèle''. Chés ''dsous''-modèles i sont uzés pou foaire d'eutes modèles. * én poin les foaire aparoète dirèktémint dins chés artikes. [[Catégorie:Modèle des épaces non incyclopédikes|Modele]] [[Catégorie:Modèle par épace éd noms|Modele]] t03frkuwmx75pddir3v70obm74h7azf Catégorie:Modèle des épaces non incyclopédikes 14 13423 79903 2026-08-13T16:09:25Z Geoleplubo 204 N 79903 wikitext text/x-wiki Chole catégorie al ergroupe chés modèles qui n’ sont poin prope à un espace non-incyclopédike. [[Catégorie:Épace Modèle|non encyclopédiques]] phgn0erixym49a95k86qvvju8uxsodo Catégorie:Épace Modèle 14 13424 79904 2026-08-13T16:17:16Z Geoleplubo 204 Catégorie:Épace non incyclopédike 79904 wikitext text/x-wiki * Chole catégorie et pi chés dsous-catégories cha donne chés modèles dins ch’ Wikipédia picard. [[Catégorie:Éspache non inciclopédique]] 6833iip0ucj3gs4y1af41xyvdbisnd1 Catégorie:Modèle par épace éd noms 14 13425 79905 2026-08-13T16:21:45Z Geoleplubo 204 N 79905 wikitext text/x-wiki [[Catégorie:Épace Modèle| Épace d’ noms]] 83iiyww4ec2vfuu11sk2g151man5via Catégorie:Modèle de l'espace Modèle 14 13426 79908 2026-08-13T16:33:12Z Geoleplubo 204 Geoleplubo a déplacé l' pache [[Catégorie:Modèle de l'espace Modèle]] vers [[Catégorie:Catégorie:Modèle éd l'épace modèle]] 79908 wikitext text/x-wiki #REDIRECTION [[:Catégorie:Catégorie:Modèle éd l'épace modèle]] hlo2ol3wt6lkp4wdnugs945oldf4gmb Catégorie:Catégorie:Modèle éd l'épace modèle 14 13427 79910 2026-08-13T16:34:38Z Geoleplubo 204 Geoleplubo a déplacé l' pache [[Catégorie:Catégorie:Modèle éd l'épace modèle]] vers [[Catégorie:Modèle éd l'épace modèle]] 79910 wikitext text/x-wiki #REDIRECTION [[:Catégorie:Modèle éd l'épace modèle]] kikw33e2i9xtu0303xih7r7zlrdv6hh Catégorie:Redirections connectées à un élément Wikidata 14 13428 79912 2026-08-14T11:23:53Z PK2 13418 Page vide créée 79912 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1