論文情報から bibtex データを表示する ver.0.0.1
タグの class 名を使って論文の詳細情報を表示したものから bibtex 形式のデータを作成するための javascript.
現時点での、論文の詳細情報は次のような形式
論文名
,
会議 or 雑誌名,
西暦,
ページ
論文概要
論文に対するコメントなど
KW: キーワード
div や span は基本的に処理では無視して class名のみで対応。ただし、雑誌、国際会議、博士論文、などの分類は、記述の提案者からの記述になかったため未対応、要検討。
また、bibtex のタグを表記するには上記の記述では不十分であるため、それへの対応も要検討。
なにか標準的な記述方法があるなら、それに対応する予定。
showbib = function(bibtex) {
if(bibtex.parentNode.lastChild.className == 'bibtex') {
bibtex.parentNode.removeChild(bibtex.parentNode.lastChild);
return;
}
paper = bibtex.parentNode;
var bibdiv = document.createElement("div");
bibdiv.setAttribute("class","bibtex");
if(paper.hasChildNodes()) {
var nodes = paper.childNodes;
for(var i = 0; i < nodes.length; i++) {
texts = "";
switch (nodes[i].className) {
case 'title':
texts = "\t title = \t{"+nodes[i].innerHTML+"},";
break;
case 'author':
authors = nodes[i].innerHTML;
authors = authors.replace(/<\/*u>/i,"").replace(/<\/*u>/i,"");
while(authors.search(/,/) != -1) {
authors = authors.replace(/\,/, " and");
}
texts = "\t author = \t{"+authors+"},";
break;
case'publication':
texts = "\t journal = \t{"+ nodes[i].innerHTML+"},";
break;
case 'year':
texts = "\t year = \t"+ nodes[i].innerHTML +",";
break;
case 'pages':
texts = "\t pages = \t{"+ nodes[i].innerHTML +"}";
break;
default:
continue;
}
bibdiv.appendChild(document.createTextNode(texts));
bibdiv.appendChild(document.createElement("br"));
}
}
paper.appendChild(bibdiv);
}
document 内の paper というクラス名をもつ div 要素を見つけて、Bibtex を出力するタグを挿入する。
初めは、全ての paper に書き込んでいたけど、Javascrip を使っていないと意味がないタグなので、どうせならロード時に埋め込むのよいのではと思い作成したメソッド。
writebibtex = function() {
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++) {
if(divs[i].className == 'paper') {
var bibdiv = document.createElement("div");
bibdiv.setAttribute("class","bibtexIndex");
bibdiv.setAttribute("onclick","showbib(this)");
bibdiv.appendChild(document.createTextNode("Bibtex"));
divs[i].appendChild(bibdiv);
}
}
}
ToDo
- 標準的な論文詳細情報の記述方式があるのか調べないと
- bibtex 形式の属性全てに対応する?
- 論文タイプはどう分類するのか