imported>Jacques Ducloy |
imported>Jacques Ducloy |
Ligne 1 : |
Ligne 1 : |
− | {{Sous-page de documentation}}<includeonly> | + | local Lien = { } |
− | {{Protection}}
| |
− | {{Modèle utilisant les modules Lua|Module:Biblio}}</includeonly>
| |
| | | |
− | == Utilisation == | + | local Commun = require( 'Module:Biblio/Commun' ) |
− | 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:Notes et références|notes et références]].
| + | local References = require( 'Module:Biblio/Références' ) |
| + | local Outils = require( 'Module:Outils' ) |
| + | local TableBuilder = require( 'Module:TableBuilder' ) |
| + | local Langue = require( 'Module:Langue' ) |
| + | local Lien = { } |
| | | |
− | Remarque : afin de se conformer aux conventions bibliographiques [https://fr.wikipedia.org/wiki/Aide:Note#R.C3.A8gles_relatives_.C3.A0_la_ponctuation {{Citation|les notes elles-mêmes doivent être terminées par un point}}].
| + | local Commun = require( 'Module:Biblio/Commun' ) |
| + | local References = require( 'Module:Biblio/Références' ) |
| + | local Outils = require( 'Module:Outils' ) |
| + | local TableBuilder = require( 'Module:TableBuilder' ) |
| + | local Langue = require( 'Module:Langue' ) |
| | | |
− | == Syntaxe ==
| |
− | [[Fichier:Information_icon.svg|35px]] ''Copiez-collez le texte ci-après et complétez les informations en votre possession''
| |
| | | |
− | === Syntaxe minimale === | + | local function formatLien( args, dead ) |
− | Sans auteur :
| + | -- La table wiki va recevoir tout les petits bouts de texte, et sera concaténée à la fin. |
− | <code style="display:block; padding:1em; line-height:1.3em;"><nowiki> | + | -- Elle utilise la meta-table de TableBuilder, permettant d'utiliser les fonctions de la |
− | {{Lien web |langue= |titre= |url= |date= |site= |consulté le=</nowiki>{{#ifeq: {{JOURACTUEL}} | 1 | <nowiki>{{1er}}</nowiki> | {{JOURACTUEL}} }} {{NOMMOISLOCAL}} {{ANNEEACTUELLE}}<nowiki>}}.
| + | -- library table comme des méthodes. minsert permet d'insérer plusieurs éléments en une |
− | </nowiki></code > | + | -- seule fois en, ignorant les valeurs nil. |
| + | local wiki = TableBuilder.new() |
| + | local modele = '[[Modèle:Lien web|{{Lien web}}]]' |
| + | if dead then |
| + | modele = '[[Modèle:Lien brisé|{{Lien brisé}}]]' |
| + | end |
| + | |
| + | -- validArg renvoie le premier paramètre non vide, ou nil s'ils sont tous vides. |
| + | -- Seuls les noms des paramètres doivent être transmis à la fonction. |
| + | local validArg = function ( ... ) return Commun.validTextArg( args, ... ) end |
| + | |
| + | -- Variables servant à la catégorisation |
| + | args.categ = {} |
| + | |
| + | -- Span initial, id |
| + | local spanInitial, spanFinal = Commun.spanInitial ( args, validArg ) |
| + | wiki.minsert( spanInitial, Commun.libelle( args ) ) |
| + | |
| + | -- indication de langue |
| + | local indicLangue, codeLangue = Commun.indicationDeLangue ( args, validArg ) |
| + | if Outils.notEmpty( indicLangue ) then |
| + | wiki.minsert( indicLangue, ' ' ) |
| + | end |
| + | |
| + | -- Liste des auteurs et de leurs responsabilités (principales et secondaires) |
| + | local auteur = validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'auteur institutionnel', 'last1', 'last', 'author1', 'author' ) |
| + | if auteur then |
| + | if validArg( 'auteurs' ) then |
| + | wiki.minsert( args.auteurs ) |
| + | else |
| + | wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ) ) |
| + | end |
| + | local coauteur = validArg( 'co-auteur', 'coauteurs', 'coauteur', 'coauthors' ) |
| + | if coauteur then |
| + | wiki.minsert( ', ', coauteur ) |
| + | end |
| + | wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' ) |
| + | end |
| + | |
| + | -- url |
| + | local url = validArg( 'url', 'lire en ligne', 'url texte', 'lien' ) |
| + | if url then |
| + | -- remplacement des crochets et espaces par leur équivalent HTML |
| + | url = string.gsub( string.gsub( string.gsub( url, ' ', '%%20' ), '%[', '%%5B' ), '%]', '%%5D' ) |
| + | -- ajout http:// si nécessaire : |
| + | if not ( string.match( url, '^http' ) or string.match( url, '^ftp' ) or string.match( url, '^//' ) ) then |
| + | url = 'http://' .. url |
| + | end |
| + | if dead then |
| + | wiki.minsert( '<span class="noarchive">' ) |
| + | end |
| + | wiki.minsert( '[', url ) |
| + | elseif not validArg( 'pmid', 'pmcid', 'doi', 'jstor', 'bibcod', 'math reviews', 'zbl', 'zbmath', 'arxiv' ) then |
| + | args.categ.url = true |
| + | end |
| + | |
| + | -- titre |
| + | local titre = validArg( 'titre', 'title' ) |
| + | local description = validArg( 'description' ) |
| + | if titre then |
| + | -- suppression des retours ligne éventuels, sinon MediaWiki ne reconnaît pas le lien externe |
| + | -- et remplacement des crochets par leur équivalent HTML (uniquement le crochet de fermeture) |
| + | titre = titre:gsub( '\n', ' ' ):gsub ( '%]', ']' ) |
| + | local c = titre:sub(1,1) |
| + | -- on teste d'abord si titre contient déjà des guillemets |
| + | if(string.byte(c) ~= 194) then |
| + | local sousTitre |
| + | if validArg( 'sous-titre' ) then |
| + | sousTitre = ' : ' .. args['sous-titre'] |
| + | sousTitre:gsub( ' ?»$', '' ) |
| + | else |
| + | titre:gsub( ' ?»$', '' ) |
| + | end |
| + | local color = dead and ' color:red;' |
| + | wiki.minsert( ' « <cite style="font-style: normal;', color, '">', titre, sousTitre, '</cite> »', url and ']' ) |
| + | else |
| + | wiki.minsert( ' ', titre, url and ']' ) |
| + | end |
| + | |
| + | -- traduction titre |
| + | local traductionTitre = validArg( 'traduction titre' ) |
| + | if traductionTitre and traductionTitre ~= args.titre then |
| + | wiki.minsert( ' [« ', traductionTitre, ' »]' ) |
| + | end |
| + | if description then |
| + | wiki.minsert( ', ', description ) |
| + | end |
| + | elseif description then |
| + | if dead then |
| + | wiki.minsert( ' <span style="color:red;">', description, '</span>', url and ']' ) |
| + | else |
| + | wiki.minsert( ' ', description, url and ']' ) |
| + | end |
| + | else |
| + | args.categ.titre = true |
| + | if url then |
| + | wiki.minsert( ' ', url, ']' ) |
| + | end |
| + | end |
| + | |
| + | -- message d'erreur |
| + | if args.categ.url or args.categ.titre then |
| + | local absent = { } |
| + | if args.categ.url then |
| + | table.insert( absent, '« <code>url</code> »' ) |
| + | end |
| + | if args.categ.titre then |
| + | table.insert( absent, '« <code>titre</code> »' ) |
| + | end |
| + | wiki.insert( 1, Outils.erreur( 'Modèle ' |
| + | .. modele ..' : paramètre' .. ( #absent > 1 and 's ' or ' ') |
| + | .. mw.text.listToText( absent ) .. ' manquant. ' |
| + | ) ) |
| + | end |
| | | |
− | Avec auteur :
| + | -- liens archives pour les liens brisés |
− | <code style="display:block; padding:1em; line-height:1.3em;"><nowiki> | + | if url and dead then |
− | {{Lien web |langue= |auteur= |titre= |url= |date= |site= |consulté le=</nowiki>{{#ifeq: {{JOURACTUEL}} | 1 | <nowiki>{{1er}}</nowiki> | {{JOURACTUEL}} }} {{NOMMOISLOCAL}} {{ANNEEACTUELLE}}<nowiki>}}.
| + | wiki.minsert( '<sup class="plainlinks">(', |
− | </nowiki></code >
| + | '[http://web.archive.org/web/*/', url, ' Archive] • ', |
| + | '[http://archive.wikiwix.com/cache/?url=', url, ' Wikiwix] • ', |
| + | '[http://archive.is/', url, ' Archive.is] • ', |
| + | '[https://www.google.fr/search?q=cache:', url, ' Google] • ', |
| + | '[[Projet:Correction des liens externes#J\'ai trouvé un lien mort, que faire ?|Que faire ?]])', |
| + | '</sup></span>' |
| + | ) |
| + | end |
| + | |
| + | |
| + | -- format |
| + | wiki.minsert( References.indicationDeFormat( validArg( 'format électronique', 'format' ) ) ) |
| + | |
| + | -- série, site, éditeur |
| + | local serie = validArg( 'série', 'work' ) |
| + | if serie then |
| + | wiki.minsert( [[, '']], serie, [['']] ) |
| + | args.categ.work = validArg( 'work' ) -- il y a ambiguïté sur l'utilisation de ce paramètre |
| + | end |
| + | local site = validArg( 'site', 'website' ) |
| + | if site then |
| + | wiki.minsert( [[, sur '']], site, [['']] ) |
| + | end |
| + | local periodique = validArg( 'périodique' ) |
| + | if periodique then |
| + | wiki.minsert( ', ', periodique ) |
| + | end |
| + | local lieu = validArg( 'lieu', 'lieu édition', 'location' ) |
| + | if lieu then |
| + | wiki.minsert( ', ', lieu ) |
| + | end |
| + | local editeur = validArg( 'éditeur', 'publisher', 'editeur' ) |
| + | if editeur then |
| + | local lienEditeur = validArg( 'lien éditeur' ) |
| + | if lienEditeur then |
| + | wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' ) |
| + | else |
| + | wiki.minsert( ', ', editeur ) |
| + | end |
| + | end |
| + | |
| + | -- date |
| + | if validArg( 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then |
| + | args.date = validArg( 'date', 'en ligne le', 'en ligne' ) |
| + | local lrm |
| + | if Langue.nonLatin( wiki.concat() ) then |
| + | lrm = '‎ ' |
| + | end |
| + | wiki.minsert( ',', lrm, ' ', Commun.inscriptionDate( args ) ) |
| + | end |
| + | if validArg( 'brisé le' ) then |
| + | wiki.minsert( ', brisé le ', Commun.inscriptionDate{ date = args['brisé le'] } ) |
| + | end |
| + | |
| + | -- liens externe (isbn, doi...) et "consulté le" entre parenthèses, et en plus petit, sauf en note |
| + | wiki.minsert( References.affichageLiensExternes( args, validArg, false, true ) ) |
| + | |
| + | -- fin du span |
| + | wiki.minsert( spanFinal ) |
| + | |
| + | -- citation et passage |
| + | local citation = validArg( 'citation', 'extrait', 'quote' ) |
| + | if citation then |
| + | wiki.minsert( ' : <span class="citation">« ', citation, ' »</span>' ) |
| + | end |
| + | local passage = validArg( 'page', 'pages', 'passage' ) |
| + | if passage then |
| + | if string.match( passage, '^[%dIVXLCM]' ) then |
| + | wiki.minsert( ', ', Commun.page, passage ) |
| + | else |
| + | wiki.minsert( ', ', passage ) |
| + | end |
| + | end |
| + | |
| + | -- Ponctuation |
| + | local patternPonct = '[,.;:!?] ?»?$' |
| + | local ponctuation = mw.ustring.match( wiki.concat():gsub( '%b<>', '' ), patternPonct ) |
| + | if not ponctuation then |
| + | local ponctuationFinale = validArg( 'ponctuation finale' ) |
| + | if ponctuationFinale == ';' then |
| + | ponctuationFinale = ' ;' |
| + | end |
| + | wiki.minsert( ponctuationFinale ) |
| + | end |
| + | |
| + | if mw.title.getCurrentTitle().namespace == 0 then |
| + | wiki.minsert( |
| + | args.categ.langue and '[[Catégorie:Page du modèle Lien web comportant une erreur|langue]]', |
| + | args.categ.url and '[[Catégorie:Page du modèle Lien web comportant une erreur|Url]]', |
| + | args.categ.titre and '[[Catégorie:Page du modèle Lien web comportant une erreur|titre]]', |
| + | args.categ.isbnInvalid and '[[Catégorie:Page avec ISBN invalide]]', |
| + | args.categ.issnInvalid and '[[Catégorie:Page avec ISSN invalide]]', |
| + | dead and not validArg( 'nocat' ) and '[[Catégorie:Article contenant un lien mort]]' |
| + | ) |
| + | elseif dead and not validArg( 'nocat' ) then |
| + | wiki.minsert( '[[Catégorie:Page contenant un lien mort]]' ) |
| + | end |
| + | |
| + | return wiki.concat() |
| + | end |
| | | |
− | === Syntaxe intermédiaire ===
| + | function Lien.lienWeb( args ) |
− | <code style="display:block; padding:1em; line-height:1.3em;"><nowiki>
| + | return formatLien( args, false ) |
− | {{Lien web|langue= |format= |auteur1= |lien auteur1= |coauteurs= |url= |titre= |série= |jour= |mois= |année= |site= |éditeur= |isbn= |page= |citation= |consulté le=</nowiki>{{#ifeq:{{JOURACTUEL}}|1|<nowiki>{{1er}}</nowiki>|{{JOURACTUEL}}}} {{NOMMOISLOCAL}} {{ANNEEACTUELLE}}<nowiki>|id= |libellé= }}.
| + | end |
− | </nowiki></code >
| |
| | | |
− | === Syntaxe intermédiaire indentée ===
| + | function Lien.lienBrise( args ) |
− | Présentation plus lisible, mais prend plus de place :
| + | args.titre = Commun.validTextArg( args, 'titre', 'title', 'url', 'lire en ligne', 'url texte', 'lien' ) |
− | <nowiki>{{Lien web
| + | return formatLien( args, true ) |
− | | langue =
| + | end |
− | | format =
| |
− | | auteur1 =
| |
− | | lien auteur1 =
| |
− | | url =
| |
− | | titre =
| |
− | | série =
| |
− | | jour =
| |
− | | mois =
| |
− | | année =
| |
− | | site =
| |
− | | éditeur =
| |
− | | isbn =
| |
− | | page =
| |
− | | citation =
| |
− | | consulté le = </nowiki>{{#ifeq:9|1|<nowiki>{{1er}}</nowiki>|{{JOURACTUEL}}}} {{NOMMOISLOCAL}} {{ANNEEACTUELLE}}<nowiki>
| |
− | | id =
| |
− | | libellé =
| |
− | }}.</nowiki>
| |
| | | |
− | === Syntaxe complète ===
| + | return Lien |
− | <code style="display:block; padding:1em; line-height:1.3em;"><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=<!-- Paramètre obligatoire --> |sous-titre= |traduction titre= |description= |url=<!-- Paramètre obligatoire --> |format= |série= |site= |lieu= |éditeur= |jour= |mois= |année= |date= |isbn= |issn= |oclc= |pmid= |doi= |jstor= |numdam= |bibcode= |math reviews= |zbl= |arxiv= | en ligne le= |consulté le=</nowiki>{{#ifeq:{{JOURACTUEL}}|1|<nowiki>{{1er}}</nowiki>|{{JOURACTUEL}}}} {{NOMMOISLOCAL}} {{ANNEEACTUELLE}}<nowiki> |citation= |page= |id= |libellé= }}.
| |
− | </nowiki></code >
| |
− | | |
− | === Syntaxe complète indentée ===
| |
− | Présentation plus lisible, mais prend plus de place :
| |
− | <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. =
| |
− | | traducteur =
| |
− | | photographe =
| |
− | | champ libre =
| |
− | | titre = <!-- obligatoire -->
| |
− | | sous-titre =
| |
− | | traduction titre=
| |
− | | description =
| |
− | | url = <!-- obligatoire -->
| |
− | | format =
| |
− | | série =
| |
− | | site =
| |
− | | lieu =
| |
− | | éditeur =
| |
− | | jour =
| |
− | | mois =
| |
− | | année =
| |
− | | date =
| |
− | | isbn =
| |
− | | issn =
| |
− | | oclc =
| |
− | | pmid =
| |
− | | doi =
| |
− | | jstor =
| |
− | | numdam =
| |
− | | bibcode =
| |
− | | math reviews =
| |
− | | zbl =
| |
− | | arxiv =
| |
− | | consulté le = </nowiki>{{#ifeq:9|1|<nowiki>{{1er}}</nowiki>|{{JOURACTUEL}}}} {{NOMMOISLOCAL}} {{ANNEEACTUELLE}}<nowiki>
| |
− | | en ligne le =
| |
− | | citation =
| |
− | | page =
| |
− | | id =
| |
− | | libellé =
| |
− | }}.</nowiki>
| |
− | | |
− | == Paramètres ==
| |
− | * <code>langue</code> : langue de la page web, ne sera affichée que si elle diffère du français, en [[Étiquette d'identification de langues IETF|code de langue IETF]] ([[Liste des codes ISO 639-1|liste]]) (par exemple : <code>en</code>, <code>fr</code>, <code>it</code>, <code>fa</code>{{etc.}}) On peut en indiquer plusieurs, séparées par une espace : <code>en it</code>.
| |
− | * <code>auteur1</code> : le nom de l'auteur de la page web.
| |
− | * <code>prénom1</code> : le prénom de l'auteur de la page web (paramètre alternatif à <code>auteur1</code>).
| |
− | * <code>nom1</code> : le nom de famille de l'auteur de la page web (paramètre alternatif à <code>auteur1</code>).
| |
− | * <code>lien auteur1</code> : le nom de la page de l’article sur l’auteur afin de créer un lien (affiche uniquement si <code>auteur</code> ou <code>nom1</code> est donné).
| |
− | * <code>responsabilité1</code> : responsabilité assumée par l'auteur.
| |
− | * <code>auteur2</code> : le nom du deuxième auteur de la page web.
| |
− | * <code>prénom2</code> : le prénom du deuxième auteur de la page web (paramètre alternatif à <code>auteur2</code>).
| |
− | * <code>nom2</code> : le nom de famille du deuxième auteur de la page web (paramètre alternatif à <code>auteur2</code>).
| |
− | * <code>lien auteur2</code> : le nom de la page de l’article sur l’auteur afin de créer un lien.
| |
− | * <code>responsabilité2</code> : responsabilité assumée par l'auteur.
| |
− | ... D'autres auteurs peuvent être ajoutés en incrémentant le numéro final.
| |
− | * <code>et al.</code> : si ce paramètre vaut oui, « 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>auteur institutionnel</code> : si l'auteur n'est pas un personne physique, mais une personne morale (organisation, association, entreprise...)
| |
− | * <code>traducteur</code> : nom du (des) traducteur(s) de l’article.
| |
− | * <code>photographe</code> : nom de la personne ayant réalisé les photographies s'il y en a.
| |
− | * <code>titre</code> : le titre de la page web (obligatoire, peut éventuellement être remplacé par le paramètre ''description'').
| |
− | * <code>sous-titre</code> : le sous-titre de la page.
| |
− | * <code>traduction titre</code> : la traduction en français du titre de la page web.
| |
− | * <code>description</code> : Si la page web 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>url</code> : une [[Adresse réticulaire|URL]] (obligatoire).
| |
− | * <code>format</code> : format du texte du lien (exemple <code>pdf</code>, <code>doc</code> ou <code>xls</code>, voir [[:Catégorie:Modèle extension de fichier|les formats acceptés]]) qui sera affiché entre crochets ; le format [[HTML]] est le format par défaut et ne doit pas être indiqué.
| |
− | * <code>série</code> : nom de la série ou de la collection.
| |
− | * <code>site</code> : indiquer le nom du site (avec un wikilien vers l'article Wikipédia, s'il existe) ou, si le nom du site n'est pas explicite, une description en quelques mots. <small>Correspond au champ <code>work</code> sur la Wikipedia anglophone.</small>
| |
− | * <code>éditeur</code> : l’éditeur du support bibliographique.
| |
− | * <code>jour</code> : le jour de publication comme {{JOURACTUEL}}.
| |
− | * <code>mois</code> : le mois de publication comme {{NOMMOISACTUEL}} ou {{MOIS1ACTUEL}}.
| |
− | * <code>année</code> : l’année en quatre chiffres comme {{ANNEEACTUELLE}}.
| |
− | * <code>date</code> : si les jour/mois/année sont connus, les trois champs précédents peuvent être remplacés par le champ <code>date</code>.
| |
− | * <code>isbn</code> : [[ISBN]] du support bibliographique.
| |
− | * <code>issn</code> : [[ISSN]] de la publication.
| |
− | * <code>oclc</code>, <code>pmid</code>, <code>pmcid</code>, <code>doi</code>, <code>jstor</code>, <code>bibcode</code>, <code>math reviews</code>, <code>zbmath</code>, <code>arxiv</code> : identifiants [[OCLC]], [[PubMed]], [[Digital Object Identifier|DOI]], [[JSTOR]], [[Bibcode]], [[Mathematical Reviews]], [[Zentralblatt MATH]] ou [[arXiv]]. Si l'un de ces paramètres est rempli, l'url n'est plus obligatoire.
| |
− | * <code>consulté le</code> : la date d’accès à l’URL. Permet de surveiller l’obsolescence du lien. <small>Correspond au champ <code>accessdate</code> sur la Wikipedia anglophone.</small>
| |
− | * <code>en ligne le</code> : la date de publication de l’URL.
| |
− | * <code>page</code> : un numéro, une liste ou une plage de pages. Est à associer à une citation.
| |
− | * <code>citation</code> : permet de formater une citation de la publication dans la note de fin de page.
| |
− | * <code>id</code> : identifiant unique dans la page qui inclut le modèle, ce qui permet le lien externe <code><nowiki>[[#id_du_lien|voir ce lien]]</nowiki></code> (notamment dans les notes).
| |
− | * <code>libellé</code> : libellé permettant d'identifier un renvoi bibliographique. Voir [[Wikipédia:Conventions bibliographiques#Renvois bibliographiques (références Harvard et autres)]] pour plus de détails. <br />Contrairement à <code>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. <br />Voir aussi les [[#Exemples avec des renvois bibliographiques|exemples]].
| |
− | | |
− | == Exemples ==
| |
− | === Lien basique ===
| |
− | <pre style="white-space:pre-wrap;">{{Lien web|langue=en|titre=Toho sues Cosmo Contents for selling DVDs of Kurosawa’s early works|url=http://akirakurosawa.info/2007/04/02/toho-sues-cosmo-contents-for-selling-dvds-of-kurosawas-early-works/|date=2 avril 2007}}.</pre>
| |
− | comme
| |
− | <pre style="white-space:pre-wrap;">
| |
− | {{Lien web
| |
− | |langue = en
| |
− | |titre = Toho sues Cosmo Contents for selling DVDs of Kurosawa’s early works
| |
− | |url = http://akirakurosawa.info/2007/04/02/toho-sues-cosmo-contents-for-selling-dvds-of-kurosawas-early-works/
| |
− | |date = 2 avril 2007
| |
− | }}.</pre>
| |
− | donnent : « {{Lien web|langue=en|titre=Toho sues Cosmo Contents for selling DVDs of Kurosawa’s early works |url=http://akirakurosawa.info/2007/04/02/toho-sues-cosmo-contents-for-selling-dvds-of-kurosawas-early-works/|date=2 avril 2007}}. »
| |
− | | |
− | === Lien plus complet ===
| |
− | <pre style="white-space:pre-wrap;">{{Lien web|langue=en|auteur1=Massoumeh Price|titre=Translation Movements in Iran; Sassanian Era to Year 2000, Expansion, Preservation and Modernization|url=http://www.iranchamber.com/podium/literature/030206_translation_movement_iran.php|éditeur=Iran Chamber|année=2000|consulté le=13 octobre 2006}}.</pre>
| |
− | comme
| |
− | <pre style="white-space:pre-wrap;">
| |
− | {{Lien web
| |
− | |langue = en
| |
− | |auteur1 = Massoumeh Price
| |
− | |titre = Translation Movements in Iran; Sassanian Era to Year 2000, Expansion, Preservation and Modernization
| |
− | |url = http://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|auteur1=Massoumeh Price|titre=Translation Movements in Iran; Sassanian Era to Year 2000, Expansion, Preservation and Modernization|url=http://www.iranchamber.com/literature/articles/translation_movement_iran.php|éditeur=Iran Chamber|année=2000|consulté le=13 octobre 2006}}. »
| |
− | | |
− | === Lien vers un site, objet d'un article Wikipédia ===
| |
− | <pre style="white-space:pre-wrap;">{{Lien web|auteur1=David Larousserie|titre=Wikipédia : thermomètre des sujets qui fâchent dans le monde|url=http://www.lemonde.fr/sciences/article/2013/09/02/wikipedia-thermometre-des-sujets-qui-fachent-dans-le-monde_3469924_1650684.html|site=[[Le Monde#Le Monde.fr|lemonde.fr]]|date=2 septembre 2013|consulté le=24 novembre 2013}}.</pre>
| |
− | comme
| |
− | <pre style="white-space:pre-wrap;">
| |
− | {{Lien web
| |
− | |auteur1 = David Larousserie
| |
− | |titre = Wikipédia : thermomètre des sujets qui fâchent dans le monde
| |
− | |url = http://www.lemonde.fr/sciences/article/2013/09/02/wikipedia-thermometre-des-sujets-qui-fachent-dans-le-monde_3469924_1650684.html
| |
− | |site = [[Le Monde#Le Monde.fr|lemonde.fr]]
| |
− | |date = 2 septembre 2013
| |
− | |consulté le = 24 novembre 2013
| |
− | }}.</pre>
| |
− | donnent : « {{Lien web|auteur1=David Larousserie|titre=Wikipédia : thermomètre des sujets qui fâchent dans le monde|url=http://www.lemonde.fr/sciences/article/2013/09/02/wikipedia-thermometre-des-sujets-qui-fachent-dans-le-monde_3469924_1650684.html|site=[[Le Monde#Le Monde.fr|lemonde.fr]]|date=2 septembre 2013|consulté le=24 novembre 2013}}. »
| |
− | | |
− | === Lien vers un ouvrage publié sur le [[Internet|Net]] ===
| |
− | <pre style="white-space:pre-wrap;">{{Lien web|auteur1=[[Joël de Rosnay]]|titre=2020, les scénarios du futur : comprendre le monde qui vient|url=http://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
| |
− | |auteur1 = [[Joël de Rosnay]]
| |
− | |titre = 2020, les scénarios du futur : comprendre le monde qui vient
| |
− | |url = http://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|auteur1=[[Joël de Rosnay]]|titre=2020, les scénarios du futur : comprendre le monde qui vient|url=http://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 <nowiki>{{urlencode:URL}}</nowiki>.
| |
− | * L'ordre des paramètres n'a pas d'importance. Ils sont présentés ici par l'ordre d'apparition à l'affichage pour faciliter la compréhension.
| |
− | | |
− | == Boutons ==
| |
− | {{article détaillé|Aide:Utilitaires#MonobookToolbarSources}}
| |
− | | |
− | Comment intégrer '''facilement''' et '''convenablement''' des références ?
| |
− | | |
− | ''Uniquement pour les [[Aide:Compte utilisateur|utilisateurs inscrits]]''
| |
− | | |
− | '''<u> Réglages préalables :</u>'''
| |
− | | |
− | # Rendez-vous dans « Préférences » puis dans l'onglet « Gadget » en cliquant sur le lien suivant : [[Spécial:Préférences#mw-prefsection-gadgets]] ;
| |
− | # Dans la section « Bouton de la barre d'outils » :
| |
− | ## Cochez : « ''ForceMonobookToolbar'' »,
| |
− | ## Cochez : « ''MonobookToolbarSources'' »,
| |
− | ## Vous pouvez décocher ''MonobookToolbarStandard'' si vous ne souhaitez pas voir apparaître les boutons présentés dans [[Aide:Barre d'outils d'édition/Monobook]] (conseillé).
| |
− | | |
− | '''<u>Résultat</u>'''
| |
− | | |
− | À la fin de la [[Aide:Comment_modifier_une_page#Effectuer_la_modification|barre d'outils d'édition améliorée]], vous verrez apparaître de nouveaux boutons :
| |
− | [[Fichier:AdvancedEditToolbar with MonobookToolbarSources.png|alt=Barre d'édition avancée avec [[MediaWiki:MonobookToolbarSources.js]]]]
| |
− | | |
− | Le bouton « livre » [[Fichier:Button cite book.png]] permet d'intégrer automatiquement {{m|ouvrage}} (pour référencer des ouvrages). Le bouton « article » [[Fichier:Button_lienjournal.png]] permet d'intégrer automatiquement le modèle {{m|article}} (pour référencer des articles). Le bouton « lien web » [[Fichier:Button_lienweb.png]] permet d'intégrer automatiquement le modèle {{m|Lien web}} (pour référencer des pages [[WWW|web]]).
| |
− | | |
− | Ainsi, '''vous simplifierez considérablement''' votre travail d'intégration de sources.
| |
− | | |
− | == Voir aussi ==
| |
− | * [[Wikipédia:Conventions bibliographiques]].
| |
− | * [[Wikipédia:Sources libres d'accès sur internet]] (indications pour vérifier la libre utilisation de sources sur Internet).
| |
− | * {{M|Édition}} et [[Aide:espace référence]] ou {{M|Ouvrage}} pour une référence (plus) bibliographique.
| |
− | * {{m|Article}} possède des paramètres |url texte= et |consulté le= pour les articles de revue papier dont une copie est consultable sur Internet.
| |
− | * [http://www.dereckson.be/tools/SourceTemplatesGenerator/ Outil de génération de sources] permettant de générer un modèle {{m|Lien web}} ou {{m|Article}} à partir d'une URL.
| |
− | * [https://addons.mozilla.org/en-US/firefox/addon/sourcetemplatesgenerator/ Extension pour Firefox] permettant d'utiliser l'outil précédent. <br />Depuis la page dont vous voulez le modèle de lien, cliquez sur le bouton [[File:VisualEditor - Icon - Reference.svg|16px]], située dans la barre des modules ('''ctrl''' '''/''' pour la faire apparaître ou disparaître).
| |
− | * [[WP:REFILL|reFill]] (outil qui met en forme les liens externes en référence, une ligne de code est à ajouter à votre commons.js)
| |
− | | |
− | == TemplateData ==
| |
− | {{Boîte déroulante/début|titre= '''TemplateData''' }}
| |
− | <templatedata>
| |
− | {
| |
− | "description": "Pour mettre un site web en référence (menu \"Citer\") ou dans un modèle (menu \"Insérer\"), remplissez les champ suivants. \nLes astérisques * (à côté du nom du champ) sont les champs obligatoires pour que la référence ou le modèle s'affiche correctement.",
| |
− | "params": {
| |
− | "langue": {
| |
− | "suggested": true,
| |
− | "description": "Langue dans laquelle est écrite la page web. Au choix : \n- nom de la langue en français (français, anglais, russe, etc.) ; \n- code langue (fr, en, etc). Voir la page: « Modèle:Code langue 2#Liste des codes ».",
| |
− | "type": "line",
| |
− | "aliases": [
| |
− | "lang",
| |
− | "language"
| |
− | ],
| |
− | "default": "français"
| |
− | },
| |
− | "format": {
| |
− | "description": "Format du texte du lien (par exemple pdf, doc ou xls) qui sera affiché entre crochets. HTML est le format par défaut et ne sera pas indiqué.",
| |
− | "type": "line",
| |
− | "example": "pdf"
| |
− | },
| |
− | "auteur1": {
| |
− | "description": "Le nom de l'auteur de la page web.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "auteurs",
| |
− | "auteur",
| |
− | "author"
| |
− | ],
| |
− | "example": "Marguerite Yourcenar"
| |
− | },
| |
− | "date": {
| |
− | "suggested": true,
| |
− | "description": "Formats acceptés: 07/05/2015 ou 07-05-2015 ou 7 mai 2015 ou 07 mai 2015 ou 2015-05-07",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "en ligne le",
| |
− | "en ligne"
| |
− | ],
| |
− | "example": "9 novembre 1989"
| |
− | },
| |
− | "nom1": {
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "nom",
| |
− | "last1",
| |
− | "last"
| |
− | ],
| |
− | "description": "Nom de famille de l'auteur (paramètre alternatif à auteur).",
| |
− | "example": "Poe"
| |
− | },
| |
− | "prénom1": {
| |
− | "aliases": [
| |
− | "prénom",
| |
− | "first1",
| |
− | "first"
| |
− | ],
| |
− | "type": "string",
| |
− | "description": "Prénom de l'auteur (paramètre alternatif à auteur).",
| |
− | "example": "Edgar Allan"
| |
− | },
| |
− | "lien auteur": {
| |
− | "description": "Nom de l'article Wikipédia consacré à l'auteur.",
| |
− | "type": "string"
| |
− | },
| |
− | "responsabilité1": {
| |
− | "type": "string",
| |
− | "description": "Responsabilité assumée par le premier auteur."
| |
− | },
| |
− | "directeur1": {
| |
− | "type": "string",
| |
− | "description": "Si le premier auteur est aussi directeur de publication (si c'est le cas, indiquer oui).",
| |
− | "example": "oui"
| |
− | },
| |
− | "auteur2": {
| |
− | "description": "Le nom du deuxième auteur de la page web.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "author2"
| |
− | ]
| |
− | },
| |
− | "nom2": {
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "last2"
| |
− | ],
| |
− | "description": "Nom de famille du deuxième auteur (paramètre alternatif à auteur2)."
| |
− | },
| |
− | "prénom2": {
| |
− | "aliases": [
| |
− | "first2"
| |
− | ],
| |
− | "type": "string",
| |
− | "description": "Prénom du deuxième auteur (paramètre alternatif à auteur2)."
| |
− | },
| |
− | "lien auteur2": {
| |
− | "description": "Nom de l'article Wikipédia consacré au deuxième auteur.",
| |
− | "type": "string"
| |
− | },
| |
− | "responsabilité2": {
| |
− | "type": "string",
| |
− | "description": "Responsabilité assumée par le deuxième auteur."
| |
− | },
| |
− | "directeur2": {
| |
− | "type": "string",
| |
− | "description": "Si le deuxième auteur est aussi directeur de publication (si c'est le cas, indiquer oui)."
| |
− | },
| |
− | "et al.": {
| |
− | "label": "et al. ?",
| |
− | "type": "string",
| |
− | "description": "Si ce paramètre vaut oui, « 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 — 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…)."
| |
− | },
| |
− | "coauteurs": {
| |
− | "description": "D’autres auteurs (facultatif et uniquement si auteur est donné).",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "coauteur",
| |
− | "coauthors"
| |
− | ],
| |
− | "deprecated": true
| |
− | },
| |
− | "traducteur": {
| |
− | "label": "Traducteur",
| |
− | "type": "string",
| |
− | "description": "Nom du (des) traducteur(s) de l’article ; mettre un (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 de la page",
| |
− | "type": "string",
| |
− | "required": true,
| |
− | "aliases": [
| |
− | "title"
| |
− | ]
| |
− | },
| |
− | "sous-titre": {
| |
− | "label": "Sous-titre",
| |
− | "type": "string",
| |
− | "description": "Sous-titre de l’article."
| |
− | },
| |
− | "url": {
| |
− | "label": "Adresse web (URL)",
| |
− | "description": "URL (adresse) de la page web.",
| |
− | "type": "string",
| |
− | "required": true,
| |
− | "aliases": [
| |
− | "url texte",
| |
− | "lire en ligne"
| |
− | ],
| |
− | "example": "http://www.lemonde.fr/campus/article/2015/05/19/si-l-apprentissage-des-langues-est-une-priorite-c-est-en-primaire-qu-il-faut-porter-l-effort_4636373_4401467.html"
| |
− | },
| |
− | "série": {
| |
− | "description": "Nom de la série ou de la collection.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "work"
| |
− | ]
| |
− | },
| |
− | "site": {
| |
− | "suggested": true,
| |
− | "description": "Indiquer le nom du site (avec un wikilien vers l'article Wikipédia, s'il existe) ou, si le nom du site n'est pas explicite, une description en quelques mots.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "périodique",
| |
− | "website"
| |
− | ],
| |
− | "example": "lemonde.fr"
| |
− | },
| |
− | "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"
| |
− | ]
| |
− | },
| |
− | "jour": {
| |
− | "description": "Le jour de publication comme 20.",
| |
− | "type": "number",
| |
− | "aliases": [
| |
− | "day"
| |
− | ]
| |
− | },
| |
− | "mois": {
| |
− | "description": "Le mois de publication comme juillet.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "month"
| |
− | ]
| |
− | },
| |
− | "année": {
| |
− | "description": "L’année en quatre chiffres comme 2013.",
| |
− | "type": "number",
| |
− | "aliases": [
| |
− | "year"
| |
− | ]
| |
− | },
| |
− | "isbn": {
| |
− | "label": "ISBN",
| |
− | "description": "ISBN du support bibliographique.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "ISBN"
| |
− | ]
| |
− | },
| |
− | "issn": {
| |
− | "type": "string",
| |
− | "label": "ISSN",
| |
− | "description": "ISSN de la publication."
| |
− | },
| |
− | "oclc": {
| |
− | "type": "number",
| |
− | "label": "OCLC",
| |
− | "description": "Identifiant OCLC."
| |
− | },
| |
− | "pmid": {
| |
− | "label": "PMID",
| |
− | "type": "number",
| |
− | "description": "Identifiant PubMed.",
| |
− | "aliases": [
| |
− | "PMID"
| |
− | ]
| |
− | },
| |
− | "pmcid": {
| |
− | "label": "PMCID",
| |
− | "type": "string",
| |
− | "description": "Identifiant PubMed Central.",
| |
− | "aliases": [
| |
− | "pmc"
| |
− | ]
| |
− | },
| |
− | "doi": {
| |
− | "label": "DOI",
| |
− | "type": "string",
| |
− | "description": "Identifiant Digital Object Identifier.",
| |
− | "aliases": [
| |
− | "DOI"
| |
− | ]
| |
− | },
| |
− | "jstor": {
| |
− | "label": "JStor",
| |
− | "type": "string",
| |
− | "description": "Identifiant Serial Item and Contribution Identifier."
| |
− | },
| |
− | "bibcode": {
| |
− | "type": "string",
| |
− | "description": "Identifiant bibcode."
| |
− | },
| |
− | "math reviews": {
| |
− | "type": "string",
| |
− | "description": "Identifiant MR."
| |
− | },
| |
− | "zbl": {
| |
− | "type": "string",
| |
− | "label": "zbMATH",
| |
− | "description": "Identifiant zbMATH.",
| |
− | "aliases": [
| |
− | "zbmath"
| |
− | ]
| |
− | },
| |
− | "arxiv": {
| |
− | "type": "string",
| |
− | "label": "arXiv",
| |
− | "description": "Identifiant arXiv."
| |
− | },
| |
− | "consulté le": {
| |
− | "suggested": true,
| |
− | "description": "La date d’accès au lien. Permet de surveiller l’obsolescence du lien.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "accessdate",
| |
− | "consulté",
| |
− | "consultée le"
| |
− | ],
| |
− | "autovalue": "",
| |
− | "example": "13 avril 2015"
| |
− | },
| |
− | "extrait": {
| |
− | "description": "Permet de formater une citation de la publication dans la note de fin de page.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "citation",
| |
− | "quote"
| |
− | ]
| |
− | },
| |
− | "page": {
| |
− | "description": "Un numéro, une liste ou une plage de pages. Est à associer à une citation.",
| |
− | "type": "string",
| |
− | "aliases": [
| |
− | "pages",
| |
− | "passage"
| |
− | ]
| |
− | },
| |
− | "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": "string"
| |
− | },
| |
− | "libellé": {
| |
− | "type": "string",
| |
− | "description": "Libellé permettant d'identifier un renvoi bibliographique."
| |
− | },
| |
− | "traduction titre": {
| |
− | "label": "Traduction en français du titre",
| |
− | "type": "string"
| |
− | },
| |
− | "description": {
| |
− | "description": "Si la page web 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 à un titre cela peut permettre d'ajouter des informations importante comme un identifiant, numéro...",
| |
− | "type": "string"
| |
− | }
| |
− | },
| |
− | "maps": {
| |
− | "citoid": {
| |
− | "language": "langue",
| |
− | "director": [
| |
− | [
| |
− | "prénom1",
| |
− | "nom1"
| |
− | ],
| |
− | [
| |
− | "prénom2",
| |
− | "nom2"
| |
− | ]
| |
− | ],
| |
− | "podcaster": [
| |
− | [
| |
− | "prénom1",
| |
− | "nom1"
| |
− | ],
| |
− | [
| |
− | "prénom2",
| |
− | "nom2"
| |
− | ]
| |
− | ],
| |
− | "author": [
| |
− | [
| |
− | "prénom1",
| |
− | "nom1"
| |
− | ],
| |
− | [
| |
− | "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"
| |
− | ],
| |
− | "PMID": "pmid",
| |
− | "PMCID": "pmcid",
| |
− | "DOI": "doi",
| |
− | "accessDate": "consulté le",
| |
− | "pages": "page"
| |
− | }
| |
− | },
| |
− | "paramOrder": [
| |
− | "langue",
| |
− | "format",
| |
− | "auteur1",
| |
− | "nom1",
| |
− | "prénom1",
| |
− | "lien auteur",
| |
− | "responsabilité1",
| |
− | "directeur1",
| |
− | "auteur2",
| |
− | "nom2",
| |
− | "prénom2",
| |
− | "lien auteur2",
| |
− | "responsabilité2",
| |
− | "directeur2",
| |
− | "et al.",
| |
− | "auteur institutionnel",
| |
− | "coauteurs",
| |
− | "traducteur",
| |
− | "photographe",
| |
− | "titre",
| |
− | "sous-titre",
| |
− | "traduction titre",
| |
− | "description",
| |
− | "url",
| |
− | "série",
| |
− | "site",
| |
− | "lieu",
| |
− | "éditeur",
| |
− | "jour",
| |
− | "mois",
| |
− | "année",
| |
− | "date",
| |
− | "isbn",
| |
− | "issn",
| |
− | "oclc",
| |
− | "pmid",
| |
− | "pmcid",
| |
− | "doi",
| |
− | "jstor",
| |
− | "bibcode",
| |
− | "math reviews",
| |
− | "zbl",
| |
− | "arxiv",
| |
− | "consulté le",
| |
− | "extrait",
| |
− | "page",
| |
− | "id",
| |
− | "libellé"
| |
− | ]
| |
− | }
| |
− | </templatedata>
| |
− | {{Boîte déroulante/fin}}
| |
− | | |
− | {{Palette|Modèles bibliographiques|Conventions}}
| |
− | | |
− | <includeonly>
| |
− | | |
− | {{CLEDETRI:Lien web, Modele}}
| |
− | [[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>
| |
local Lien = { }
local Commun = require( 'Module:Biblio/Commun' )
local References = require( 'Module:Biblio/Références' )
local Outils = require( 'Module:Outils' )
local TableBuilder = require( 'Module:TableBuilder' )
local Langue = require( 'Module:Langue' )
local Lien = { }
local Commun = require( 'Module:Biblio/Commun' )
local References = require( 'Module:Biblio/Références' )
local Outils = require( 'Module:Outils' )
local TableBuilder = require( 'Module:TableBuilder' )
local Langue = require( 'Module:Langue' )
local function formatLien( args, dead )
-- La table wiki va recevoir tout les petits bouts de texte, et sera concaténée à la fin.
-- Elle utilise la meta-table de TableBuilder, permettant d'utiliser les fonctions de la
-- library table comme des méthodes. minsert permet d'insérer plusieurs éléments en une
-- seule fois en, ignorant les valeurs nil.
local wiki = TableBuilder.new()
local modele = '[[Modèle:Lien web|{{Lien web}}]]'
if dead then
modele = '[[Modèle:Lien brisé|{{Lien brisé}}]]'
end
-- validArg renvoie le premier paramètre non vide, ou nil s'ils sont tous vides.
-- Seuls les noms des paramètres doivent être transmis à la fonction.
local validArg = function ( ... ) return Commun.validTextArg( args, ... ) end
-- Variables servant à la catégorisation
args.categ = {}
-- Span initial, id
local spanInitial, spanFinal = Commun.spanInitial ( args, validArg )
wiki.minsert( spanInitial, Commun.libelle( args ) )
-- indication de langue
local indicLangue, codeLangue = Commun.indicationDeLangue ( args, validArg )
if Outils.notEmpty( indicLangue ) then
wiki.minsert( indicLangue, ' ' )
end
-- Liste des auteurs et de leurs responsabilités (principales et secondaires)
local auteur = validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'auteur institutionnel', 'last1', 'last', 'author1', 'author' )
if auteur then
if validArg( 'auteurs' ) then
wiki.minsert( args.auteurs )
else
wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ) )
end
local coauteur = validArg( 'co-auteur', 'coauteurs', 'coauteur', 'coauthors' )
if coauteur then
wiki.minsert( ', ', coauteur )
end
wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' )
end
-- url
local url = validArg( 'url', 'lire en ligne', 'url texte', 'lien' )
if url then
-- remplacement des crochets et espaces par leur équivalent HTML
url = string.gsub( string.gsub( string.gsub( url, ' ', '%%20' ), '%[', '%%5B' ), '%]', '%%5D' )
-- ajout http:// si nécessaire :
if not ( string.match( url, '^http' ) or string.match( url, '^ftp' ) or string.match( url, '^//' ) ) then
url = 'http://' .. url
end
if dead then
wiki.minsert( '<span class="noarchive">' )
end
wiki.minsert( '[', url )
elseif not validArg( 'pmid', 'pmcid', 'doi', 'jstor', 'bibcod', 'math reviews', 'zbl', 'zbmath', 'arxiv' ) then
args.categ.url = true
end
-- titre
local titre = validArg( 'titre', 'title' )
local description = validArg( 'description' )
if titre then
-- suppression des retours ligne éventuels, sinon MediaWiki ne reconnaît pas le lien externe
-- et remplacement des crochets par leur équivalent HTML (uniquement le crochet de fermeture)
titre = titre:gsub( '\n', ' ' ):gsub ( '%]', ']' )
local c = titre:sub(1,1)
-- on teste d'abord si titre contient déjà des guillemets
if(string.byte(c) ~= 194) then
local sousTitre
if validArg( 'sous-titre' ) then
sousTitre = ' : ' .. args['sous-titre']
sousTitre:gsub( ' ?»$', '' )
else
titre:gsub( ' ?»$', '' )
end
local color = dead and ' color:red;'
wiki.minsert( ' « <cite style="font-style: normal;', color, '">', titre, sousTitre, '</cite> »', url and ']' )
else
wiki.minsert( ' ', titre, url and ']' )
end
-- traduction titre
local traductionTitre = validArg( 'traduction titre' )
if traductionTitre and traductionTitre ~= args.titre then
wiki.minsert( ' [« ', traductionTitre, ' »]' )
end
if description then
wiki.minsert( ', ', description )
end
elseif description then
if dead then
wiki.minsert( ' <span style="color:red;">', description, '</span>', url and ']' )
else
wiki.minsert( ' ', description, url and ']' )
end
else
args.categ.titre = true
if url then
wiki.minsert( ' ', url, ']' )
end
end
-- message d'erreur
if args.categ.url or args.categ.titre then
local absent = { }
if args.categ.url then
table.insert( absent, '« <code>url</code> »' )
end
if args.categ.titre then
table.insert( absent, '« <code>titre</code> »' )
end
wiki.insert( 1, Outils.erreur( 'Modèle '
.. modele ..' : paramètre' .. ( #absent > 1 and 's ' or ' ')
.. mw.text.listToText( absent ) .. ' manquant. '
) )
end
-- liens archives pour les liens brisés
if url and dead then
wiki.minsert( '<sup class="plainlinks">(',
'[http://web.archive.org/web/*/', url, ' Archive] • ',
'[http://archive.wikiwix.com/cache/?url=', url, ' Wikiwix] • ',
'[http://archive.is/', url, ' Archive.is] • ',
'[https://www.google.fr/search?q=cache:', url, ' Google] • ',
'[[Projet:Correction des liens externes#J\'ai trouvé un lien mort, que faire ?|Que faire ?]])',
'</sup></span>'
)
end
-- format
wiki.minsert( References.indicationDeFormat( validArg( 'format électronique', 'format' ) ) )
-- série, site, éditeur
local serie = validArg( 'série', 'work' )
if serie then
wiki.minsert( [[, '']], serie, [['']] )
args.categ.work = validArg( 'work' ) -- il y a ambiguïté sur l'utilisation de ce paramètre
end
local site = validArg( 'site', 'website' )
if site then
wiki.minsert( [[, sur '']], site, [['']] )
end
local periodique = validArg( 'périodique' )
if periodique then
wiki.minsert( ', ', periodique )
end
local lieu = validArg( 'lieu', 'lieu édition', 'location' )
if lieu then
wiki.minsert( ', ', lieu )
end
local editeur = validArg( 'éditeur', 'publisher', 'editeur' )
if editeur then
local lienEditeur = validArg( 'lien éditeur' )
if lienEditeur then
wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' )
else
wiki.minsert( ', ', editeur )
end
end
-- date
if validArg( 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then
args.date = validArg( 'date', 'en ligne le', 'en ligne' )
local lrm
if Langue.nonLatin( wiki.concat() ) then
lrm = '‎ '
end
wiki.minsert( ',', lrm, ' ', Commun.inscriptionDate( args ) )
end
if validArg( 'brisé le' ) then
wiki.minsert( ', brisé le ', Commun.inscriptionDate{ date = args['brisé le'] } )
end
-- liens externe (isbn, doi...) et "consulté le" entre parenthèses, et en plus petit, sauf en note
wiki.minsert( References.affichageLiensExternes( args, validArg, false, true ) )
-- fin du span
wiki.minsert( spanFinal )
-- citation et passage
local citation = validArg( 'citation', 'extrait', 'quote' )
if citation then
wiki.minsert( ' : <span class="citation">« ', citation, ' »</span>' )
end
local passage = validArg( 'page', 'pages', 'passage' )
if passage then
if string.match( passage, '^[%dIVXLCM]' ) then
wiki.minsert( ', ', Commun.page, passage )
else
wiki.minsert( ', ', passage )
end
end
-- Ponctuation
local patternPonct = '[,.;:!?] ?»?$'
local ponctuation = mw.ustring.match( wiki.concat():gsub( '%b<>', '' ), patternPonct )
if not ponctuation then
local ponctuationFinale = validArg( 'ponctuation finale' )
if ponctuationFinale == ';' then
ponctuationFinale = ' ;'
end
wiki.minsert( ponctuationFinale )
end
if mw.title.getCurrentTitle().namespace == 0 then
wiki.minsert(
args.categ.langue and '[[Catégorie:Page du modèle Lien web comportant une erreur|langue]]',
args.categ.url and '[[Catégorie:Page du modèle Lien web comportant une erreur|Url]]',
args.categ.titre and '[[Catégorie:Page du modèle Lien web comportant une erreur|titre]]',
args.categ.isbnInvalid and '[[Catégorie:Page avec ISBN invalide]]',
args.categ.issnInvalid and '[[Catégorie:Page avec ISSN invalide]]',
dead and not validArg( 'nocat' ) and '[[Catégorie:Article contenant un lien mort]]'
)
elseif dead and not validArg( 'nocat' ) then
wiki.minsert( '[[Catégorie:Page contenant un lien mort]]' )
end
return wiki.concat()
end
function Lien.lienWeb( args )
return formatLien( args, false )
end
function Lien.lienBrise( args )
args.titre = Commun.validTextArg( args, 'titre', 'title', 'url', 'lire en ligne', 'url texte', 'lien' )
return formatLien( args, true )
end
return Lien