Auch ich hatte dieses Problem, das in Mendeley immer noch nicht behoben ist. Basierend auf dem großartigen Vorschlag von que que habe ich mein Problem mit Emacs gelöst, aber im Batch-Modus, sodass ich die Lösung in ein Shell-Skript einbinden konnte.
Zuerst habe ich das folgende Emacs-Lisp-Skript erstellt (nennen wir es bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Dadurch werden alle bibtex-Dateien nach Schlüsselnamen sortiert und dann gespeichert. Sie können das Skript im Batch-Modus über die Befehlszeile aufrufen. Ich habe ein Shell-Skript geschrieben, um es für jede von Mendeley neu geordnete Bibtex-Datei (mit oder ohne neue Referenzen) aufzurufen, indem ich den Rückkehrcode von "git diff filename " überprüfte (dies spart Zeit, indem ich den Lisp-Code nicht unnötig ausführte) Dateien, die sich nicht geändert haben).
Hier ist das Shell-Skript (nennen wir es einfallsreich bibsort.sh), das davon ausgeht, dass sich sowohl die bibtex-Dateien als auch das lisp-Skript im aktuellen Verzeichnis befinden:
#!/bin/bash
bibliobasher() {
IFS=$( echo -en "\n" )
BIBFILES=*.bib
for bibfile in $BIBFILES
do
git diff --quiet "$bibfile" 2> /dev/null
if [ $? = 1 ]; then
emacs --batch -l bibsort.el "$bibfile" -f bibsort
fi
done
}
bibliobasher
Führen Sie es einfach vor jedem Git-Commit aus (nach dem Festlegen der Dateiberechtigungen, falls erforderlich):
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Es wird die von Mendeley hinzugefügten zusätzlichen Nicht-Bibtex-Zeilen nicht berühren und sollte auf jeder Unix / Linux-Installation mit Emacs funktionieren. Es funktioniert auch auf der GIT-Konsole in Windows (die ich verwende), aber Sie müssten den MINGW-Build von Emacs separat installieren.
Git commit arbeitet für mich jetzt elegant und wirtschaftlich. Hoffe das hilft ...