有关如何在Emacs中工作时注释PDF的建议?

时间:2011-01-24 22:57:59

标签: pdf emacs annotations org-mode docview

许多科学论文,特别是生命科学论文,都以pdf格式发表。

我想在emacs中尽可能多地工作(尤其是org-mode)。我知道DocView模式,至少让我在emacs中查看pdf。我怀疑它可以为我做更多,但我还没有超越简单地查看基于图像的pdf文件渲染。

任何人都可以推荐使用pdf的方法,最重要的是链接到文件,发布文本和向pdfs添加注释(电子版相当于边缘写作)?

修改:只是为了澄清我不打算实际编辑pdf图像。相反,我想在组织文件中添加超链接或书签注释。我以前没有看过DocView的文本模式,这可能会给我我想要的但我不知道我是否可以书签/超链接到它。

4 个答案:

答案 0 :(得分:13)

pdf-tools除其他外,允许在emacs中注释pdf文件。年轻但很有前途的项目!

https://github.com/politza/pdf-tools

答案 1 :(得分:8)

IMO,没有一个最佳的工作流程来管理emacs中的出版物。我个人只是在org模式下存储PDF链接,并在外部查看器中打开它们(evince或Acrobat,具体取决于平台)。有一些解决方案可以通过在PDF的边缘写字来标注PDF(原则上,Xournal,Jarnal和一些专有的Windows软件可以做到),但我从未发现它们中的任何一个非常有用。当我在纸上记笔记时,我将它们作为折叠项目存储在组织模式结构中,或者作为外部文件的链接。

其他人提出了类似的工作流程 - 例如,在这里看一个漂亮的截屏视频:http://tincman.wordpress.com/2011/01/04/research-paper-management-with-emacs-org-mode-and-reftex/

对我来说,理想的纸质管理环境将是与Mendeley接口的组织模式。不幸的是,门德利的封闭源性质使得这一点变得不太可能。

答案 2 :(得分:4)

DocView模式可以在编辑和查看之间切换。但是从doc-view-mode的信息页面来看,PDF不是(很容易)人类可编辑的,而且文档也没有谈论PDF注释功能。

否则,Xournal或此类工具应该是注释PDF的方法,除非您找到使其在Emacs下工作的方法。

答案 3 :(得分:0)

这不是一个真正的答案,但在pdf-tools中,可以使用选定的注释附加处理函数。只是有人必须实施它。

;; Toy Example for custom annotations.

(require 'pdf-annot)

(add-hook 'pdf-annot-activate-handler-functions 'pdf-org-annotation-handler)
(add-hook 'pdf-annot-print-annotation-functions 'pdf-org-print-annotation)

(setq pdf-annot-activate-created-annotations t)

(defvar pdf-org-annot-label-guid "www.orgmode.org/annotation"
  "Unique annotation label used for org-annot annotations.")

(defun pdf-org-add-annotation (pos)
  (interactive
   (list (pdf-util-read-image-position "Click ...")))
  (pdf-util-assert-pdf-buffer)
  (pdf-annot-add-text-annotation
   pos
   "Circle"
   `((color . "orange")
     (label . ,pdf-org-annot-label-guid))))

(defun pdf-org-annotation-handler (a)
  (when (equal (pdf-annot-get a 'label)
               pdf-org-annot-label-guid)
    (pop-to-buffer (get-buffer-create
                    (format "%s-annotations.org"
                            (pdf-annot-get-buffer a))))
    ;; Do SOMETHING.
    t))

(defun pdf-org-print-annotation (a)
  (when (equal (pdf-annot-get a 'label)
               pdf-org-annot-label-guid)
    "Org annotation, click to do SOMETHING"))

(provide 'pdf-org)