文献等を 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)))