Mendeley + Dropbox + LaTeX + (Ubuntu or iPad2 or Windows)

論文の文献情報管理ソフトウェアをJabRefからMendeleyに置き換える。ついでに論文PDFファイルもいくつかのデバイスで共有したい。想定環境は以下のとおり。

  • ノートPC、自宅デスクトップPC
    • OS: Windows XP
    • 用途:論文閲覧、論文収集
  • 職場マシン
    • OS: Ubuntu 11.10
    • 用途:論文閲覧、論文収集、論文執筆
  • iPad2
    • OS:iOS 5.X
    • 用途:論文閲覧(GoodReader)

DropBoxのアカウント作成

Dropboxでアカウントを作成する。

Mendeleyのアカウント作成

Mendeleyでアカウント作成する。

Ubuntu 11.10での操作

Dropboxのインストール

Dropbox:インストールから、Ubuntu用インストールファイルをダウンロードする。

% sudo dpkg -i nautilus-dropbox_0.7.1_i386.deb

これで、~/Dropbox が作成され、このディレクトリ以下に置かれたディレクトリやファイルがDropboxに同期される。私は~/References 以下にPDFファイルを保存していたのでこいつをDropboxへ移動させる。

% mv ~/Refernces ~/Dropbox

これで自動的に同期開始。

Mendeleyのインストール

必要なライブラリーをインストール。

% sudo aptitude install libqtwebkit-dev

Mendeley: How to install Mendeley Desktop for Ubuntu/DebianからUbuntu/Debian用のインストールバイナリーをダウンロードしてくる。

% sudo dpkg -i mendeleydesktop_1.3_i386.deb

起動する。

% mendeleydesktop &
JabRefで管理していた書誌情報から移行

JabRefのデータベースをBibTeXのbibファイルとしてエクスポートする。JabRefのbibファイルとMendeleyのbibファイルには違いがあるとのこと。

JabRefで新たに作ったフィールドについては annoteタグを用いて書き換える。例えば以下のとおり。

fileno = {49}
ã‚’
annote = {File:49}

PDFのファイルと書誌情報の関連付けはC:\rob/PDFs以下にPDFファイルを格納している場合に以下のようになっているとのこと。

  • JabRef最近版 "file = {deSilEtAl2009_EM.pdf:deSilEtAl2009_EM.pdf:PDF}"
  • JabRef古い版 "pdf = {deSilEtAl2009_EM.pdf}"
  • Mendeley版 "file = {:C$\backslash$:/rob/PDFs/deSilEtAl2009_EM.pdf:pdf}"

Mendeleyは絶対パスでファイルのありかをかかなければならないらしい。

また、Mendeleyが出力するbibファイルの文字コードはUTFとのこと。

私のbibファイルは以下のようになっている。

  1. 独自フィールドとしてjaabstract(概要日本語訳)を使っている
  2. pdfの紐付けでは最近版と古い版の記述が混ざっている
  3. JabRefが出力したbibファイルの文字コードがEUC-JP
  4. PDFファイルに拡張子がついていない。

そこで、まずはUTF8版を生成する。JabRefが出力した bibファイルを JabRef.bibとする。

% iconv -f EUC-JP -t UTF-8 JabRef.bib > JabRef.bib.utf8

Ruby 1.9系で動く書き換えプログラムは以下のとおり。

# -*- encoding: utf-8 -*-

unless ARGV.size == 2
  puts "% ruby JabRefToMendeley.rb inputifle path-of-directory-for-PDFs"
  puts "Please input filename as full path."
  exit
end 

inputfile = ARGV[0]
pathOfDirectory = ARGV[1].sub(/\/$/,'')

unless File.exist?(inputfile)
  puts "#{inputfile} file doesn't exist"
  exit
end

File.open(inputfile){|file|
  file.each do |line|
    line.gsub!(/\s+jaabstract\s=\s\{/ , 'annote = {jabstract:')
    line.gsub!(/pdf\s=\s\{(.+)\}/){ 
      pdfFile = $1.sub(/\.pdf$/,'')
      pdfFile.gsub!(/\_/,'\_')
      "file = {:#{pathOfDirectory}/#{pdfFile}.pdf:pdf}"
    }
    line.gsub!(/file\s=\s\{(.+):(.+):PDF\}/){ 
      pdfFile = $1.sub(/\.pdf$/,'')
      pdfFile.gsub!(/\_/,'\_')
      "file = {:#{pathOfDirectory}/#{pdfFile}.pdf:pdf}"
    }
    puts line
  end
}

上記のプログラムを、JabRefToMendeley.rbとして保存する。そして、PDFファイルが置いてあるディレクトリの絶対パスが /home/next49/Dropbox/References であるとき以下のように使う。

%ruby JabRef.bib.utf8 /home/next49/Dropbox/References > New.bib

Mendeley Desktopを起動する。

% mendeleydesktop &

左側のウィンドウにある"Welcome to Mendeley ..."をクリックし、生成したNew.bibをインポートする。日本語の見栄えはいまいちながら、データを移行できた。

続く予定。