关于org-ref 无法插入到references.bib的问题

安装好org-ref后,我尝试了几个方法往bib文件添加一个参考文献条目,均不成功,mini-buffer显示莫名其妙的

Buffer is read-only: #<buffer bib>

明明我这个buffer是可写的,真是奇怪,实验了好几个方法:

crossref-add-bibtex-entry
doi-utils-add-bibtex-from-doi

都不行,但奇怪的是,如果用:

crossref-lookup

搜索关键词,在helm-bibtex 的buffer里按i 插入又可以插入到references.bib文件里, 大侠们有碰到过这个问题吗? 操作系统: win10 emacs版本: emacs27:(emax64pd) 版本

不用org-ref管理bib文件,用它来引用文献。用jabref管理bib文件,如果是别人文献中的参考文献条目,复制后jabref可以自动识别。如果是通过学术网站下载的ris等格式参考文献可以直接import。

org-ref可以用doi识别啥的,但是总是感觉卡卡的,网站响应比较慢。

谢谢!试了一下jabref,感觉还不错,不过就是保存bib文件时有点儿慢,不过可以分类、设置优先级,还可以连接到指定的文档,还有好多功能还没仔细看。 不过如果图方便的话,如果只是引用文献,我是直接在emacs里将网页导出的bibtex直接粘贴到references.bib里。 另外根据org-ref文档在windows 10 里的emacs修改了一下cite:key 连接到pdf文档的方法:

(defun my/org-ref-open-pdf-at-point ()
  "Open the pdf for bibtex key under point if it exists."
  (interactive)
  (let* ((results (org-ref-get-bibtex-key-and-file))
         (key (car results))
         (pdf-file (concat org-ref-pdf-directory "/" key ".pdf")))
    (if (file-exists-p pdf-file)
        (w32-shell-execute "open" pdf-file)
      (progn
       (message "results:[%s]" results)
       (message "key file:[%s]" key)
      (message "No PDF found for %s" pdf-file)))))

(setq org-ref-open-pdf-function 'my/org-ref-open-pdf-at-point)

如果在org-ref-pdf-directory 目录下存在与key一样的文件,就使用系统默认的软件打开pdf文件。

可以用jabref生成key,设置好目录之后,将pdf以key的方式命名。在emacs中通过helm-bibtex或者org-ref都可以打开相应的pdf文件。

还可以添加这个把多层级文件夹下的pdf找出来:

 (defun kimim/org-ref-get-pdf-filename (key)
    "Return the pdf filename associated with a bibtex KEY.
This searches recursively for the pattern KEY*.pdf. If one result
is found it is returned, but if multiple results are found,
e.g. there are related files to the KEY you are prompted for
which one you want."
    (if org-ref-pdf-directory
        (let ((pdfs
               (-flatten
                (--map (file-expand-wildcards
                        (f-join it (format "%s*.pdf" key)))
                       (-flatten
                        (append (list org-ref-pdf-directory)
                                (directory-files-recursively
                                 org-ref-pdf-directory "" t)))))))
          (cond
           ((= 0 (length pdfs))
            (expand-file-name (format "%s.pdf" key) org-ref-pdf-directory))
           ((= 1 (length pdfs))
            (car pdfs))
           ((> (length pdfs) 1)
            (completing-read "Choose: " pdfs))))
      ;; No org-ref-pdf-directory defined so return just a file name.
      (format "%s.pdf" key)))

(setq org-ref-get-pdf-filename-function 'kimim/org-ref-get-pdf-filename))