文献等を Papers3.appで集めている Macユーザで,しかも GNU Emacs の org-mode で情報を管理している方に向けた記事です.
3ステップで終わります.
(追記したorg-mac-linkの拡張を含めると4ステップ)
A. 迷わず以下のコードを .emacs に書き込みます.
(with-eval-after-load "org"
  (when (eq system-type 'darwin)
    ;; Open `papers3://' link by C-c C-o.
    (org-link-set-parameters
     "papers3"
     :follow (lambda (path)
               (let ((cmd (concat "open papers3:" path)))
                 (shell-command-to-string cmd)
                 (message "%s" cmd))))))
関数 org-link-set-parameters は Org Mode 9からの関数で,以前は org-add-link-type でした.org-add-link-type は廃止される関数なので,この機会に移行しましょう.
B. Papers3.app から文献へのリンクを取る
文献リストのリストで右クリックして,Papers Linkを選びます.すると,ペーストボードにpapers3://publication/uuid/64924518-5B7C-4797-9B60-8B928DAC4EB9 のようなURIが取得されます."papers3"で始まっているのがポイントです.
その昔,journlerというソフトがあって,それも "journler://" というプロトコルでデータアクセスが可能でした.Mac は便利ですね.
C. 文献リンクをorgバッファにペースト
取得したURIを,orgバッファにペーストします.
適宜,org-mode の記法でちゃんとしたリンクにすると良いです.
[[papers3://publication/uuid/64924518-5B7C-4797-9B60-8B928DAC4EB9][JIS原案作成のための手引]]
という感じです.そして,このリンク上でC-c C-oすると,Papers3.appが勝手に起動して,対象の文献が表示されます.
いちいち検索しなくて済みますし,org-modeで効率的に情報を管理できるのでオススメです.
できるならば,Papers Linkの取得を org-mac-linkのディスパッチャから呼べると理想的なのですが,これはまた別の機会に.
(追記: org-mac-linkの拡張)
org-mac-link を拡張して,Papers3.app で選択しているアイテムへのリンクをディスパッチャから自動選択して取れるようにしました.org-mac-link.elはorg-modeのcontribディレクトリに収められているので注意してください.
GIST: org-mac-papers-insert-front-most-paper-link.el
使い方:
- Papers3.appを起動して,リンクを取りたい文献を選択しておく
- orgバッファ内でM-x org-mac-grab-link (C-c g)してディスパッチャを表示
- 
Pを押下
- カーソル位置にリンクが挿入される.(例:[[papers3://publication/uuid/64924518-5B7C-4797-9B60-8B928DAC4EB9][{1} 規格業務課, “JIS原案作成のための手引,” pp. 1–92, Jul. 2014.]])
挿入されるリンクの形式に不満がある場合は,拡張したコードのうちorg-as-mac-papers-get-paper-linkの一部を書き換えてください.AppleScriptです.
      "		keystroke \"c\" using {command down, shift down\}\n"
書き換え候補は,Papers3.appのCopy Asの中身をみればわかります.
たとえば,Papers Citation をリンク文字列として使いたい場合は,
      "		keystroke \"m\" using {option down, command down\}\n"
とします.
[[papers3://publication/uuid/64924518-5B7C-4797-9B60-8B928DAC4EB9][{課:2014uu}]]
みたいのが得られます.あとは好みですね.
ちなみにキーストロークの部分を(\"M\"などと)大文字で指定すると,自動的に shift downが効いた状態になるので要注意です.
コード的にはorg-mac-grab-linkをオーバーライドしているので美しくないですが,他のアプリでも同様の拡張を簡単にできるよう,org-mac-link-descriptorsを導入するプルリクをそのうち出します.
最後に,ディスパッチャを呼び出すorg-mac-grab-linkにはキーバインドを付けることが推奨されています.私は C-c cに割り当てていますが,デフォルトではC-c gです.
(add-hook 'org-mode-hook (lambda ()
  (define-key org-mode-map (kbd "C-c g") 'org-mac-grab-link)))



