TL;DR Bibadac est un outil en ligne de commande permettant de gĂ©rer une bibliographie Ă©crite avec BibTeX. Il est conçu pour rĂ©pondre Ă des besoins simples et rĂ©currents commeâŻ: formater une bibliographie et vĂ©rifier la cohĂ©rence des entrĂ©es. Son nom est tirĂ© du verbe polonais biadaÄ qui signifie se plaindre, gĂ©mir, se lamenter, en ajoutant un b pour BibâŻTeX:
BibadaÄ (verbe): faire pleurer des fichiers BibTeX.
Quel type de chercheur / chercheuse ĂȘtes-vous ?
Ăcrire des articles nĂ©cessite de citer des articles. En pratique pour les informaticien·e·s et les mathĂ©maticien·ne·s, cela signifie interagir beaucoup avec le format de bibliographies BibTeX. Ce âformatâ est trĂšs flexible, et en consĂ©quence, il est trĂšs facile de faire des erreurs. Cet outil peut vous ĂȘtre utile si vous avez dĂ©jĂ âŻ:
- Modifié des entrées BibTeX à la main pour retirer des champs.
- Pleuré devant des entrées BibTeX illisible parce que mal formatées.
- Eu des problÚmes de cohérence entre les entrées de votre fichier BibTeX.
- Cité des articles en utilisant des liens morts.
- Ajouté des champs dans fichier écrit par un·e collÚgue.
- Eu des erreurs de compilation de votre fichier LaTeX Ă cause de votre fichier BibTeX.
Bibadac
BibadaÄ est un outil en ligne de commande Ă©crit en Rust pour gĂ©rer des fichiers BibTeX. Il est conçu pour ĂȘtre simple et rapide. Pour lister les potentielles erreurs dans un fichier bibadac check mon-fichier.bib. Pour formater un fichier bibadac format mon-fichier.bib. Pour tĂ©lĂ©charger les derniĂšres versions des entrĂ©es bibliographiques ainsi que tous les PDFs associĂ©s bibadac setup mon-fichier.bib.1
Encore un nouvel outilâŻ? Il existe dĂ©jĂ de nombreux outils pour gĂ©rer des fichiers BibTeX. Cependant, ces outils sont souvent pĂ©nibles. Ils utilisent des interprĂ©teurs (Python, Node.js) et sont donc relativement lourds Ă dĂ©ployer, alors que BibadaÄ est un binaire dâĂ peine 2âŻMo.2 De plus, ils sont souvent assez stricts sur le format de fichierâŻ: des erreurs de syntaxes mineures peuvent les faire planter. LĂ oĂč BibadaÄ se dĂ©marque, câest quâil utilise Tree Sitter pour analyser le fichier dâentrĂ©eâŻ: cela permet de faire des diagnostics pertinents mĂȘme sur des fichiers invalides, et de formater des fichiers invalides sur le principe du meilleur effort. De plus, son fonctionnement sans Ă©tat le rend particuliĂšrement adaptĂ© Ă des pipelines de compilation ou dâintĂ©gration continue.
FonctionnalitĂ©s.âŻLa principale fonction de BibadaÄ est de vĂ©rifier la cohĂ©rence des entrĂ©es dâun fichier BibTeX. Cela signifie vĂ©rifier lâabsence de doublons, de champs vides, dâURLs qui ne sont pas accessibles, de versions pĂ©rimĂ©es dâun document, etc. En plus de cela, BibadaÄ propose de formater un fichier BibTeX pour le rendre plus lisible, avec la possibilitĂ© dâenrichir les entrĂ©es avec des informations provenant dâun autre fichier BibTeX. Enfin, BibadaÄ propose de tĂ©lĂ©charger des versions âstandardisĂ©esâ des citations issues du fichier dâentrĂ©e ainsi que (presque) tous les PDFs associĂ©s.
Usage typique. Vous commencez Ă collaborer sur un projet, vous tĂ©lĂ©chargez le fichier BibTeX de votre collĂšgue. Vous lancez bibadac setup pour obtenir tous les documents nĂ©cessaires ainsi quâune base de rĂ©fĂ©rence bibliographique Ă jour. Vous pouvez ensuite vous servir de cette base pour vĂ©rifier votre fichier BibTeX, et le formater, lâenrichir au besoin, ou en supprimer certains champs inutiles. Avant de publier votre article, vous pouvez lancer une derniĂšre fois bibadac check pour vĂ©rifier que tout est en ordre.
Technologies, Développement, Déploiement
Comme dĂ©jĂ mentionnĂ©, BibadaÄ est Ă©crit en Rust. Le langage possĂšde une excellente communautĂ©, beaucoup de bibliothĂšques et une toolchain fabuleuse. Le cĆur de BibadaÄ est basĂ© sur Tree-sitter, un parser gĂ©nĂ©rique qui permet de faire des analyses syntaxiques de fichiers de maniĂšre efficace et itĂ©rative.3 Le seul et unique problĂšme avec ce langage est son utilisation des durĂ©es de vie nommĂ©es qui sâĂ©crivent avec la syntaxe <'a>, orâŻ:
- JâĂ©cris avec un clavier BĂPO et je nâai pas envie de changer de disposition pour Ă©crire du code.
- Jâutilise un MacPro dâoccasion sans y avoir installĂ© Linux, et le driver bĂ©po ne permet pas facilement de taper le caractĂšre
', qui est systĂ©matiquement remplacĂ© par un caractĂšreâ.
Afin de faire une petite dĂ©monstration en ligne de BibadaÄ, jâai Ă©crit une interface web minimaliste, et câest Ă ce moment lĂ que jâai rencontrĂ© le premier bĂ©molâŻ: jâespĂ©rais pouvoir compiler BibadaÄ vers du WebAssembly pour avoir un dĂ©monstrateur sur une page statique, mais cela nâest pas possible Ă cause de la dĂ©pendance Ă Tree-sitter et des incompatibilitĂ©s dâABI WebAssembly. Jâai donc dĂ» construire une petite API en ligne. Pour sa mise en route jâai utilisĂ© le service shuttle.rs, destinĂ© Ă dĂ©ployer des applications Rust en ligne de maniĂšre simple, rapide, et sans configuration.4 Câest particuliĂšrement simple Ă utiliser (une seule commande), et le dĂ©ploiement de lâapplication est fait en une dizaine de minutes lors du premier build.
Conclusion
Un jour, peut-ĂȘtre, BibadaÄ sera un outil incontournable. En attendant, testez le en ligne sur đ§Ż BibadaÄ â Web Demo. Si vous ĂȘtes plutĂŽt CURLieux, vous pouvez directement utiliser lâAPI:
curl -X POST \
-H "Content-Type: plain/text" \
-d @mon-fichier.bib \
https://bibadac-web-woht.shuttle.app/api/checkAttention, lâutilisation de Sci-Hub est illĂ©gale dans de nombreux pays. Si vous utilisez cette fonctionnalitĂ©, vous ĂȘtes seul responsable de vos actes. En revanche, les documents tĂ©lĂ©chargĂ©s sur arXiv ou des pages personnelles dâauteurs nâont en gĂ©nĂ©ral pas de problĂšmes de lĂ©galitĂ©.â©ïž
Notons que câest quand mĂȘme Ă©norme pour un si petit programme.â©ïž
Pour le moment, ce nâest pas utilisĂ©, mais dans la perspective dâĂ©crire un plugin pour un Ă©diteur de texte, cette fonction permet de faire des analyses dâun fichier pendant que lâutilisateur le modifie.â©ïž
Câest-Ă -dire, que toute la configuration est extraite de lâexĂ©cutable lui-mĂȘme (ou plutĂŽt, de la phase de compilation de lâexĂ©cutable), ce qui veut dire que la configuration est toujours Ă jour avec le code.â©ïž