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]] 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]] 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]] 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 ' ' or '' )
.. '<abbr class="abbr" title="' .. args[2] .. '">'
.. args[1]
.. '</abbr>'
.. ( args.nbsp == '+' and ' ' 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>[[[' .. ref .. '|détail de l’édition]]]</small>'
end
function Commun.detailEditions( ref )
return '<small>[[[' .. ref .. '|détail des éditions]]]</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( ' p%.$', '' )
:gsub( ' 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 .. ' '
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
.. ' <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 = ' '
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 .. ' (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">[['
.. archiveUrl .. ' ' .. textArchive
.. ']]</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 ' [' .. format .. ']' -- '[' = '<nowiki>[</nowiki>', ']' = '<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