jecon.bst その4 (というより Zotero の日本語bibtexキー生成)

前回, Zoteroで日本語文献を管理して, その出力を jecon.bst で扱うために, どうすればよいかを考察した.

日本語bibtexキー生成以外は, jecon.bst を修正して, シェルスクリプトで一括変換すればよいところまで出来た. できないのは日本語bibtexキー生成である. Zotero のbib出力では日本語のUTFは無視するようになっている.

bibキーを作るためには, Zotero のほうを改造する必要がある. このことについて, ブログ

http://d.hatena.ne.jp/pinkfive/20101112

がある. 素晴らしいけれど 現在のzoteroとバージョンが違うので, そのまま使えない. このコードを参考に, BibTeX.js を改造する. Mac や Ubuntu で,

find ~/ -name "BibTeX.js"

で, 場所をさがして, オリジナルを別名で保存しておく. そして, BibTeX.js を

var citeKeyConversionsRe = /%([a-zA-Z])/;
var citeKeyCleanRe = /[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g;

var citeKeyConversions = {
	"a":function (flags, item) {
		if(item.creators && item.creators[0] && item.creators[0].lastName) {
			return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
		}
		return "";
	},
	"t":function (flags, item) {
		if (item["title"]) {
			return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
		}
		return "";
	},
	"y":function (flags, item) {
		if(item.date) {
			var date = Zotero.Utilities.strToDate(item.date);
			if(date.year && numberRe.test(date.year)) {
				return date.year;
			}
		}
		return "????";
	}
}

から

//var citeKeyCleanRe = /[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g;
var citeKeyCleanRe = /[\"\#\%\'\(\)\,\=\{\}\~\\]+/g;
var citeKeyJapaneseRe = /[\u3400-\u4DBF\u4E00-\u9FFF\uD840-\uD87F\uDC00-\uDFFF\uF900-\uFAFF]/;

var citeKeyConversions = {
    "a":function (flags, item) {
        if(item.creators && item.creators[0] && item.creators[0].lastName) {
//            return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
            var tmp = item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
            if (tmp.match(citeKeyJapaneseRe)) {
                return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
            }
            else return tmp;
        }
        return "";
    },
    "t":function (flags, item) {
        if (item["title"]) {
//            return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
            var tmp = item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
            if (tmp.match(citeKeyJapaneseRe)) return tmp.substr(0, 10);
            else return tmp;
        }
        return "";
    },
    "y":function (flags, item) {
        if(item.date) {
            var date = Zotero.Utilities.strToDate(item.date);
            if(date.year && numberRe.test(date.year)) {
                return date.year;
            }
        }
        return "????";
    }
}

に変更する. そうすれば, 日本語UTFで姓名が出力される. 現状は使えるが, バージョンが変わると, 使えなくなるかもしれないので注意が必要である.

これで, 日本語文献をふくめ, Zotero で一元管理して, 一度のシェルスクリプト変換で, jecon.bst 形式の文献管理が可能になる. ただし, 自分が執筆する論文は, 英語の文献がほとんどで, 実際にはあまり使いませんが.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中