Org-modeで、PDFファイルへのリンクを開こうとすると、何も起こりません。また、 C-c C-e d LaTeXとしてエクスポートし、PDFに処理して開くPDFは生成されますが、開かれません。Org-modeを開くにはどうすればよいですかPDFファイル?
私はUbuntu11.10のGNU Emacs23.3.1とEvince3.2.1でOrg-mode7.6を使用しています。
このために機能する可能性のある別の可能な構成は、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)
が呼び出されたときにのみブロックを評価します。組織がすでにロードされている場合は、すぐに評価されます(ライブラリがロードされるたびに実行されると誤解しましたが、これは初めてのようです)。 add-hook
とeval-after-load
の違いについて説明します ここ 。
org-file-apps
はdefcustom
であるため、組織が読み込まれる前に設定した場合、リストを最初から作成した場合、値は変更されません(2番目の(醜い)ソリューションのデフォルト値を含む) init.elでsetq
するだけで、すべてが機能します。また、変更が上書きされないことも意味します。
(if (assoc
をPDFエントリに追加しても、何も害はありません。PDFがデフォルトのorg-file-apps
から削除された場合でも、引き続き追加されることが保証されます。 PDFが削除されても失敗しない唯一の解決策は、2番目の解決策です。他のすべての解決策は、エントリが何らかの形式で存在することを前提としています。
M-x customize-variable [RET] org-file-apps [RET]
組織がシステムのデフォルトを使用している場合は、。/ mailcapファイルを編集する必要があります。
この行を追加してみてください:
application/pdf; /usr/bin/evince %s
https://stackoverflow.com/a/3985552/78959 に似た構造を使用できますが、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")))))