複数台のMacで文献データベースを共有する

やること

クラウドで共有されるフォルダにbibファイルを置き,texファイルが読めるところにシンボリックリンクを貼ってやる.

シンボリックリンクの貼り方 (MacOSX) は,

ln -s ~/Dropbox/hogehoge/hogehoge.bib ~/Documents/paper

ln -sコマンドに続けて,「参照先のファイルのパス」「リンクを置きたいパス」を書く.
ちなみに「texファイルが読めるところ」とは,基本的に当該のtexファイルと同じディレクトリか,texliveのbibディレクトリか,そのへん.網羅的にはわからない.

気をつけること

検索した限り記事が出てこなかったが,リンクを貼る時には,リンク先ファイルのフルパス(ホームディレクトリ以下のすべてのパス)を書いて指示してやらないとうまくいかないことがある.
うまくいっているかどうかは,シンボリックリンクの「情報を見る」で,元のファイルのパスが正しく書き込まれているかどうかで判断する.
あと,MacOSエイリアスだとうまくいかないことがある.

もっとまとめて片付ける方法

Dropboxなどの適当なフォルダをBibTeXから見えるように設定することで,そのフォルダに追加したbibファイルやbstファイルを読み込んで処理してくれるようにする.
bibファイルが複数だったりすると便利だし,編集する文書ごとにシンボリックリンクを貼り直す必要がなくなる.

http://hnsn1202.hateblo.jp/entry/2012/08/15/193627を参照.
やや古い記事で,MacTeXのディストリビューションが2012になっているが,基本的にやることは一緒.
MacTeX2016での作業の流れを以下に示す.ディレクトリ構成が異なる場合は適宜読み替えて作業のこと.
ただし誤ったファイルを変更してシステムがクラッシュしても当方は責任を負いません(復旧の手伝いくらいはできるかもしれないので,連絡を妨げるものではありませんが).

  1. /usr/local/texlive/2016/texmf-dist/web2c/texmf.cnfファイルを見つける
    1. OS10.9以降(くらい)ではFinderから~/より上の階層に行きにくくなったので,ターミナルで上のパスを打ち込んで移動する
    2. その上でもしGUI操作がしたければopenコマンドで開く
  2. web2cディレクトリはデフォルトで書き込み禁止なので,「情報を見る」で書き込み禁止を解除する
  3. texmf.cnfファイルをエディタで開く
  4. bibtexに関連する行(大文字小文字無視で "bib" とかで検索すれば見つかる)について,以下のように書き込む
% pBibTeX bibliographies and style files.
%BIBINPUTS.pbibtex       = .;$TEXMF/{pbibtex,bibtex}/bib//
BIBINPUTS.pbibtex       = .;$TEXMF/{pbibtex,bibtex}/bib// ;~/Dropbox/tex_shared//
BSTINPUTS.pbibtex       = .;$TEXMF/{pbibtex,bibtex}/bst// ;~/Dropbox/tex_shared//

...

% BibTeX bibliographies and style files.  bibtex8 also uses these.
%BIBINPUTS = .;$TEXMF/bibtex/bib//
BIBINPUTS = .;$TEXMF/bibtex/bib// ;~/Dropbox/tex_shared//
BSTINPUTS = .;$TEXMF/bibtex/{bst,csf}// ;~/Dropbox/tex_shared//

pBibTeXの記述はだいたい230行目付近,BibTeXの記述はだいたい315行目付近.
念のためもとの行をコメントアウトし,コピーした上でパスを書き足す.
パスを書き足すには,もともとある// のあとにスペースを空けてコロンまたはセミコロンで区切り,追加したいパスを書く.
スペース空ける必要があるのわからなくて混乱してしばらく放置してた

以上を記述して保存し,web2cディレクトリの書き込み権限を元に戻し(念のため),終了.

2018/10/17追記

何か間違ってたっぽくて,別にスペースを空ける必要はない.
上の例はパスが間違っていて(修正済み),~/Dropboxのあとが_になっていた.

ちなみに,自分で追加した.styファイルなんかもそのフォルダにおいて見られるようにするには,

TEXINPUTS.platex        = .;$TEXMF/tex/{platex,latex,generic,}//;~/Dropbox/tex_shared//

こんな感じで追加してやるといい.