12

许多科学论文,尤其是生命科学领域的论文,都以 pdf 格式发表。

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

任何人都可以推荐使用 pdf 的方法,尤其是链接到文件、施加文本和在 pdf 中添加注释(在页边空白处书写的电子等价物)?

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

4

4 回答 4

17

pdf-tools允许在 emacs 中注释 pdf 文件。年轻但有前途的项目!

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

于 2015-03-26T08:55:39.660 回答
8

IMO,没有一个最佳的工作流程来管理 emacs 中的出版物。我个人只是在 org 模式下存储指向 PDF 的链接,然后在外部查看器(evince 或 Acrobat,具体取决于平台)中打开它们。有一些解决方案可以通过在 PDF 的空白处逐字书写来注释 PDF(原则上,Xournal、Jarnal 和一些专有的 Windows 软件可以做到),但我从来没有发现它们中的任何一个非常有用。当我在论文上做笔记时,我要么将它们作为折叠项存储在 org-mode 结构中,要么作为指向外部文件的链接。

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

对我来说,理想的纸张管理环境应该是与 Mendeley 接口的 org 模式。不幸的是,Mendeley 的闭源特性使得这不太可能。

于 2011-01-27T00:05:43.333 回答
4

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

否则,Xournal 或此类工具应该是注释 PDF 的方法,除非你找到一种方法让它在 Emacs 下工作。

于 2011-01-24T23:27:33.107 回答
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)
于 2015-04-06T22:11:42.317 回答