[讨论]你的emacs文献/知识管理方案是什么?

没人用ebib吗?我之前也用zotero,现在觉得org-ref + ebib就够了。ebib配合pdf-tools、pdf-noter用来管理bibtex和对应的pdf和笔记,org-ref配合helm用来在线和本地搜索ref,并插入。附上我的配置:

(use-package ebib
  :general
  ([f5] 'ebib)
  (ebib-multiline-mode-map
   "C-c C-c" 'ebib-quit-multiline-buffer-and-save
   "C-c C-q" 'ebib-cancel-multiline-buffer
   "C-c C-s" 'ebib-save-from-multiline-buffer)
  :custom
  (bibtex-autokey-name-case-convert-function 'capitalize)
  (bibtex-autokey-titlewords 0)
  (bibtex-autokey-year-length 4)
  (ebib-uniquify-keys t)
  (ebib-bibtex-dialect 'biblatex)
  (ebib-index-window-size 10)
  (ebib-preload-bib-files '("~/Dropbox/Bibliography/references.bib"))
  (ebib-notes-use-single-file "~/Dropbox/Bibliography/Notes.org")
  (ebib-file-search-dirs '("~/Dropbox/Bibliography/bibtex-pdfs/"))
  (ebib-reading-list-file "~/Dropbox/Bibliography/ReadingList.org")
  (ebib-keywords-file "~/Dropbox/Bibliography/ebib-keywords.txt")
  (ebib-keywords-field-keep-sorted t)
  (ebib-keywords-file-save-on-exit 'always)
  (ebib-file-associations '(("pdf")) "using Emacs to open pdf")
  (ebib-use-timestamp t "recording the time that entries are added")
  (ebib-index-columns '(("Entry Key" 20 t)
			("Author/Editor" 40 nil)
			("Year" 6 t)
			("Title" 50 t)))
  (ebib-index-default-sort '("timestamp" . descend)))

(use-package org-ref
  :general
  (z-spc-leader-def "r" 'org-ref-hydra/body)
  :pretty-hydra
  ((:color red :quit-key "q")
   ("Insert"
    (("i" org-ref-helm-insert-cite-link "citation key")
     ("r" org-ref-helm-insert-ref-link "ref link")
     ("l" org-ref-helm-insert-label-link "label link"))
    "Browse"
    (("b" helm-bibtex "bibtex")
     ("s" crossref-lookup "lookup"))
    "Add"
    (("a" crossref-add-bibtex-entry "new entry")
     ("d" doi-add-bibtex-entry "doi"))))
  :custom
  (bibtex-dialect 'biblatex)
  (org-ref-bibliography-notes "~/Dropbox/Bibliography/Notes.org")
  (org-ref-default-bibliography '("~/Dropbox/Bibliography/references.bib"))
  (org-ref-pdf-directory "~/Dropbox/Bibliography/bibtex-pdfs/")
  (org-ref-show-broken-links nil)
  (org-ref-default-ref-type "eqref")
  (org-ref-default-citation-link "citet")
  :config
  (require 'org-ref-citeproc)
  (defun org-ref-grep-pdf (&optional _candidate)
    "Search pdf files of marked CANDIDATEs."
    (interactive)
    (let ((keys (helm-marked-candidates))
	  (get-pdf-function org-ref-get-pdf-filename-function))
      (helm-do-pdfgrep-1
       (-remove (lambda (pdf)
		  (string= pdf ""))
		(mapcar (lambda (key)
			  (funcall get-pdf-function key))
			keys)))))
  (helm-add-action-to-source "Grep PDF" 'org-ref-grep-pdf helm-source-bibtex 1)

  (setq helm-bibtex-map
	(let ((map (make-sparse-keymap)))
	  (set-keymap-parent map helm-map)
	  (define-key map (kbd "C-s") (lambda () (interactive)
					(helm-run-after-exit 'org-ref-grep-pdf)))
	  map))
  (push `(keymap . ,helm-bibtex-map) helm-source-bibtex))


10 个赞