Comment lister les mots-clés utilisés dans un fichier BibTeX ou BibLaTeX ?

BibTeX-Ruby est un parseur en Ruby facile à utiliser. On peut l'installer en un tournemain :

      
      gem install bibtex-ruby
      
      

La boucle suivante permet d'afficher les mots-clés de chaque entrée d'un fichier de bibliographie au format BibTeX ou BibLaTeX :

      
      require 'bibtex'
      bib = BibTeX.open('/home/you/index.bib')
        for i in bib[/keywords/] do
          puts i.keywords
        end
      
      

Vous pouvez enregistrer le script dans un fichier texte, nommé par ex. bib-keywords.rb, et l'exécuter en ligne de commande : ruby bib-keywords.rb. Le résultat du script s'affichera dans l'émulateur de terminal où vous avec lancé la commande. Voyons comment ça marche :

require 'bibtex'
Charge le module bibtex-ruby
bib = BibTeX.open('/home/vous/index.bib')
le fichier index.bib est parsé. Remplacez /home/you/index.bib par le chemin d'accès à votre fichier.
bib[/keywords/]
Cette partie sélectionne toutes les entrées du fichier où la chaîne de caractères keywords est trouvée. Apparemment le sélecteur .keywords renvoie une erreur quand il est appliqué à une entrée qui ne contient pas ce champ. Il faut donc présélectionner les entrées qui possèdent ce champ et c'est ainsi que j'ai réussi à le faire. Les autres sélecteurs ne se comportent pas ainsi. Par exemple, la boucle suivante se contente de ne rien renvoyer quand elle passe sur une entrée qui ne comporte pas de champ year, sans soulever d'erreur :
      
      require 'bibtex'
      bib = BibTeX.open('/home/vous/index.bib')
        for i in bib do
          puts i.year
        end
      
      
Je suis conscient que cette présélection peut être une source d'erreurs si le fichier bibliographique comprend une entrée qui ne comporte pas de champ keywords mais où le mot figure ailleurs par ex. dans le titre ou le résumé.

La boucle elle-même se comprend ainsi « Pour chaque entrée du fichier, parmi toutes celles qui comportent le mot keyword, afficher (puts) le contenu de ce champ keywords. »

Le résultat du script peut être mis en forme : les virgules peuvent être remplacées par un saut de ligne, les mots-clés peuvent être ordonnés alphabétiquement et les doublons éliminés. Il suffit d'utiliser les outils GNU ad hoc : sed, sort et uniq. Dans l'émulateur de terminal :


      ruby bib-keywords.rb | sed -e 's/, /\n/g' | sort | uniq
      

Voilà, le résultat peut servir à la normalisation des mots-clés utilisés dans le fichier : il est facile d'y repérer les variantes indésirables d'un même mot-clé (formes plurielles ou commençant par une majuscule) et de procéder aux corrections dans le fichier bibliographique avec votre éditeur de texte préféré.