Helm-Bibtex: Ivy-Bibtex:
Helm-Bibtex dan Ivy-Bibtex memungkinkan Anda untuk mencari dan mengelola bibliografi bibtex Anda. Mereka berdua memiliki backend generik yang sama, pelengkap bibtex, tetapi satu menggunakan kerangka kerja penyelesaian helm dan ivy lainnya sebagai front-end.
bibtex-completion-watch-bibliography . Dapat digunakan untuk menonaktifkan pemuatan ulang otomatis dari bibliografi.ivy-bitex . Lihat di sini.helm-bibtex-with-local-bibliography dan ivy-bibtex-with-local-bibliography Sekarang juga menggunakan bibliografi yang didefinisikan secara lokal dan global dalam file org. Ini adalah bibliografi yang ditentukan menggunakan #+BIBLIOGRAPHY: kata kunci dan yang ada dalam variabel org-cite-global-bibliography .bibtex-completion-format-citation-org-cite (untuk digunakan dalam variabel konfigurasi bibtex-completion-format-citation-functions )=has-pdf= dan =has-note= .helm-bibtex-with-notes dan ivy-bibtex-with-noted untuk mencari hanya di dalam entri yang memiliki catatan.author-or-editor untuk digunakan dalam templat Notes.@string .Lihat news.org untuk berita lama.
Helm-Bibtex 'dan ivy-bibtex' Poin jual adalah pencarian yang efisien dalam bibliografi besar menggunakan ekspresi pencarian yang kuat dan integrasi yang ketat ke dalam alur kerja Emacs Anda. Mereka berdua dapat melakukan tindakan berikut pada entri yang cocok dengan ekspresi pencarian: buka PDF yang terkait dengan entri, URL atau doi, masukkan kutipan untuk entri itu, kunci Bibtex, entri Bibtex, atau referensi teks biasa, lampirkan PDF ke email, ambil catatan, edit entri Bibtex. Banyak aspek dapat dikonfigurasi agar sesuai dengan preferensi pribadi.
Di bawah ini adalah tangkapan layar yang menunjukkan pencarian helm-bibtex untuk entri yang berisi ekspresi "pelacakan mata".

Ekspresi Reguler eye.?tracking memungkinkan mencari ejaan yang berbeda ("pelacakan mata", "pelacakan mata", "eyetracking"). Simbol persegi yang diulang (⌘) di sebelah entri menunjukkan bahwa PDF tersedia. Simbol pena (✎) berarti ada catatan yang melekat pada entri ini. Di bagian bawah, ada entri yang dapat digunakan untuk mencari di database online.
Cara termudah untuk memasang helm-bibtex atau ivy-bibtex adalah melalui Melpa. Atau, letakkan file bibtex-completion.el dan baik helm-bibtex.el atau ivy-bibtex.el dalam direktori yang termasuk dalam jalur beban Anda dan tambahkan baris berikut ke file start-up Anda (biasanya init.el ):
( autoload 'helm-bibtex " helm-bibtex " " " t )atau
( autoload 'ivy-bibtex " ivy-bibtex " " " t )
; ; ivy-bibtex requires ivy's `ivy--regex-ignore-order` regex builder, which
; ; ignores the order of regexp tokens when searching for matching candidates.
; ; Add something like this to your init file:
( setq ivy-re-builders-alist
'((ivy-bibtex . ivy--regex-ignore-order)
( t . ivy--regex-plus)))Helm-Bibtex dan Ivy-Bibtex bergantung pada sejumlah paket yang akan secara otomatis diinstal jika Anda menggunakan Melpa.
Saat menggunakan helm-bibtex atau ivy-bibtex, pastikan helm atau ivy dikonfigurasi dengan benar (lihat dokumentasi helm atau dokumentasi ivy).
Konfigurasi minimal melibatkan memberi tahu pelengkap bibtex di mana bibliografi Anda dapat ditemukan:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) Pengguna org-bibtex juga dapat menentukan file bibliografi mode org, dalam hal ini akan diasumsikan bahwa ada file Bibtex dengan nama yang sama dan ekstensi Bib bukan org. Jika file bib memiliki nama yang berbeda, gunakan sel kontra ("orgfile.org" . “bibfile.bib") sebagai gantinya:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/org-bibtex-file.org "
( " /path/to/org-bibtex-file2.org " . " /path/to/bibtex-file.bib " )))Tentukan di mana PDF dapat ditemukan:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) Bibtex-Completion mengasumsikan bahwa nama PDF terdiri dari kunci Bibtex diikuti ditambah akhiran yang ditentukan pengguna ( .pdf secara default). Misalnya, jika entri Bibtex memiliki Darwin1859 kunci, Bibtex-Completion mencari untuk Darwin1859.pdf .
Jika entri Bibtex memiliki bidang yang menentukan jalur lengkap ke PDF, bidang itu juga dapat digunakan. Misalnya, Jabref dan Zotero menyimpan lokasi PDF di bidang yang disebut File :
( setq bibtex-completion-pdf-field " File " ) Jika bibtex-completion-pdf-field adalah non-nol, Bibtex-Completion pertama-tama akan mencoba mengambil file yang ditentukan dalam bidang ini. Jika bidang tidak ditetapkan untuk entri atau jika file yang ditentukan tidak ada, pelengkap Bibtex kembali ke metode yang dijelaskan di atas (mencari kunci + .pdf di direktori yang tercantum dalam bibtex-completion-library-path ).
Spesifikasi file dapat berupa jalur telanjang atau mengikuti format yang digunakan oleh Jabref, Zotero, Calibre, dan Mendeley. Format ini juga memungkinkan spesifikasi beberapa file (misalnya, kertas utama dan materi tambahan). Contoh:
File = {/path/to/article.pdf}File = {:/path/to/article.pdf:PDF}File = {:/path/to/article.pdf:PDF;:/path/to/supplementary_materials.pdf:PDF} Bibtex-Completion mendukung dua metode untuk menyimpan catatan. Ini dapat menyimpan semua catatan dalam satu file atau menyimpan catatan di beberapa file, satu file per publikasi. Dalam kasus pertama, variabel kustomisasi bibtex-completion-notes-path harus diatur ke jalur lengkap file catatan:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) Jika satu file per publikasi lebih disukai, bibtex-completion-notes-path harus menunjuk ke direktori yang digunakan untuk menyimpan file catatan:
( setq bibtex-completion-notes-path " /path/to/notes " ) Nama-nama file-file ini terdiri dari kunci Bibtex ditambah akhiran yang ditentukan pengguna ( .org secara default).
Pada titik ini kebanyakan orang akan siap untuk pergi. Lewati penggunaan di bawah ini untuk melihat cara menggunakan helm-bibtex dan ivy-bibtex.
Memanggil helm-bibtex atau ivy-bibtex ketika titik pada kutipan mode org akan secara otomatis memilih kunci itu. Namun, default org-open-at-point pada kutipan org akan membawa Anda ke entri bibliografi yang sesuai. Kode berikut akan mengubah perilaku ini untuk membuka helm-bibtex-follow saat mengikuti kutipan org dengan memasukkan RET atau mengkliknya:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) Catatan dalam kasus kutipan org dengan beberapa tombol, kode di atas tidak akan memilih entri apa pun ketika porsi [cite: dipilih. Lihat di sini untuk alternatif Ivy.
Variabel bibtex-completion-display-formats dapat digunakan untuk menyesuaikan bagaimana hasil pencarian disajikan berdasarkan tipe per-entri. Standarnya adalah
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) Yang berarti bahwa semua jenis entri disajikan dengan cara yang sama: penulis, judul, tahun, ... dalam string format ini, angka -angka menunjukkan berapa banyak ruang yang dicadangkan untuk bidang masing -masing. Jika ada * bukan angka yang berarti bahwa bidang ini mendapatkan ruang apa pun yang tersisa. Berikut adalah pengaturan yang menggunakan tata letak yang berbeda untuk jenis entri yang berbeda:
( setq bibtex-completion-display-formats
'((article . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${journal:40} " )
(inbook . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} Chapter ${chapter:32} " )
(incollection . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${booktitle:40} " )
(inproceedings . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${booktitle:40} " )
( t . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} " ))) Agar ini berfungsi, Anda harus menambahkan journal dan booktitle ke bibtex-completion-additional-search-fields . Lihat bagian berikutnya.
Bidang default yang digunakan untuk pencarian adalah: Penulis, Judul, Tahun, Kunci Bibtex, Jenis Masuk (Artikel, Inproke, ...). Variabel bibtex-completion-addition-search-fields dapat digunakan untuk memperluas daftar ini. Contoh:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) Jika file PDFS mengikuti skema penamaan yang berbeda dari tombol BIBTEX + .pdf , fungsi bibtex-completion-find-pdf-in-library dapat dimodifikasi untuk mengakomodasi itu.
Secara default Emacs digunakan untuk membuka file PDF. Ini berarti bahwa DOCVIEW digunakan, atau, jika diinstal, ekstensi PDF-Tools yang jauh lebih unggul yang menawarkan fitur-fitur seperti pencarian tambahan dalam file PDF dan pembuatan dan modifikasi anotasi yang kompatibel dengan anotasi yang dibuat oleh perangkat lunak Adobe.
Untuk mengonfigurasi penampil PDF lain, variabel kustomisasi bibtex-completion-pdf-open-function dapat digunakan. Berikut adalah contoh konfigurasi untuk skim pemirsa OS X PDF:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))Berikut adalah contoh lain untuk penampil PDF Linux Evince:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) Terkadang diinginkan untuk memiliki kedua opsi (Emacs itu sendiri dan penampil eksternal) untuk membuka PDF. Berikut ini menambahkan tindakan dengan Evince sebagai penampil eksternal terikat ke P , di samping pemirsa Emacs biasa dengan p Tindakan ini bekerja dengan Ivy-Bibtex; itu harus disesuaikan untuk helm-bibtex (ubah jalur ke pemirsa lain jika perlu):
( defun bibtex-completion-open-pdf-external ( keys &optional fallback-action )
( let ((bibtex-completion-pdf-open-function
( lambda ( fpath ) ( start-process " evince " " *helm-bibtex-evince* " " /usr/bin/evince " fpath))))
(bibtex-completion-open-pdf keys fallback-action)))
(ivy-bibtex-ivify-action bibtex-completion-open-pdf-external ivy-bibtex-open-pdf-external)
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-pdf-external " Open PDF file in external viewer (if present) " ))) Anda dapat menyimpan PDF tambahan untuk entri yang diberikan, seperti versi beranotasi dari PDF asli, file yang berisi bahan tambahan, atau file bab. Jika bidang file digunakan untuk menautkan PDF ke entri (lihat bagian file PDF), PDF tambahan ini dapat ditambahkan ke bidang itu. Jika tindakan "Open PDF File" dipicu, Anda kemudian akan diminta untuk file dibuka.
Jika bidang file tidak digunakan tetapi sebaliknya skema penamaan bibtex-key + .pdf (sekali lagi lihat file PDF), Anda dapat memperoleh perilaku yang sama dengan:
( setq bibtex-completion-find-additional-pdfs t )Semua file yang namanya dimulai dengan tombol Bibtex kemudian akan dikaitkan dengan entri. Maka cukup untuk memberi nama file Anda sesuai (misalnya dengan utilitas ganti nama). Contoh:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf Perhatikan bahwa untuk alasan kinerja, file -file tambahan ini hanya terdeteksi saat memicu tindakan, seperti "Open PDF File". Ketika seluruh bibliografi dimuat, hanya "utama" PDF bibtex-key.pdf yang terdeteksi.
Jika dokumen dirujuk melalui skema penamaan bibtex-key.pdf tetapi Anda menyimpan file dalam format yang berbeda dari PDF, Anda dapat mengatur variabel bibtex-completion-pdf-extension yang sesuai. Contoh:
( setq bibtex-completion-pdf-extension " .djvu " )Jika Anda menyimpan file dalam berbagai format, maka Anda dapat menentukan daftar alih -alih jenis file tunggal:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))Ekstensi dalam daftar ini kemudian dicoba secara berurutan sampai file ditemukan. Berhati -hatilah bahwa ini dapat mengurangi kinerja untuk bibliografi besar.
Secara default, Bibtex-Completion menggunakan apa pun default Emacs. Namun, ada berbagai alternatif (lihat dokumentasi bibtex-completion-browser-function untuk daftar lengkap). Contoh:
( setq bibtex-completion-browser-function 'browser-url-chromium )Fungsi yang ditentukan pengguna juga dapat digunakan:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) Reloading otomatis dapat dikonfigurasi menggunakan bibtex-completion-watch-bibliography .
Bibtex-Completion menciptakan kutipan berdasarkan mode utama di mana kutipan dimasukkan:
Daftar mode dapat diperpanjang dan fungsi kutipan dapat diubah menggunakan bibtex-completion-format-citation-functions . Misalnya, orang yang tidak menggunakan EBIB mungkin lebih suka tautan ke PDF daripada EBIB-link dalam file mode org:
( setq bibtex-completion-format-citation-functions
'(( org-mode . bibtex-completion-format-citation-org-link-to-PDF)
( latex-mode . bibtex-completion-format-citation-cite)
( markdown-mode . bibtex-completion-format-citation-pandoc-citeproc)
( default . bibtex-completion-format-citation-default))) Ketika Anda ingin membuat daftar yang harus dilakukan dalam mode org, Anda dapat menyempurnakan judul file PDF di tautan. Untuk mencapai tujuan ini, Anda dapat memodifikasi bibtex-completion-format-citation-functions menggunakan cuplikan kode berikut:
( setq bibtex-completion-format-citation-functions
'(( org-mode . bibtex-completion-format-citation-org-title-link-to-PDF)
( latex-mode . bibtex-completion-format-citation-cite)
( markdown-mode . bibtex-completion-format-citation-pandoc-citeproc)
( default . bibtex-completion-format-citation-default)))Fungsi kutipan harus menerima daftar kunci sebagai input dan mengembalikan string yang berisi kutipan. Lihat fungsi kutipan yang telah ditentukan untuk contoh.
Bibtex-Completion meminta perintah kutipan lateks saat memasukkan kutipan dalam dokumen lateks. Daftar perintah yang tersedia untuk pelengkapan otomatis dapat didefinisikan menggunakan variabel bibtex-completion-cite-commands .
Pengaturan default mencakup semua perintah CITE yang ditentukan dalam Biblatex (kecuali perintah multicite dan volcite et al.). Jika tidak ada perintah yang dimasukkan, perintah default digunakan yang dapat dikonfigurasi menggunakan bibtex-completion-cite-default-command . Nilai default untuk perintah default cite . Variabel bibtex-completion-cite-default-as-initial-input mengontrol bagaimana perintah default digunakan. Jika t , itu dimasukkan ke dalam minibuffer sebelum membaca input dari pengguna. Jika nil , itu tidak dimasukkan ke dalam minibuffer tetapi digunakan sebagai default jika pengguna tidak memasukkan apa pun.
Secara default, pelengkap BIBTEX juga meminta pre-dan postnotes opsional untuk kutipan. Ini dapat dimatikan dengan mengatur variabel bibtex-completion-cite-prompt-for-optional-arguments ke nil .
Lihat juga bagian memasukkan perintah lateks lateks di bawah ini.
Database online dapat dikonfigurasi menggunakan variabel kustomisasi bibtex-completion-fallback-options . Variabel ini berisi alist di mana elemen pertama dari setiap entri adalah nama database dan elemen kedua adalah URL atau fungsi. URL harus berisi %s pada posisi di mana ekspresi pencarian saat ini harus dimasukkan. Jika suatu fungsi digunakan, fungsi itu harus mengambil ekspresi pencarian ini sebagai argumen tunggal.
Untuk akses cepat ke bibliografi, ikat perintah pencarian, helm-bibtex atau ivy-bibtex , ke kunci yang nyaman.
Helm-Bibtex : Saya menggunakan kunci menu sebagai kunci awalan untuk semua perintah helm dan mengikat helm-bibtex ke b . Helm-Bibtex kemudian dapat mulai menggunakan <menu> b . Ini juga berguna untuk mengikat helm-resume ke <menu> di helm-command-map . Dengan ikatan ini, <menu> <menu> dapat digunakan untuk membuka kembali pencarian helm terakhir.
( global - set - key ( kbd " <menu> " ) ' helm-command-prefix)
(define-key helm-command-map "b" ' helm - bibtex )
( define - key helm - command - map " B " ' helm-bibtex-with-local-bibliography)
(define-key helm-command-map "n" ' helm - bibtex - with - notes )
( define - key helm - command - map ( kbd " <menu> " ) ' helm-resume) IVY-BIBTEX : Anda juga bisa mengikat ivy-bibtex ke <menu> b dan ivy-resume ke <menu> <menu> .
Untuk kenyamanan, pencarian yang sering dapat ditangkap dalam perintah dan terikat pada kombinasi kunci. Di bawah ini adalah contoh kode yang mendefinisikan pencarian untuk publikasi yang ditulis oleh "Jane Doe" dan mengikat perintah pencarian ke Cx p .
Helm-Bibtex :
( defun helm-bibtex-my-publications ( &optional arg )
" Search BibTeX entries authored by “Jane Doe”.
With a prefix ARG, the cache is invalidated and the bibliography reread. "
( interactive " P " )
(helm-bibtex arg nil " Jane Doe " ))
; ; Bind this search function to Ctrl-x p:
( global-set-key ( kbd " C-x p " ) 'helm-bibtex-my-publications )Ivy-Bibtex :
( defun ivy-bibtex-my-publications ( &optional arg )
" Search BibTeX entries authored by “Jane Doe”.
With a prefix ARG, the cache is invalidated and the bibliography reread. "
( interactive " P " )
( when arg
(bibtex-completion-clear-cache))
(bibtex-completion-init)
(ivy-read " BibTeX Items: "
(bibtex-completion-candidates)
:initial-input " Jane Doe "
:caller 'ivy-bibtex
:action ivy-bibtex-default-action))
; ; Bind this search function to Ctrl-x p:
( global-set-key ( kbd " C-x p " ) 'ivy-bibtex-my-publications ) Menekan <enter> pada publikasi memicu "Tindakan Default" yang membuka PDF yang terkait dengan publikasi, jika ada, atau URL atau DOI -nya sebaliknya. Menekan <tab> di helm-bibtex atau Mo di ivy-bibtex sebagai gantinya menampilkan menu tindakan yang mencantumkan tindakan yang tersedia. Berikut adalah daftar semua tindakan yang tersedia bersama dengan fungsinya (ini adalah fungsi aksi generik, untuk helm-bibtex nama fungsi dimulai dengan helm-bibtex- bukannya bibtex-completion- , dan untuk ivy-bibtex mereka mulai dengan ivy-bibtex- ):
bibtex-completion-open-anybibtex-completion-open-pdfbibtex-completion-open-url-or-doibibtex-completion-insert-citationbibtex-completion-insert-referencebibtex-completion-insert-keybibtex-completion-insert-bibtexbibtex-completion-add-PDF-attachmentbibtex-completion-edit-notesbibtex-completion-show-entrybibtex-completion-add-pdf-to-library Helm-Bibtex : Daftar tindakan dapat dimodifikasi melalui perintah helm-add-action-to-source dan helm-delete-action-from-source . Misalnya, berikut ini menambahkan aksi baru helm-bibtex-open-annotated-pdf (lihat di atas) tepat setelah item pertama dalam daftar di atas:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) Jika argumen numerik terakhir dalam helm-add-action-to-source dihilangkan, tindakan baru ditambahkan di akhir daftar. Karena tindakan default hanyalah entri pertama dalam daftar tindakan, tindakan default dapat diubah dengan menghapus tindakan dan memasukkannya kembali di bagian atas daftar. Di bawah ini adalah contoh yang menunjukkan cara membuat "masukkan tombol bibtex" sebagai tindakan default:
(helm-delete-action-from-source " Insert BibTeX key " helm-source-bibtex)
(helm-add-action-to-source " Insert BibTeX key " 'helm-bibtex-insert-key helm-source-bibtex 0 ) IVY-BIBTEX : Tindakan default dan tindakan tambahan yang tersedia ditetapkan secara terpisah. Tindakan default dikendalikan oleh variabel ivy-bibtex-default-action dan ivy-bibtex-default-multi-action , dengan yang terakhir dimaksudkan untuk daftar entri yang ditandai (lihat Tindakan Terapkan ke beberapa entri). Misalnya, kode berikut mengubah tindakan default menjadi "masukkan tombol bibtex":
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )Dengan cara yang sama, kode berikut menetapkan tindakan default untuk daftar entri yang ditandai untuk "masukkan tombol bibtex" yang akan memasukkan daftar kunci yang dipisahkan koma yang bagus:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) Tindakan tambahan ditetapkan dengan meneruskan daftar tindakan yang diinginkan ke perintah ivy-set-actions . Misalnya, kode berikut hanya menyimpan dua tindakan yang tersedia selain yang default:
(ivy-set-actions
'ivy-bibtex
'(( " p " ivy-bibtex-open-any " Open PDF, URL, or DOI " ivy-bibtex-open-any)
( " e " ivy-bibtex-edit-notes " Edit notes " ivy-bibtex-edit-notes))) Huruf p dan e adalah binding kunci untuk dua tindakan di menu Tindakan. Ikatan kunci o dicadangkan untuk tindakan default. Penampilan kedua dari tindakan dalam kode ini mengingatkan ivy bahwa tindakan dapat menangani daftar entri yang ditandai. Ini dapat dengan aman dihilangkan jika hal yang benar untuk dilakukan adalah menerapkan tindakan pada setiap entri secara bergantian.
Jika Anda hanya ingin menambahkan tindakan baru di akhir daftar tindakan, Anda dapat menggunakan perintah ivy-add-actions . Misalnya, berikut ini menambahkan tindakan baru ivy-bibtex-open-annotated-pdf (lihat di atas) di akhir daftar tindakan:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))Membuat tindakan baru untuk helm-bibtex atau ivy-bibtex dapat dilakukan dalam tiga langkah. Sebagai contoh, lihat tindakan untuk membuka PDF beranotasi di atas.
Langkah pertama dan utama adalah membuat fungsi aksi generik bibtex-completion-<action> (misalnya bibtex-completion-open-annotated-pdf ). Fungsi ini harus mengambil sebagai argumen tunggal daftar kunci Bibtex dan melakukan tindakan pada entri Bibtex yang sesuai.
Langkah kedua adalah menyesuaikan fungsi aksi generik untuk helm-bibtex atau ivy-bibtex, sehingga akan dijalankan dalam buffer yang benar dan menerima kunci entri yang dipilih).
Helm-Bibtex : Ini hanya dilakukan dengan:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )IVY-BIBTEX : Ini hanya dilakukan dengan:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) Langkah ketiga dan terakhir adalah membuat fungsi aksi yang disesuaikan helm-bibtex-<action> atau ivy-bibtex-<action> tersedia dalam helm-bibtex atau ivy-bibtex dengan menambahkannya ke menu aksi. Lihat Ubah tindakan yang tersedia.
Helm-Bibtex : Secara default helm-bibtex menggunakan seluruh bingkai untuk menampilkan bibliografi. Ini dapat diubah dengan mengatur variabel helm-bibtex-full-frame menjadi nil , di mana standar Helm digunakan (biasanya split vertikal, dengan pencarian helm ditampilkan di jendela bawah).
Ivy-Bibtex : Ivy-Bibtex selalu menampilkan daftar pustaka di minibuffer. Variabel ivy-height mengontrol jumlah baris untuk jendela MiniBuffer di semua perintah Ivy.
Bibtex-Completion mengisi catatan baru dengan beberapa informasi dasar tentang publikasi. Dalam hal hanya satu file note untuk semua publikasi, entri baru terlihat seperti contoh berikut:
Gigerenzer, G. (1998): Kita membutuhkan pemikiran statistik, bukan ritual statistik : Properti: : Custom_id: gigerenzer1998 :AKHIR:
Judul bagian baru terdiri dari nama penulis, tahun, dan judul publikasi. Properti Custom_ID menentukan kunci Bibtex dari entri (bernama Custom_ID untuk kompatibilitas dengan org-ref).
Dalam kasus satu file per publikasi, file catatan baru berisi judul dalam format berikut:
#+Judul: Catatan tentang: Gigerenzer, G. (1998): Kita membutuhkan pemikiran statistik, bukan ritual statistik
Jika format lain diinginkan, templat untuk catatan baru dapat diubah menggunakan variabel kustomisasi bibtex-completion-notes-template-one-file dan bibtex-completion-notes-template-multiple-files .
Secara default Bibtex-Completion mengasumsikan bahwa file catatan berada dalam format mode org. Namun, format lain dapat digunakan juga. Dalam hal hanya satu file catatan, itu cukup untuk mengatur bibtex-completion-notes-path untuk menunjuk ke file yang diinginkan. Dalam hal beberapa file note, jenis file dapat ditentukan menggunakan variabel kustomisasi bibtex-completion-notes-extension . Misalnya, jika Markdown adalah jenis file yang diinginkan:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )Jika jenis file diatur ke sesuatu yang lain dari org-mode, templat untuk file catatan baru perlu disesuaikan juga. Lihat bagian di atas untuk detailnya.
Bibtex-Completion secara otomatis memuat ulang daftar pustaka saat file .bib diubah pada disk. Namun, pelengkap Bibtex tidak menonton PDF dan catatan. Dengan demikian, ketika PDF atau note baru ditambahkan, bibliografi harus secara manual dimuat ulang untuk menampilkan PDF dan mencatat simbol dengan benar (melalui argumen awalan, misalnya Cu Mx helm-bibtex ). Sayangnya, menerapkan pemuatan ulang otomatis untuk PDF dan catatan tidak sepenuhnya mudah karena penyelesaian Bibtex cukup fleksibel dalam bagaimana PDF dan catatan dapat ditangani. Tetapi untuk pengaturan sederhana, ada solusi mudah: tonton saja bibtex-completion-library-path dan bibtex-completion-notes-path direktori dan muat ulang daftar pustaka saat berubah. Contoh untuk direktori PDF:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) Gunakan Mx helm-bibtex atau Mx ivy-bibtex untuk memulai pencarian baru. Bidang default untuk pencarian adalah: Penulis, Judul, Tahun, Kunci Bibtex, dan Jenis Masuk. Ekspresi reguler dapat digunakan. Contoh Pencarian:
Segala sesuatu yang diterbitkan oleh Janet Fodor:
Janet Fodor
Semua tesis PhD:
Phdthesis
Tesis PhD Lyn Frazier:
Frazier Phdthesis
Publikasi tentang pelacakan mata. Ekspresi reguler digunakan untuk mencocokkan berbagai ejaan ("mata", "pelacakan mata", "pelacakan mata"):
Eye.?Tracking
Presentasi Konferensi di 2013:
Inprokeding 2013
Publikasi dari 2010 dan 2011:
(2010 | 2011 )
Artikel yang ditulis bersama oleh David Caplan dan Gloria Waters:
Artikel Waters Caplan
Cari artikel oleh David Caplan yang tidak ditulis bersama oleh Gloria Waters:
Artikel Caplan! Waters
Gunakan helm-bibtex-with-local-bibliography atau ivy-bibtex-with-local-bibliography untuk memulai pencarian dalam "bibliografi lokal" buffer saat ini, alih-alih "bibliografi global" yang ditentukan oleh bibtex-completion-bibliography . Jika file saat ini adalah file Bibtex, daftar pustaka itu akan digunakan. Jika file saat ini adalah file lateks, reftex akan digunakan untuk menentukan daftar pustaka lokal dari perintah bibliografi lateks standar bibliography dan addbibresource . Jika file tersebut adalah file org, bibliografi org lokal dan/atau global digunakan (sebagaimana ditentukan menggunakan #+BIBLIOGRAPHY: kata kunci dan variabel org-cite-global-bibliography ). Jika tidak ada bibliografi lokal yang dapat ditemukan, daftar pustaka global ( bibtex-completion-bibliography ) akan digunakan.
Gunakan helm-bibtex-with-notes atau ivy-bibtex-with-notes hanya mencari di antara entri yang memiliki catatan. Sangat berguna dalam kombinasi dengan ~ org-roam-bibtex.el ~.
Kasus penggunaan umum adalah di mana istilah pencarian ditulis dalam dokumen (katakanlah dalam naskah lateks Anda) dan Anda ingin mencarinya di daftar pustaka Anda. Dalam situasi ini, mulailah helm-bibtex atau ivy-bibtex dan masukkan Mn . Ini menyisipkan kata di bawah kursor sebagai istilah pencarian. (Ini adalah fitur Helm / Ivy dan dapat digunakan dalam semua perintah Helm / Ivy, bukan hanya Helm-Bibtex / Ivy-Bibtex.) Perhatikan bahwa juga dimungkinkan untuk menggunakan tombol Bibtex untuk pencarian. Jadi, jika kursor Anda berada di kunci Bibtex (misalnya, dalam perintah lateks CITE) Anda dapat memulai Helm-Bibtex atau Ivy-Bibtex, tekan Mn dan lihat entri yang terkait dengan kunci Bibtex. Kasus Khusus: Anda ingin membuka PDF yang terkait dengan kunci Bibtex di bawah kursor: Mx helm-bibtex Mn RET atau Mx ivy-bibtex Mn RET . Ini tentu saja lebih pendek jika Anda mengikat helm-bibtex atau ivy-bibtex ke kunci yang nyaman (lihat binding kunci).
Tindakan yang tersedia adalah:
Helm-Bibtex : Pilih entri dan tekan <return> untuk menjalankan tindakan default. Atau, tekan TAB (tabulator) untuk melihat daftar semua tindakan yang tersedia, jalankan salah satunya dan keluar dari helm-bibtex.
IVY-BIBTEX : Pilih entri dan tekan <return> untuk menjalankan tindakan default. Atau, tekan Mo untuk melihat daftar semua tindakan yang tersedia, jalankan salah satunya dan keluar dari Ivy-Bibtex.
Helm-Bibtex : Mulai helm-bibtex, masukkan ekspresi pencarian, pindahkan kursor ke entri yang cocok dan masukkan C-<space> (Control + Space Bar) untuk menandai entri ini, secara opsional mengubah ekspresi pencarian Anda, tandai entri lebih lanjut, akhirnya tekan <return> atau <tab> untuk mengeksekusi tindakan untuk semua entri yang dipilih sekaligus dan mengeluarkan helm-bibteks.
IVY-BIBTEX : Mulai Ivy-Bibtex, masukkan ekspresi pencarian, pindahkan kursor ke entri yang cocok dan masukkan C-<space> (Control + Space Bar) untuk menandai entri ini, secara opsional mengubah ekspresi pencarian Anda, tandai entri lebih lanjut, akhirnya tekan <return> untuk menjalankan tindakan default pada semua entri yang dipilih atau Mo untuk memilih tindakan lain. Tekan S-<space> (Shift + Space Bar) untuk tidak menandai entri yang ditandai.
Helm-Bibtex : Mulai email ke kolega Anda ( Cx m ) dan mengeksekusi helm-bibtex . Cari publikasi baru Anda dan tandai dengan C-<space> , lalu tekan <f7> untuk menjalankan tindakan "Lampirkan PDF ke email". Kemudian Mx helm-resume (publikasi masih ditandai) dan tekan <f6> untuk menjalankan tindakan "masukkan entri bibtex". Secara opsional masukkan lebih banyak referensi yang dapat dibaca manusia menggunakan Mx helm-resume dan <f4> untuk menjalankan tindakan "masukkan referensi". Kirim Email ( Cc Cc ). Selesai. Ini membutuhkan waktu kurang dari 10 detik.
IVY-BIBTEX : Mulai email ke kolega Anda ( Cx m ) dan menjalankan ivy-bibtex . Cari publikasi baru Anda dan tandai dengan C-<space> , lalu tekan CMo a untuk menjalankan tindakan "Lampirkan PDF ke email" sambil menjaga Ivy tetap terbuka. Kemudian tekan Mo b untuk menjalankan tindakan "Sisipkan entri Bibtex" atau masukkan lebih banyak referensi yang dapat dibaca manusia menggunakan Mo r untuk mengeksekusi tindakan "masukkan referensi". Kirim Email ( Cc Cc ). Selesai. Ini membutuhkan waktu kurang dari 10 detik.
Tentu saja, ini mengasumsikan bahwa Anda mengirim email dari Emacs, misalnya melalui MU4E.
Helm-Bibtex dan Ivy-Bibtex memiliki kemampuan pencarian yang kuat tetapi beberapa pencarian umum tidak dapat dilakukan hanya karena informasi yang relevan biasanya tidak diwakili dalam file Bibtex. Misalnya, pelengkap Bibtex tidak tahu apakah presentasi konferensi adalah pembicaraan atau poster karena keduanya direpresentasikan sebagai inproceedings . Jadi, jika Anda ingin menyusun daftar pembicaraan konferensi Anda (misalnya, untuk CV Anda), itu tidak mungkin - bukan tanpa pekerjaan tambahan. Salah satu solusi adalah "menandai" publikasi. Tag seperti kata kunci kecuali bahwa mereka tidak mewakili konten publikasi tetapi data meta. Contoh:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} Karena tags bukanlah bidang Bibtex standar, pelengkap Bibtex secara default tidak mempertimbangkannya saat mencari. Untuk dapat mencari tag, oleh karena itu kami harus memberi tahu Bibtex-Completion bahwa bidang tags juga relevan:
(Setq Bibtex-Completion-Additional-Search-Fields '(Tag))
Ada banyak cara lain di mana tag dapat digunakan. Misalnya, mereka dapat digunakan untuk menandai artikel yang Anda rencanakan untuk membaca atau artikel penting atau manuskrip yang sedang berlangsung, dll. Jadilah kreatif.
Tindakan untuk memasukkan perintah kutipan ke dalam dokumen lateks meminta perintah kutipan dan, jika berlaku, untuk argumen sebelum dan sesudah catatan. Prompt untuk perintah Citation memiliki riwayat minibuffer sendiri, yang berarti bahwa input sebelumnya dapat diakses dengan menekan tombol <up> untuk helm-bibtex atau Mp untuk ivy-bibtex. Dengan menekan <down> juga dimungkinkan untuk mengakses daftar semua perintah kutipan yang didefinisikan dalam Biblatex (kecuali untuk perintah multicite dan Volcite et al. Yang memiliki struktur argumen yang berbeda). Prompt juga mendukung pelengkapan otomatis melalui tombol tab . Jika tidak ada perintah yang dimasukkan, perintah default digunakan. Perintah default didefinisikan dalam variabel kustomisasi variabel bibtex-completion-cite-default-command . Secara default, helm-bibtex dan ivy-bibtex prompt untuk pra dan postnotes untuk kutipan. Ini dapat dimatikan dengan mengatur variabel bibtex-completion-cite-prompt-for-optional-arguments ke nil .
Bibtex-completion menyimpan bibliografi untuk mencegah membaca ulang yang mahal ketika kueri baru dimulai. Namun, pelengkap BIBTEX tidak memeriksa apakah PDF atau catatan baru ditambahkan sejak pembacaan terakhir dan karenanya simbol yang menunjukkan ada atau tidak adanya item ini mungkin salah. Bacalah dapat dipaksa menggunakan argumen awalan.
Helm-Bibtex : baik lakukan Cu Mx helm-bibtex atau Cu diikuti oleh ikatan kunci apa pun yang Anda gunakan untuk memohon helm-bibtex.
IVY-BIBTEX : Do Cu Mx ivy-bibtex atau Cu diikuti oleh ikatan kunci apa pun yang Anda gunakan untuk memohon ivy-bibtex.
Helm-Bibtex : Mulai helm-bibtex dan masukkan istilah pencarian. Kemudian pilih "CrossRef" di bagian berjudul "Fallback Options". (Anda dapat menggunakan tombol panah kiri dan kanan untuk beralih antar bagian.)
Ivy-Bibtex : Mulai Ivy-Bibtex dan masukkan istilah pencarian. Kemudian tekan Mo f untuk melihat daftar opsi fallback dan pilih "CrossRef".
Ini akan menggunakan Biblio.el untuk mencari database CrossRef. Dalam daftar hasil, tempatkan kursor pada masuknya minat dan tekan c untuk menyalin Bibtex untuk entri itu atau i untuk memasukkannya pada titik. Tekan q untuk menutup buffer dengan hasil pencarian. Lihat dokumentasi Biblio.el untuk detailnya.
Terkadang istilah pencarian tidak akan menghasilkan hasil yang diinginkan pada sumber fallback pertama yang dipilih dan Anda mungkin ingin memilih opsi fallback lain dengan istilah pencarian yang sama. Untuk ini, Anda dapat menggunakan helm-resume (atau ivy-resume ) untuk kembali ke menu Helm (Ivy) awal dengan istilah pencarian terakhir yang telah dimasuki sebelumnya memungkinkan Anda untuk secara efisien memilih opsi lain.
Di bawah ini saya memberikan kode yang berguna bagi saya atau pengguna lain. Perhatikan bahwa kode ini dapat membuat asumsi yang tidak berlaku dalam pengaturan Anda. Baca kode dengan cermat sebelum menjalankannya dan buat perubahan sesuai kebutuhan.
Kode di bawah ini membaca semua file note di bibtex-completion-notes-path Anda dan membuat file catatan baru yang berisi bagian untuk setiap publikasi. Kode ini mengasumsikan bahwa pelengkap BIBTEX masih dikonfigurasi untuk beberapa file note dan bahwa Anda ingin menyimpan catatan di file notes.org di bibtex-completion-notes-path Anda. Kode ini juga menambahkan level ke semua tajuk org yang ditemukan di masing-masing file catatan (karena judul tingkat atas digunakan untuk publikasi dalam file catatan baru). Jika file note tidak memiliki entri yang sesuai dalam daftar pustaka, itu diabaikan.
( let ((note-files ( directory-files bibtex-completion-notes-path t " ^[^.]+ \ .org$ " ))
(bibtex-completion-notes-path (f-join bibtex-completion-notes-path " notes.org " )))
( cl-loop
for note-file in note-files
for key = (f-no-ext (f-filename note-file))
do ( condition-case nil
( progn
(bibtex-completion-edit-notes key)
( insert ( with-temp-buffer
( insert-file-contents note-file)
( replace-regexp " ^* " " ** " )
( buffer-string ))))
( error nil ))))Katakanlah Anda ingin membuat file Bibtex yang hanya berisi entri yang Anda kutip dalam sebuah artikel, maka Anda dapat menggunakan kode berikut untuk mengisi file Bibtex baru dengan entri:
( progn
( switch-to-buffer ( generate-new-buffer " my_new_bibliography.bib " ))
(--map ( insert (bibtex-completion-make-bibtex it)) (-distinct '( " Key1 " " Key2 " ))))If LaTeX is used to write the article, grep and sed can be used to extract the cited keys:
grep ' entry{ ' manuscript.bbl | sed ' s/^.*entry{([^}]*)}.*$/1/ ' This can be useful if you'd like to transfer all your PDFs to another directory or similar.
(flatten-tree
( mapcar
( lambda ( entry ) (bibtex-completion-find-pdf entry))
(bibtex-completion-candidates)))Helm-bibtex and ivy-bibtex display entries in the order in which they appear in the BibTeX file reversed. This way, entries that were added at the bottom of the BibTeX file show up at the top when searching. There is currently no support for sorting but if you want to reverse the order of entries you can use the code below:
( advice-add 'bibtex-completion-candidates
:filter-return 'reverse )ivy-bibtex as an org-cite-follow-processor As mentioned here, the default org-open-at-point on a org citation will take you to the corresponding bibliography entry. The following code will change this behavior to instead open ivy-bibtex when following an org citation by entering RET or clicking on it:
(org-cite-register-processor 'my-ivy-bibtex-org-cite-follow
:follow ( lambda ( _ _ ) (ivy-bibtex)))
( setq org-cite-follow-processor 'my-ivy-bibtex-org-cite-follow )This usually happens when a BibTeX file isn't well-formed. Common problems are opening quotes or parentheses that don't have matching counterparts. Unfortunately, Helm swallows the error message that is generated in these cases and just shows an empty buffer.
One way to diagnose the problem is to call the function for reading BibTeX directly and to see what error message it produces:
(bibtex-completion-candidates)If you see
forward-sexp: Scan error: "Unbalanced parentheses", 181009, 512282
this means that there is an unmatched opening parenthesis at the position 181009. To find this parenthesis, open the BibTeX file and do M-: (goto-char 181009) RET . You can also use the command Mx bibtex-validate RET to check for errors. Fix any problems and try again.