ฉันก็มีปัญหานี้ซึ่งยังไม่ได้รับการแก้ไขใน Mendeley จากคำแนะนำที่ยอดเยี่ยมของ que que ฉันได้แก้ไขปัญหาของฉันโดยใช้ emacs แต่ในโหมดแบตช์ช่วยให้ฉันห่อคำตอบในเชลล์สคริปต์ได้เป็นอย่างดี
ก่อนอื่นฉันสร้างสคริปต์ lisp emacs ต่อไปนี้ (เรียกมันว่า bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
นี่จะเรียงลำดับไฟล์ bibtex ใด ๆ ด้วยชื่อคีย์แล้วบันทึก คุณสามารถเรียกใช้สคริปต์ในโหมดแบตช์จากบรรทัดคำสั่ง ฉันไปเขียนเชลล์สคริปต์เพิ่มเติมเพื่อเรียกใช้สำหรับแต่ละไฟล์ bibtex ที่ Mendeley ได้สั่งใหม่ (โดยมีหรือไม่มีการอ้างอิงใหม่) โดยตรวจสอบรหัสส่งคืนจาก "git diff filename " (ซึ่งช่วยประหยัดเวลาโดยไม่ต้องใช้รหัส lisp โดยไม่จำเป็น ไฟล์ที่ไม่เปลี่ยนแปลง)
นี่คือเชลล์สคริปต์ (ลองเรียกมันว่า bibsort.sh) ซึ่งสมมติว่าทั้งไฟล์ bibtex และ lisp script อยู่ในไดเรกทอรีปัจจุบัน:
#!/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
เพียงแค่เรียกใช้ (หลังจากตั้งค่าสิทธิ์ไฟล์หากจำเป็น) ก่อนที่คอมไพล์แต่ละคอมมิตจะยอมรับ:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
มันจะไม่แตะบรรทัดที่ไม่ใช่ bibtex พิเศษที่เพิ่มโดย Mendeley และควรทำงานกับการติดตั้ง Unix / Linux ด้วย emacs นอกจากนี้ยังทำงานบนคอนโซล GIT ใน Windows (ซึ่งฉันใช้อยู่) แต่คุณจะต้องติดตั้ง MINGW build ของ emacs แยกจากกัน
สำหรับฉันตอนนี้คอมไพล์ทำงานได้อย่างหรูหราและประหยัด หวังว่านี่จะช่วย ...