« 2006年11月 | Main | 2007年2月 »

2007年1月 3日

というわけで

[ カテゴリ: Life ]

世の中ではあたらしい年になったようです。 昨年は年の瀬が迫るにつれ良くないことの起こる頻度が高くなっていきましたが、 何となく今年もそれを引き継いでいるようなスタートです。 とりあえず致命傷を負わないようにがんばります。

2007年1月 6日

Gtk on MacOSX (pkgsrc編)

[ カテゴリ: MacOSX ]

昔、Gtk on MacOSXの開発が進められているらしいということを書きましたが、 pkgsrcでも使えるようになりました。

とはいえ、まあ開発途上という感じですが、使えないことはない。 少なくとも、wiresharkはなんとなく使えました。 /usr/pkg/etc/mk.confに以下のような記述を追加してください。

PKG_OPTIONS.pango=      -x11
PKG_OPTIONS.cairo=      -x11
PKG_OPTIONS.glitz=      -x11
PKG_OPTIONS.gtk2+ =     -x11 quartz

どーでもいいことですが、PKG_OPTIONS.gtk2+と=の間は、 スペースを挿入しないとだめです…

2007年1月16日

imlib2 on MacOSX

[ カテゴリ: MacOSX ]

imlib2 1.3.0をMacOSX(Intel)でコンパイルしようとしても、そのままでは通りません。 CPUがIntelだとMMXを有効にするために一部のコードがアセンブラに入れ替わるのですが、 そのアセンブラがMach-O用ではないからです。

で、解決法としては、

  1. MMXを無効にする
  2. コードを修正する

ですが、別に激しく使ってるわけではないので前者で逃げます。 これを実現する一番簡単な方法は、configureに--disable-mmxをつけること。 多くの場合はこれでいいでしょう。

では、pkgsrcでgraphics/imlib2を使ってる場合はどうすればいいでしょう。 CONFIGURE_ARGSに上記のオプションを追加してもいいんですが、 そもそもimlib2自体の問題なので、configure{,.in}にパッチを当てる方向で。 graphics/imlib2/pathcesに、 以下のファイルをpatch-local-aaおよびpatch-local-abとして置くと、 DarwinではMMXのデフォルト値がoffになります。 もちろん、--enable-mmxするとonになりますが、コンパイルは通りません。

--- configure.in.orig   2007-01-15 14:59:39.000000000 +0900
+++ configure.in        2007-01-15 14:59:52.000000000 +0900
@@ -116,6 +116,7 @@
 
 case $host_os in
   solaris*) mmx="no";;
+  darwin*) mmx="no";;
 esac
 
 dnl 
--- configure.orig      2007-01-15 15:01:34.000000000 +0900
+++ configure   2007-01-15 15:01:45.000000000 +0900
@@ -21224,6 +21224,7 @@
 
 case $host_os in
   solaris*) mmx="no";;
+  darwin*) mmx="no";;
 esac
 
 # Check whether --enable-mmx was given.

2007年1月29日

BibTeXで日本語の参考文献

[ カテゴリ: Technology ]

この時期、あちらこちらでBibTeXが使われまくってると思うんですが、 日本語の文章でBibTeXを使うとちょっとした問題があります。 それは、日本語の参考文献の日付が英語になってしまうことです。 以下みたいに。

[31] 参考花子, 参考太郎. BibTeXで日本語を使う際の日付の出力に関する研究. BibTeX研究会 (BibTeX2005), pp.141-144, July 2005.

ちうわけで、このださい“July 2005”を“2005年7月”にしましょう、 というのが今回の趣旨です。

といっても、なかなかきれいな方法はありません(しらないだけかも)。 戦略としては、

  • エントリが日本語か英語かで出力を変える
  • 日付を出力する場面では月が既にマクロ展開されているので、 展開後の文字列に対応する月の数値(ややこしいな)に変換する

という感じ。 以下ではjunsrt.bstに対するパッチを掲載していますが、 月の名称と数字の対応だけに気をつけて変更すれば、 同じ戦略で他のスタイルにも適用できるでしょう。

--- junsrt.bst  2007-01-29 11:34:14.000000000 +0900
+++ junsrt.bst  2007-01-29 12:35:30.000000000 +0900
@@ -355,19 +355,45 @@
     }
   while$
 }
+FUNCTION {format.date.month.to.number}
+{ month empty$ { "" }
+    { month "January" = { "1" }
+    { month "February" = { "2" }
+    { month "March" = { "3" }
+    { month "April" = { "4" }
+    { month "May" = { "5" }
+    { month "June" = { "6" }
+    { month "July" = { "7" }
+    { month "August" = { "8" }
+    { month "September" = { "9" }
+    { month "October" = { "10" }
+    { month "November" = { "11" }
+    { month "December" = { "12" }
+    'month
+      if$ } if$ } if$ } if$ } if$ } if$ }
+      if$ } if$ } if$ } if$ } if$ } if$ }
+  if$
+}
 FUNCTION {format.date}
 
 { year empty$
     { month empty$
        { "" }
        { "there's a month but no year in " cite$ * warning$
-         month
+         is.kanji.entry
+           { format.date.month.to.number "月" * }
+           'month
+         if$
        }
       if$
     }
     { month empty$
        'year
-       { month " " * year * }
+       { is.kanji.entry
+           { year "年" * format.date.month.to.number "月" * * }
+           { month " " * year * }
+         if$
+       }
       if$
     }
   if$

まあ見たまんまなんですが、戦略の前半はformat.dateに手を入れることで、 後半は関数format.date.month.to.numberを追加することで実現しています。 このスタイルだと、最初の例は以下のようになります。

[31] 参考花子, 参考太郎. BibTeXで日本語を使う際の日付の出力に関する研究. BibTeX研究会 (BibTeX2005), pp.141-144, 2005年7月.