microsoft wordでもbibtexが使いたい。 という人は他にもいたらしい。
で、探してみたのだが、 bibtex4word.dot が紹介されているページ とか Bibtex Word Macro くらいしか見付けることができなかった。
で、bibtex4wordは希望通り動かず。 細かく設定できそうで、頼りになりそうだっただけに残念。 その分、コードを読みきれない状態です。
対して、 Bibtex Word Macro というものにも手を出したのですが、これはまぁなんとかなりました。 やっぱりDLしたままでは動かなかったのですが、延々といじり、とりあえず英語、日本語でも参考文献を出すことができるようにはなりました。 一応、うちの環境(日本語WinXP SP2, Excel 2003)でも動くようになったらしい。 まぁ英語と日本語での名前の表記法が違ったりしてまだまだ修正しなければならないのですが。 まぁ、動いたということは正義ということで。
以下、その差分です。 wordのvbaに書かれていた標準モジュールを c:\wk\bas-fr\*.bas と c:\wk\bas-ja\*.bas に 全部(標準モジュール名).basとエクスポートして、 変更前(bas-fr)と変更後(bas-ja)とのdiffをとってみた。
C:\wk>diff bas-fr bas-ja diff bas-fr bas-ja diff bas-fr/StyleNumbered.bas bas-ja/StyleNumbered.bas 15a16,18 > .MatchAllWordForms = False > .MatchSoundsLike = False > .MatchFuzzy = False 84c87,88 < .TypeText Text:="Bibliographie" --- > ' .TypeText Text:="Bibliographie" > .TypeText Text:="Reference" 92c96 < reference = "[" & i & "] " & vtab --- > reference = "[" & i & "] " & vbTab diff bas-fr/libBibtex.bas bas-ja/libBibtex.bas 25a26,28 > .MatchAllWordForms = False > .MatchSoundsLike = False > .MatchFuzzy = False 188,189c191,194 < tmp = Chr(Asc(parts(i))) < result = result & UCase(tmp) & ". " --- > ' tmp = Chr(Asc(parts(i))) ' for mac > tmp = (parts(i)) 'for windows > ' result = result & UCase(tmp) & ". " 'for europian style name notation > result = result & UCase(tmp) & " " 'for japanase style name notation diff bas-fr/libString.bas bas-ja/libString.bas 58c58,59 < ' caract俊es sp残iaux --- > ' tmp = str > ' ' caract俊es sp残iaux 62,103c63,104 < < ' c仕ille < tmp = Replace(tmp, "\,c", "椚") < < ' caract俊es accentu市 minuscules < tmp = Replace(tmp, "\`a", "棹") < tmp = Replace(tmp, "\^a", "棠") < tmp = Replace(tmp, "\""a", "棯") < < tmp = Replace(tmp, "\'e", "椣") < tmp = Replace(tmp, "\`e", "椡") < tmp = Replace(tmp, "\^e", "棆") < tmp = Replace(tmp, "\""e", "楹") < < tmp = Replace(tmp, "\^\i", "楸") < tmp = Replace(tmp, "\""\i", "楫") < < tmp = Replace(tmp, "\^o", "椹") < tmp = Replace(tmp, "\""o", "楴") < < tmp = Replace(tmp, "\`u", "椰") < tmp = Replace(tmp, "\^u", "楡") < tmp = Replace(tmp, "\""u", "楞") < < ' caract俊es accentu市 majuscules < tmp = Replace(tmp, "\`A", "ヒ") < tmp = Replace(tmp, "\^A", "・) < tmp = Replace(tmp, "\""A", "棧") < < tmp = Replace(tmp, "\`E", "・) < tmp = Replace(tmp, "\^E", "・) < tmp = Replace(tmp, "\""E", "・) < < tmp = Replace(tmp, "\^I", "・) < tmp = Replace(tmp, "\""I", "・) < < tmp = Replace(tmp, "\^O", "・) < tmp = Replace(tmp, "\""O", "棗") < < tmp = Replace(tmp, "\`U", "・) < tmp = Replace(tmp, "\^U", "・) < tmp = Replace(tmp, "\""U", "棣") --- > ' > ' ' c仕ille > ' tmp = Replace(tmp, "\,c", "椚") > ' > ' ' caract俊es accentu市 minuscules > ' tmp = Replace(tmp, "\`a", "棹") > ' tmp = Replace(tmp, "\^a", "棠") > ' tmp = Replace(tmp, "\""a", "棯") > ' > ' tmp = Replace(tmp, "\'e", "椣") > ' tmp = Replace(tmp, "\`e", "椡") > ' tmp = Replace(tmp, "\^e", "棆") > ' tmp = Replace(tmp, "\""e", "楹") > ' > ' tmp = Replace(tmp, "\^\i", "楸") > ' tmp = Replace(tmp, "\""\i", "楫") > ' > ' tmp = Replace(tmp, "\^o", "椹") > ' tmp = Replace(tmp, "\""o", "楴") > ' > ' tmp = Replace(tmp, "\`u", "椰") > ' tmp = Replace(tmp, "\^u", "楡") > ' tmp = Replace(tmp, "\""u", "楞") > ' > ' ' caract俊es accentu市 majuscules > ' tmp = Replace(tmp, "\`A", "ヒ") > ' tmp = Replace(tmp, "\^A", "・) > ' tmp = Replace(tmp, "\""A", "棧") > ' > ' tmp = Replace(tmp, "\`E", "・) > ' tmp = Replace(tmp, "\^E", "・) > ' tmp = Replace(tmp, "\""E", "・) > ' > ' tmp = Replace(tmp, "\^I", "・) > ' tmp = Replace(tmp, "\""I", "・) > ' > ' tmp = Replace(tmp, "\^O", "・) > ' tmp = Replace(tmp, "\""O", "棗") > ' > ' tmp = Replace(tmp, "\`U", "・) > ' tmp = Replace(tmp, "\^U", "・) > ' tmp = Replace(tmp, "\""U", "棣") C:\wk>
見たら変更したのはは結構少ないのね。 それもほとんどがコメントアウト。 wordでのマクロの作業を追っていっただけで、結構時間がかかってしまったのに…。 まぁ面白かったからいいか。
それにしても、統合開発環境はすごい。 VBAのエディタは、ブレークポイントは設定できるわ、そのときの変数一覧を見ることもできるわ。 すばらしい。 こんなに頭を使わなくても良い道具がそろっているとは知らなかった。 無知とは罪。 今まで、真剣に暗算してました。
まぁ、とりあえず、使えそうだから、いいか。
ここらへん を見て、あーうらやましいなー、と思いながらいじりまわしてました。
あ、そういや、豆腐文字とかは出ないなぁ。 それが救いかな?
