Saya bekerja dengan LaTeX dan melakukan versi dengan Git. Untuk manajemen bibliografi saya menggunakan Mendeley.
Masalahnya adalah bahwa setiap kali Mendeley menyinkronkan .bib
ekspornya, mereka berada dalam urutan yang berbeda, yang membuat versi bibliografi jauh lebih sulit.
Ide saya adalah untuk mengurutkan entri BibTex dalam .bib
file, setiap kali sebelum melakukan.
Bisakah Anda membantu saya, bagaimana melakukan ini dengan cara yang cerdas (pendek & manis)? :)
PS Saya bisa menjalankan rutin ini secara manual. Saya tidak perlu integrasi git. Saya hanya ingin program / skrip mengurutkan .bib
file.
text-processing
git
sort
latex
Grzegorz Wierzowiecki
sumber
sumber
Jawaban:
Bagaimana dengan
bibsort
?Ini adalah pembungkus skrip shell
nawk
(dantr
,sort
dangrep
) dan mencakup dua peringatan yang mungkin harus Anda perhatikan (lihat sumbernya).( Sunting Ada juga banyak modul Perl terkait bibtex ...)
Sunting2 Saya baru saja mengenali Anda ingin mengurutkan untuk kunci apa saja , sementara
bibsort
tampaknya hanya mengurutkan berdasarkan tag bibtex - tapi mungkin sumbernya (tidak terlalu lama) masih membantu ...?sumber
Anda dapat menggunakan
bibtool
(-s
opsi - urutkan sesuai dengan kunci referensi) dengan hook git post-commit.sumber
Manajer referensi
jabref
tampaknya memiliki opsi seperti itu di preferensi (lihat bagian Urutkan urutan di halaman File). Ini juga memiliki banyak fitur menarik:sumber
Saya memiliki masalah yang sama persis, sampai ke pilihan alat saya: menggunakan git dan Mendeley di linux.
'Solusi' saya di bawah rata-rata dibandingkan dengan skrip baris perintah, tapi tetap saja itu membuat saya senang, jadi ini dia:
(saya juga sudah menggunakan emacs, jadi) yang saya lakukan adalah membuka salinan file bibtex di emacs setelah saya melakukan pekerjaan di Mendeley, lalu saya jalankan
di emacs, simpan hasilnya, dan komit hasil yang diurutkan itu ke git.
Rupanya bibtex-mode adalah standar dalam emacs, karena saya tidak perlu menginstal apa pun, dan emacs secara otomatis mengenali '.bib' saya sebagai file bibtex.
sumber
Saya juga mengalami masalah ini, yang masih belum diperbaiki di Mendeley. Berdasarkan saran besar que que, saya memecahkan masalah saya menggunakan emacs, tetapi dalam mode batch, memungkinkan saya untuk membungkus solusi dalam skrip shell.
Pertama, saya membuat skrip emacs lisp berikut (sebut saja bibsort.el):
Ini mengurutkan semua file bibtex dengan nama kunci dan kemudian menyimpannya. Anda dapat memanggil skrip dalam mode batch dari baris perintah. Saya melangkah lebih jauh dalam menulis skrip shell untuk memanggilnya untuk setiap file bibtex yang telah Mendeley ulang (dengan atau tanpa referensi baru), dengan memeriksa kode kembali dari "git diff nama file " (ini menghemat waktu dengan tidak menjalankan kode lisp yang tidak perlu pada file yang belum berubah).
Inilah skrip shell (mari kita sebut bibsort.sh), yang mengasumsikan bahwa kedua file bibtex dan skrip lisp ada di direktori saat ini:
Jalankan saja (setelah mengatur izin file jika perlu) sebelum setiap git melakukan:
Itu tidak akan menyentuh garis non-bibtex tambahan yang ditambahkan oleh Mendeley, dan akan bekerja pada instalasi Unix / Linux dengan emacs. Ini juga berfungsi pada konsol GIT di Windows (yang saya gunakan), tetapi Anda harus menginstal build MINGW dari emacs secara terpisah.
Bagi saya, git commit sekarang bekerja dengan elegan dan ekonomis. Semoga ini membantu ...
sumber
bibsort
fungsi yang terpisah ,emacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-buffer
akan melakukannya juga.emacs (dan xemacs) memiliki add-on yang disebut AUCTeX , yang (antara lain (La) TeX pintasan terkait kunci dan pembantu) memiliki mode khusus untuk BibTeX, termasuk menyortir
.bib
file dengan kunci.sumber
Jika Anda ingin menjalankan perintah setiap kali komit dilakukan, mungkin git
post-commit
hook dapat membantu (lihat misalnya deskripsi di buku git .sumber