Tôi cũng đã có vấn đề này, mà vẫn chưa được khắc phục ở Mendeley. Dựa trên đề xuất tuyệt vời của que que, tôi đã giải quyết vấn đề của mình bằng cách sử dụng emacs, nhưng ở chế độ hàng loạt, cho phép tôi bọc giải pháp trong một tập lệnh shell.
Trước hết, tôi đã tạo tập lệnh lisp emacs sau (hãy gọi nó là bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Điều này sắp xếp bất kỳ tập tin bibtex theo tên khóa và sau đó lưu nó. Bạn có thể gọi tập lệnh trong chế độ hàng loạt từ dòng lệnh. Tôi đã đi xa hơn bằng cách viết một kịch bản shell để gọi nó cho mỗi tệp bibtex mà Mendeley đã sắp xếp lại (có hoặc không có tham chiếu mới), bằng cách kiểm tra mã trả về từ " tên tệp git diff " (điều này giúp tiết kiệm thời gian bằng cách không chạy mã lisp không cần thiết trên tập tin không thay đổi).
Đây là tập lệnh shell (hãy tưởng tượng gọi nó là bibsort.sh), giả sử rằng cả tập tin bibtex và tập lệnh lisp đều nằm trong thư mục hiện tại:
#!/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
Chỉ cần chạy nó (sau khi thiết lập quyền tập tin nếu cần) trước mỗi cam kết git:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Nó sẽ không chạm vào các dòng không phải bibtex được thêm bởi Mendeley và sẽ hoạt động trên mọi cài đặt Unix / Linux với emacs. Nó cũng hoạt động trên bảng điều khiển GIT trong Windows (mà tôi đang sử dụng), nhưng bạn sẽ phải cài đặt riêng bản dựng MINGW của emacs.
Đối với tôi, git cam kết bây giờ làm việc thanh lịch và kinh tế. Hi vọng điêu nay co ich ...