前の日 / 次の日 / 最新

swk's log

2005-09-12 Mon

* BibTeX 関連ツール [tech] 1 user

いろいろあるなあ.ありすぎてどれがいいのかさっぱり分からない.まあこういうのは人の趣味それぞれな気もするけど.

というわけで私的 BibTeX 遍歴.

でかい bib ファイルにただひたすら書いてた時代

とりあえず BibTeX を使い始めた頃.何も考えずに 1 つのファイルに書き連ねていた.と思う.複数ファイルに分けてたかな.あまり覚えてない.

@string を使うようになる

雑誌名とかは変数にしておいた方が便利だと先輩に習い,真似してみる.まあ習ったというか,研究室のローカルニュースサーバの過去記事をあさってたらそういう記事があった(そもそも当時はその先輩とは面識がない.後にお会いするが,予想通りの濃い人であった).

@string{ai="Artificial Intelligence"}

@article{horn:opticalflow1981,
  author = { Berthold K. P. Horn and Brian G. Schunck }, 
  title = { Determining Optical Flow }, 
  journal = ai, 
  volume = { 17 }, 
  pages = { 185--203 }, 
  year = { 1981 }, 
}

みたいな感じ.@string は string.bib とかの別ファイルに分ける.投稿する雑誌(学会)によって,引用する雑誌名の略記法が違うから,種類ごとに string.bib を用意するのがよいという教えだった.

@string{ai="Artif. Intell."}

まあ私の場合は実際には,必要になったときに必要になった部分だけ書き換えたものを作って使ってましたが.

あとその先輩の流儀だと,proceedings の場合,学会名は @proceedings エントリとして独立して書いて,個々の論文である @inproceedings からそれを crossref するのが薦められていた.これは趣味に合わなかったのでやめて,@inproceedings からも @string を参照することにした(今でもそう).いずれにせよ,年ごとに別の変数にしないといけないので,なかなか微妙である.こんな涙ぐましいことをしていたりした.

@string{isscc__="Digest of Technical Papers of"}
@string{isscc="IEEE International Solid-State Circuits Conference"}
@string{isscc98=  isscc__ # " 1998 " # isscc # " (ISSCC'98)"}
@string{isscc99=  isscc__ # " 1999 " # isscc # " (ISSCC'99)"}
@string{isscc2000=isscc__ # " 2000 " # isscc # " (ISSCC 2000)"}
@string{isscc2001=isscc__ # " 2001 " # isscc # " (ISSCC 2001)"}
...

なんか年によって名前が微妙に違ったりとかする学会もあるしな.もうちょいなんとかならんのかという感じ.結局今は,各年とも愚直に書いている.

エントリごとに分割してメールとして保存したり

動機は,要するに全文検索がしたかった.namazu とかで検索しようと思うと,1 件 1 ファイルになっていると都合が良い.内容のメモとかを @hoge{ ... } の外に書いておくと,それも検索の対象になるし.メールにしたのは, emacs から手軽に検索する方法として一番最初に思いついたのが mew-nmz だったから.

最初は,自分宛にメールを送ると適当なフォルダに仕分けされるようにしていて,そのうち 1 通ずつ送るのが面倒になって,自動で分割して imstore とかでフォルダに直接保存するようになった.

原理的には,このメールファイルを全部 cat した bib ファイルを BibTeX に食わせればいいんだけど,何やら気持悪いと思ったのか,LaTeX の aux ファイルから \citation を抜き出して必要なエントリだけ抽出するスクリプトを使ったりしていた.

ただし,string.bib はでかい単一ファイルのまま使っていた.

MySQL などに手を染める

というわけで最近の状況.もうちょっといろんな操作を柔軟にきれいにやりたいなあということで,異動して計算機まわりの環境が変わったのを機に,関係データベースにつっこんでみることにした.ついかっとしてやった.今は反省している.

文献データはすべて MySQL へ.aux ファイルの\citation を見て必要なレコードを抜きだして BibTeX に変換する.string.bib も MySQL のテーブルになっていて,これも必要なものが抜き出される.

必要なものが抜き出される,ということは,原稿を書き換えて引用が増減するたびに新しいもので上書きされるということだ(実際には増減のチェックなんかしてないから,抽出するたびに上書きされる).てことは雑誌名の略記への書き換えなんかは最後の最後までできないということだ.

それはさすがに不便なので,回避策がある.

\bibliography{hogepaper_str,str_override,hogepaper}

hogepaper.bib が BibTeX エントリの並んだファイル.hogepaper_str.bib が @string の並んだファイル.その間にはさんだ str_override.bib で @string を override する.このファイルは自動では上書きされない.

まあとりあえず動いてはいるんだけど,いろいろと不満な点もある.まず全文検索.MySQL の full-text search は日本語が使えないということを 今朝知って 愕然としているところである.

がんばって日本語化する方法もあるみたいだけど,大変そうだなあ.

あと,やっぱり入力用のフロントエンドがないとちょっと大変.え? 今は MS Access から ODBC でつないでテーブル開いておもむろに書いてますが何か?

なんかやっぱり手作りには限界があるなあとかも思ってみたりして.

えーと,うーん,つづく(かも).

関連記事:
[2005-09-29-1] 文献の物理的整理
<< 2005-09 >>
SuMoTuWeThFrSa
123
45678910
11121314151617
18192021222324
252627282930

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2012-02-13 02:02


Shingo W. Kagami - swk(at)kagami.org