さくっと論文情報.bibと論文.pdfをダウンロードしてBibDeskに追加したい(天文系限定)


はじめに

この記事は「TeXで天文学系の論文を読む/書く人」を対象にした記事です。
あんまり一般的ではないことは承知ですが、一部の人の助けになることを信じて執筆する次第です。

論文管理をする際に重要なのは、「いかにして楽に正確に論文情報(.bib)と論文ファイル(.pdf)を追加するか」という点ですね。天文系の論文はADS(Astrophysics Data Systems)と呼ばれるサイトに集約されており、ここで論文を検索したりします。今回紹介するツールを使うことで、えらい簡単にADSから論文情報+ファイルをBibDeskに追加できます。BibDeskMendelayなど色々あるとは思いますが、上述の理由とTeXShopと相性が良いため僕はBibdeskを使っています。

元々こちらこちらのサイトを参考に下書き記事を書いていたのですが、かなり更新された部分もあるので情報をまとめたいと思います。

ads_bibdesk(現在は使えません)

jonathan sick氏が公開しているスクリプト。Githubはこちら
ここ数年は更新されていないものの十分に使えるものだったのですが、ADSの仕様が大幅に更新されたことにより(アクセス時にAPIを要求するようになりました。)、完全に使えなくなりました。僕はこれにめちゃめちゃ依存していたので途方に暮れていたのですが、代替物を見つけたので命拾いしました。

ads2bibdesk

お亡くなりになったads_bibdeskの思想を引き継ぎ、新バージョンADSに対応できるのが、Rui Xue氏が開発したads2bibdeskです。使い方は書いてあるのですが、こちらでも簡単に説明しておきたいと思います。

インストール方法

条件:Python3.6以上でないとダメです。インストールしてください。

  1. ADSアカウントを作成
    ADS右上のSignUpでメールアドレスとパスワード入力して、届いたメールで承認。

  2. APIトークンを発行
    ログイン後、Account >> Custamize Settings >> API Token >> Generate a new key
    英数字の文字列がAPI token。

  3. お好きな場所でgit clone https://github.com/r-xue/ads2bibdesk.git

  4. python setup.py install --user --service
    --userと--prefixが共存できやんとか言われたら--prefix=を追加。
    pyobjc, request, adsパッケージに依存してるので必要に応じてインストール。
    エラーが出なければ~/.adsが~/Library/Servicesに'Add to BibDesk.workflow'が追加され、~/.adsディレクトリが作成される。

  5. ~/.ads/ads2bibdesk.cfgを編集、ads_token = dev_keydev_keyを1-2で得たAPI tokenに入れ替え。

3-4については、Readme等に書いてあるようにpip(condaは未対応?)でインストールしてもOK(なはず)です。

使い方

  1. ADSで論文を検索

  2. Bibcodeを右クリック>>サービス>>Add to Bibdesk

  3. 論文情報を追加してくれて、論文ファイルもBibDeskで指定の場所にダウンロードしてくれる。

論文情報の補完機能について

旧バージョンのads_bibdeskには、bibファイルの情報を更新する機能がついていました。新バージョンには備わっていないようですが、今後実装する予定ではあるそうです。

追記

Mojave以降はセキュリティの仕様が変更したために、うまくいかないです。
エラーメッセージ:Not authorized to send Apple events to BibDesk.
エラー番号:-1743
ネット上の対処法を試して見るもののうまくいかないです。
何か手がかりがありましたら教えて頂けると幸いです。
Safari以外のブラウザで、権限が追加できたものに関しては、使えるようです。

処方箋(2019/12/16)

どうやらSafariが他のアプリケーションを動かすことが許されていないようなので、terminalで動かすことを考える。

1. まず下のようなファイルを作る。

ads2bibdesk.command
~/.local/bin/ads2bibdesk "`pbpaste`"
  • pbpasteはクリップボードの内容を吐き出すコマンド。
  • .commandはクリック時に実行ファイルとして開くための拡張子。
  • 実行時アプリケーションはterminalに設定。

2. ads2bibdesk.commandをDockに追加。

使い方としては、Bibcodeをコピーした後にこれを起動することでads2bibdeskをターミナルから動かす。
とりあえず処方箋として。

参考文献