Je travaille avec LaTeX et je fais du versioning avec Git. Pour la gestion de la bibliographie, j'utilise Mendeley.
Le problème est que chaque fois que Mendeley synchronise ses .bib
exportations, elles sont dans un ordre différent, ce qui rend le versionnement de la bibliographie beaucoup plus difficile.
Mon idée est de trier les entrées BibTex dans un .bib
fichier, à chaque fois avant de les valider.
Pourriez-vous m'aider, comment faire cela de manière intelligente (courte et douce)? :)
PS Je peux exécuter cette routine manuellement. Je n'ai pas besoin d'intégration git. Je veux juste que le programme / script trie le .bib
fichier.
text-processing
git
sort
latex
Grzegorz Wierzowiecki
la source
la source
Réponses:
Et alors
bibsort
?Il est un script shell emballage
nawk
(ettr
,sort
etgrep
) et comprend deux avertissements que vous pourriez avoir à faire attention à (voir la source).( Modifier Il y a aussi beaucoup de modules Perl liés à bibtex ...)
Edit2 Je viens de reconnaître que vous souhaitez trier pour n'importe quelle clé, tout en
bibsort
apparemment triant uniquement par les balises bibtex - mais peut-être que sa source (ce n'est pas trop long) est toujours utile ...?la source
Vous pouvez utiliser
bibtool
(-s
option - trier selon la clé de référence) avec le hook git post-commit.la source
Le gestionnaire de référence
jabref
semble avoir une telle option dans les préférences (voir la section Ordre de tri dans la page Fichier). Il possède également de nombreuses fonctionnalités intéressantes:la source
J'ai eu exactement le même problème, jusqu'à mon choix d'outils: utiliser git et Mendeley sur linux.
Ma «solution» est médiocre par rapport à un script de ligne de commande, mais cela m'a quand même fait plaisir, alors voici:
(J'utilisais aussi déjà emacs, donc) ce que je fais, c'est ouvrir une copie du fichier bibtex dans emacs après avoir fait un travail à Mendeley, puis je cours
dans emacs, enregistrez les résultats et validez ces résultats triés dans git.
Apparemment, le mode bibtex est standard dans emacs, car je n'avais rien à installer et emacs reconnaissait automatiquement mon «.bib» comme un fichier bibtex.
la source
Moi aussi, j'ai eu ce problème, qui n'est toujours pas résolu à Mendeley. Sur la base de la grande suggestion de que que, j'ai résolu mon problème en utilisant emacs, mais en mode batch, ce qui m'a permis d'envelopper la solution dans un script shell.
Tout d'abord, j'ai créé le script lisp emacs suivant (appelons-le bibsort.el):
Cela trie tout fichier bibtex par nom de clé, puis l'enregistre. Vous pouvez appeler le script en mode batch depuis la ligne de commande. Je suis allé plus loin en écrivant un script shell pour l'appeler pour chaque fichier bibtex que Mendeley avait réorganisé (avec ou sans nouvelles références), en vérifiant le code retour de "git diff filename " (cela fait gagner du temps en n'exécutant pas inutilement le code lisp sur fichiers qui n'ont pas changé).
Voici le script shell (appelons-le imaginativement bibsort.sh), qui suppose que les fichiers bibtex et le script lisp se trouvent dans le répertoire courant:
Il suffit de l'exécuter (après avoir défini les autorisations de fichier si nécessaire) avant chaque validation git:
Il ne touchera pas aux lignes supplémentaires non bibtex ajoutées par Mendeley et devrait fonctionner sur toute installation Unix / Linux avec emacs. Il fonctionne également sur la console GIT sous Windows (que j'utilise), mais vous devrez installer séparément la version MINGW d'emacs.
Pour moi, git commits fonctionne désormais de manière élégante et économique. J'espère que cela t'aides ...
la source
bibsort
fonction séparée , leemacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-buffer
fera aussi.emacs (et xemacs) ont un module complémentaire appelé AUCTeX , qui (entre autres raccourcis clavier et aides liés à (La) TeX) a un mode spécial pour BibTeX, y compris le tri des
.bib
fichiers par clé.la source
Si vous souhaitez exécuter une commande à chaque fois qu'une validation est effectuée, le
post-commit
hook git peut peut-être vous aider (voir par exemple la description dans le livre git) .la source