[英]How do I make Org-mode open PDF files in Evince?
在Org-mode中,當我嘗試打開PDF文件的鏈接時,沒有任何反應。 此外,當我執行Cc Ce d導出為LaTeX並處理為PDF並打開PDF時生成但未打開。 如何在Evince中創建組織模式打開PDF文件?
我在GNU Emacs 23.3.1中使用Org-mode 7.6,在Ubuntu 11.10中使用Evince 3.2.1。
M-x customize-variable [RET] org-file-apps [RET]
如果org使用您的系統默認值,則必須編輯./mailcap文件。
嘗試添加此行:
application/pdf; /usr/bin/evince %s
可能適用於此的另一種可能的構造是使用eval-after-load
而不是add-hook
。 它只會在啟動時設置一次值,您不必擔心添加或不添加條目(除非您經常重新加載組織)。
將它與setcdr
結合使用,您可以避免從列表中刪除然后重新添加,添加if
並確保添加或更改值。 if僅在默認情況下不在列表中的值時才需要,只是為了確保您不會在某個地方遇到沖突。
(eval-after-load "org"
'(progn
;; .txt files aren't in the list initially, but in case that changes
;; in a future version of org, use if to avoid errors
(if (assoc "\\.txt\\'" org-file-apps)
(setcdr (assoc "\\.txt\\'" org-file-apps) "notepad.exe %s")
(add-to-list 'org-file-apps '("\\.txt\\'" . "notepad.exe %s") t))
;; Change .pdf association directly within the alist
(setcdr (assoc "\\.pdf\\'" org-file-apps) "evince %s")))
編輯以澄清
eval-after-load
僅在調用(require 'org)
時計算塊。 如果已經加載了org,它將立即進行評估(我錯誤地認為每次加載庫時它都會運行,但它似乎只是第一次)。 這里解釋了 add-hook
和eval-after-load
之間的區別。
由於org-file-apps
是一個defcustom
,如果你在加載org之前設置它們就不會改變它們,如果你從頭開始構建列表(包括你的第二個(丑陋)解決方案中的默認值)你可以簡單地設置setq
你的init.el,一切都會奏效。 這也意味着它不會覆蓋您的更改。
添加(if (assoc
與PDF條目相關聯不會對任何內容產生任何影響,它將簡單地確保如果從默認的org-file-apps
中刪除它仍將被添加的PDF。唯一的解決方案是,如果PDF是刪除是你的第二個。其他人都假設條目以一種或另一種形式存在。
您可以使用類似於https://stackoverflow.com/a/3985552/789593的構造,但將其修改為PDF文件和Evince。 你想要做的是改變列表org-file-apps
。 這可以通過在.emacs中添加以下內容來完成:
;; PDFs visited in Org-mode are opened in Evince (and not in the default choice) https://stackoverflow.com/a/8836108/789593
(add-hook 'org-mode-hook
'(lambda ()
(delete '("\\.pdf\\'" . default) org-file-apps)
(add-to-list 'org-file-apps '("\\.pdf\\'" . "evince %s"))))
這將刪除PDF文件的默認設置,而是在Evince中打開它們(並保留org-file-apps
包含的所有其他內容)。 我是elisp的新手,所以我不知道這個解決方案是否健壯,但它對我有用,似乎比下面的更優雅。
另一個看起來更丑陋的選擇是改為查找默認值並將它們全部設置為但更改PDF文件的值:
;; PDFs visited in Org-mode are opened in Evince (and other file extensions are handled according to the defaults)
(add-hook 'org-mode-hook
'(lambda ()
(setq org-file-apps
'((auto-mode . emacs)
("\\.mm\\'" . default)
("\\.x?html?\\'" . default)
("\\.pdf\\'" . "evince %s")))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.