Générer une bibliographie

L'Archive ouverte permet d'intégrer une liste bibliographique dans n'importe quelle page web externe (site personnel, pages d'un groupe de recherche, etc.) et de la maintenir automatiquement à jour avec les changements et les nouvelles entrées réalisées dans l'Archive.

Ce générateur de bibliographie utilise un petit Javascript qu'il faut ajouter dans le code de la page où doit apparaître la bibliographie. Le code Javascript est fourni par l'Archive ouverte, et il suffit de le copier-coller pour que ça fonctionne. Pour pouvoir générer ce code, il va falloir se connecter et définir les critères de recherche qui permettent de n'afficher que les références pertinentes, puis enregistrer cette recherche.

Critères de recherche

La définition des bons critères de recherche est évidemment l'étape primordiale à la génération d'une liste bibliographiques pertinentes, car il s'agit d'inclure toutes les références pertinentes sans pour autant s'encombrer de notices parasites.

Exemples de recherche simple :

  • "Groupe de recherche" = "ISE Eau"
  • "Structure académique" = "Institut de médecine légale"

Une recherche simple n'est pas toujours possible, notamment dans le cas où il faut lister toutes les publications d'une personne. En effet, l'Archive ouverte propose un index des "Contributeurs/trices", mais celui-ci est plus large que les simples auteurs et autrices, puisqu'il contient également les directeurs/trices de travaux de diplômes.

Exemples de recherche avancée :

  • "Contributeur/trice" = "Castelltort, Sébastien" SAUF "Directeur/trice" = "Castelltort, Sébastien"
  • "Structure académique" = "Institut de médecine légale" ET "Année principale" = "2022"

Enregistrer la recherche

Après avoir lancé une recherche, les personnes connectées verront apparaître un bouton "Sauvegarder la recherche" qui va permette son enregistrement. Une fois ceci effectué, un nouveau bouton s'affiche, "Générer une bibliographie", qui va utiliser cette recherche et va ouvrir une fenêtre de paramétrage (cf. plus bas).

Il est possible de préparer et d'enregistrer plusieurs recherches sans générer immédiatement des bibliographies.

Suppression d'une recherche enregistrée

Attention, la suppression d'une recherche enregistrée qui est utilisée pour générer une bibliographie va empêcher son affichage !

Générer une bibliographie

Lorsqu'on est connecté et qu'on a enregistré au moins une recherche, il est possible d'atteindre la générateur de bibliographie à partir du bouton "Générer une bibliographie" qui figure sur la page d'accueil de l'Archive, mais aussi en cliquant sur le menu "Favoris" qui se trouve à droite dans le bandeau supérieur.

generer_bibliogr_3.png

Dès qu'une (ou plusieurs) recherche enregistrée a été sélectionnée (il est possible de sélectionner également des notices individuelles qui auraient été ajoutées aux favoris et qui se trouvent dans le deuxième onglet), le bouton "Générer une bibliographie à partir..." devient actif. Celui-ci ouvre une nouvelle fenêtre dans laquelle se trouve le code Javascript qui va pouvoir être copié et intégré dans la page web où devra s'afficher la bibliographie.

Avant de copier le Javacript, il peut être avantageux de vérifier les différents paramètres avec lesquels il est possible d'affiner l'affichage de la bibliographie, par exemple la langue, le format, le tri, le nombre de notices, etc.

Rendre les DOI actifs dans la liste des références

Quand ils existent dans les métadonnées, les DOI sont ajoutés à la fin de chaque référence, sous forme de texte mais pas de lien actif. Il n'y a pas de paramètre pour rendre ces DOI cliquables. Pour le faire, il suffit d'ajouter le javascript présenté ci-dessous entre le script générateur de bibliographie et l'emplacement d'affichage de celle-ci. (Attention à remplacer les ££ par des < adéquats !). Ce script ne fonctionne pas si un résumé et/ou une vignette est aussi affichée. Dans ce cas, il faut préférer le deuxième script.

££ script type="text/javascript">
window.addEventListener("load", pageFullyLoaded, false);
function pageFullyLoaded(e) {
    var myli = document.getElementsByClassName("bibItem");
    for (let i = myli.length-1; i >= 0; i--) { 
        if (myli[i].innerHTML.indexOf("doi.org") > 0) {
            var s = myli[i].innerHTML;
            var doiRegex = s.match(/(https:\/\/doi.org\/10.+)\./)[1];
            myli[i].innerHTML = myli[i].innerHTML.substr(0, myli[i].innerHTML.indexOf("https://doi"));
            myli[i].innerHTML = myli[i].innerHTML + '££ a href="' + doiRegex + '" target="_blank">' + doiRegex + '££ /a>.';
        }
    }
}
££ /script>

Autre script pour activer le DOI lorsqu'il y a un résumé et/ou une vignette (c'est-à-dire lorsque le DOI n'est pas délimité par un point final).

££script type="text/javascript">
window.addEventListener("load", pageFullyLoaded, false);

function pageFullyLoaded() {
    const items = document.getElementsByClassName("bibItem");

    for (let i = 0; i < items.length; i++) {
        const walker = document.createTreeWalker(items[i], NodeFilter.SHOW_TEXT, null, false);
        let node;
        while ((node = walker.nextNode())) {
            const text = node.nodeValue;
            if (text.includes("doi.org")) {
                // Match DOI but stop before a trailing period, comma, etc.
                const match = text.match(/(https:\/\/doi\.org\/\S*?)(?=[.,;!?)]?(?:\s|<|$))/);
                if (match) {
                    const url = match[1];
                    const before = text.slice(0, match.index);
                    const after = text.slice(match.index + url.length);

                    const a = document.createElement("a");
                    a.href = url;
                    a.textContent = url;
                    a.target = "_blank";
                    a.rel = "noopener noreferrer";

                    const frag = document.createDocumentFragment();
                    if (before) frag.appendChild(document.createTextNode(before));
                    frag.appendChild(a);
                    if (after) frag.appendChild(document.createTextNode(after));

                    node.parentNode.replaceChild(frag, node);
                }
            }
        }
    }
}
££ /script>
Précédent
Suivant