У меня тоже была эта проблема, которая до сих пор не решена в Mendeley. Основываясь на замечательном предложении очереди, я решил свою проблему с помощью emacs, но в пакетном режиме, что позволило мне обернуть решение в сценарий оболочки.
Во-первых, я создал следующий скрипт lisp для emacs (назовем его bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Это сортирует любой файл bibtex по имени ключа и затем сохраняет его. Вы можете вызвать скрипт в пакетном режиме из командной строки. Я пошел дальше в написании сценария оболочки, чтобы вызывать его для каждого файла bibtex, который Менделей переупорядочил (с новыми ссылками или без них), проверив код возврата из «git diff filename » (это экономит время, не выполняя ненужный код lisp в файлы, которые не изменились).
Вот сценарий оболочки (давайте предположительно назовем его bibsort.sh), который предполагает, что и файлы bibtex, и сценарий lisp находятся в текущем каталоге:
#!/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
Просто запустите его (после установки прав доступа к файлам при необходимости) перед каждым git commit:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Он не будет касаться дополнительных не-bibtex строк, добавленных Mendeley, и должен работать на любой установке Unix / Linux с emacs. Он также работает на консоли GIT в Windows (которую я использую), но вам придется установить сборку MINGW для emacs отдельно.
Для меня git commits теперь работает элегантно и экономно. Надеюсь это поможет ...