2010年4月24日土曜日

textext on Ubuntu 10.04 beta

googleでtextextと検索すると自分のブログがやたら上位に現れて困惑している今日この頃です。元々他の方々の成果をそのまま使わせていただいているだけで、リンク先の方々の記述から得られる情報のほうが有用と思われますので、是非そちらもごらんください。

さて仮想マシンにインストールしたUbuntu 10.04 betaのinkscapeでもtextextを使いたいと思い、Ubuntu 9.10でやっていたのと同じ方法で日本語化を試みました。しかし日本語が表示されないので、ターミナルで
pstoedit -f sk hoge.pdf hoge.sk
skconvert hoge.sk hoge.svg
と入力して日本語を含むTeXファイルがうまく変換されているかを確認してみたところ、最初のpstoeditで生成されたskファイルで既に日本語フォントが消滅しているようでした。
pstoeditにplot-svgプラグインを入れてみて
pstoedit -f plot-svg hoge.pdf hoge.svg
と直接変換をしてみても日本語がなくなっているのが確認出来ました。
textext.pyをオリジナルのものに直してみたり、ごにょごにょやって最初の状況が再現出来なくなりましたが、現時点ではpstoeditで日本語を含むpdfファイルをskファイルに変換する際にghostscript関係のエラーが出て止まってしまうようです。
TeX環境をptetex3からptexliveに変えたことが原因かもしれません。

どうしたものかと考えていたのですが、pdf2svgをインストールしたところ、あっさり日本語が通るようになりました。参考までに。

2010年4月21日水曜日

inkscapeでLaTeX数式(textext)

日本語化の話題を先にしてしまいましたが、Ubuntuのinkscapeにtextextを導入するには少し気をつけなければならない点があります。今回はその話をしておきます。
Ubuntu 9.10のリポジトリにあるinkscape 0.47では、デフォルトで「エクステンション」→「レンダリング」→「LaTeX数式」からLaTeX数式を出力出来るのですが、如何せん再編集機能が無い、字が大きいなど不便な印象があります。
textextはLaTeXの数式を出力出来るinkscapeの有名(多分)な拡張機能で、一度出力した数式を再編集することが出来たり、事前にプリアンブルファイルを用意しておくことで自前で定義したコマンドを扱うことが可能になるなど非常に便利です。
Ubuntu 9.10にて導入しようとしたところ、煩わしい点が幾つかあったので、それらについて記録しておこうと思います。

まずはtextextのサイトからtextext-0.4.4.tar.gzをダウンロードし、展開して得られる
textext.py
textext.inx
を~/.config/inkscape/extensions に移動します。(inkscape 0.46以前では~/.inkscape/extensions というディレクトリになっているようです。)
textextではLaTeX数式を含む文章ファイルをsvg形式に変換するために、まずpdflatexでpdfファイルを生成した後、pstoeditでpdfファイルをskファイルに変換し、さらにskconvertでsvgファイルに変換するという手順を取っているようです。そのためこれらのコマンドが使える状態になってなければなりません。
pdflatexは多くのTeXディストリビューションに含まれているようなのでTeXが使えている状態ならば問題ないでしょう。pstoedit, skconvertはUbuntuのリポジトリにあるパッケージで間に合います。skconvertコマンドを使うにはskencilを導入すればいいみたいです。他にもpython-lxmlというパッケージも必要です。

$ sudo apt-get install pstoedit skencil python-lxml

これで必要な道具はそろったはずなので、inkscapeを起動してメニューの「エクステンション」→「Tex Text」からtextextを実行し、適当に入力してみたところ

 /home/username/.config/inkscape/extensions/textext.py:55: 
DeprecationWarning: the md5 module is deprecated; use hashlib instead
   import os, sys, tempfile, traceback, glob, re, md5, copy

というエラーが出ました。そこでPascal Schulthessさんとこを参考に、textext.pyを書き換えます。以下その詳細の丸写しです。一行が長い部分がうまく表示されていないようなので、Pascal Schulthessさんの記事をご覧になるとよいと思います。
まずtextext.pyの55行目にある
54 import inkex
55 import os, sys, tempfile, traceback, glob, re, md5, copy
56 from lxml import etree
の部分を

54 import inkex
55 import os, sys, tempfile, traceback, glob, re, copy
56 import hashlib
57 from lxml import etree
と書き換えます。左についている番号は行番号です。実際のファイルには書き込まないよう
に注意してください。 さらに870行目前後の
868    def __init__(self, document):
869        PdfConverterBase.__init__(self, document)
870        self.hash = None
871
872    def convert(self, *a, **kw):
873        # compute hash for generating unique ids for sub-elements
874        self.hash = md5.new('%s%s' % (a, kw)).hexdigest()[:8]
875        return PdfConverterBase.convert(self, *a, **kw)
876
877    def pdf_to_svg(self):
878        exec_command(['pdf2svg', self.tmp('pdf'), self.tmp('svg'), '1']) 
という部分を
868    def __init__(self, document):
869        PdfConverterBase.__init__(self, document)
870        self.hash = None
871        USE_GTK = False
872
873    def convert(self, *a, **kw):
874        # compute hash for generating unique ids for sub-elements
875        m = hashlib.md5()
876        m.update('%s%s' % (a, kw))
877        self.hash = m.hexdigest()[:8]
878        return PdfConverterBase.convert(self, *a, **kw)
879
880    def pdf_to_svg(self):
881        exec_command(['pdf2svg', self.tmp('pdf'), self.tmp('svg'), '1'])
と書き換えます。これでUbuntu 9.10のinkscapeでLaTeXの数式を扱うことが出きるようになりました。但しpdflatexコマンドは日本語を処理出来ないため、このままでは日本語を用いることが出来ません。日本語を使えるようにする話は別の記事で扱いましたのでそちらを参考にしてみてください。

2010年4月14日水曜日

textextで日本語を使う

textextはinkscapeでLaTeXの数式を取り扱えるようにするエクステンションです(サイトが移動したため、検索エンジンで引っかかるブログ記事中のリンクの多くからは辿れなくなっているようです)。textextではTeX文書のタイプセットを行う際にpdflatexコマンドを用いるため、日本語の文章を出力させようとするとエラーが生じます。しかしgreen_camelさんの仮想化された日々にtextextで日本語化の話があり、日本語を扱うことが可能なようでしたので同ブログを参考にtextextの日本語化を試みました。

大雑把にいうと、TeX文書をpdflatexで処理していた部分をplatex + dvipdfmxで処理するように変更している模様です。
私のptetex3ではTeXソースの文字コードは標準的にutf-8で記述するようにしてあるので、上のブログで文字コードがeuc-jpの部分をutf-8に変更しましたが、それだけでtextextを日本語化することが出来ました。感謝感謝です。

しかしそれ以外何も設定していないと、私の環境では日本語のフォントとしてsazanamiかkochiが使われているらしく、見た目が満足いくものではありませんでした。調べてみたところ、問題はどうやらpdfファイルをsvgファイルに変換する際に起こっているようでした。
詳細をいうと、textextではpdfファイルをpstoeditでskファイル(skencilというグラフィックソフトで扱う形式)に変換した後、skconvertコマンドでsvgファイルに変換するという手順をとっているようで、pdfファイルにフォントの埋め込みを行っていない場合、pstoeditでskファイルを生成した時点で既にフォントが決定されていることが確認出来ました。

よってpstoeditがskファイルを作成するときに使用する日本語フォントを変更するか、dvipdfmxでpdfファイルを作成するときにフォントを埋め込むかのいずれかを行えばよさそうということがわかりました。前者はよく分からないので、ここでは後者を採用することにします。

まず私はUbuntu 9.10ではptetex3を利用していますので、
TEXMFHOME = $HOME/texmf
という変数が定義されています(他のTeXディストリビューションでも一緒かもしれませんが)。自分が取ってきたスタイルファイルなどはこの場所に入れてあります。

ここではdvipdfmxでフォントを埋め込む際にmapファイルが必要となるので、
$HOME/texmf/fonts/map/dvipdfm
というフォルダを作り(フォルダ名はお持ちの環境に合わせて適宜解釈してください)、pTeX-IPA.mapという名前(この名前も各人で適宜変えて下さい)で
 rml    H    ipam.ttf
rmlv    V    ipam.ttf
gbm    H    ipag.ttf
gbmv    V    ipag.ttf
と記述したファイルを作成します。この例では、IPAフォントがインストールされおり、さらにTeXディストリビューションがそのフォントを認識していなければなりません。このmapファイルにより、端末で
dvipdfmx -f pTeX-IPA.map hoge.dvi
と打てば生成されたhoge.pdfファイルにはIPAフォントが埋め込まれます。
あとはこのコマンドと同じことを実行するよう、textext.pyの書き換えを行うだけです。green_camelさんのブログにあった
exec_command(['dvipdfmx', self.tmp('dvi')] )
の部分を
exec_command(['dvipdfmx',  '-f', 'pTeX-IPA.map', self.tmp('dvi')])
に置き換えます。するとinkscapeで表示されるフォントが改善されました。

追記:TeX環境がptexlive2009であり、かつpdfからskファイルの生成にpstoeditを用いている場合、上の方法では日本語が表示されない可能性があります。その場合にはpdf2svgをインストールすればうまくいくかと思います。


2010年4月10日土曜日

侵略者に死を

今年の正月にNHKの番組「新春TV放談2010」を見ていたんですが、そこで時折流れていた曲がずっと気になっていました。最近になって調べてみたところThe Prodigyの"Invaders Must Die"であることがわかりました。いやー、カッコいいです。昔(蟹の頃)はドラムンベース(?)的な音で、個人的には食指が動かなかったように記憶しています。あとどうでもいいのですが、数年前に秋吉久美子がProdigyを聴いているとTVで言っていたのが記憶に残っています。旦那さんが若いらしいので、その影響があったのでしょう。私はProdigyのアルバムを通して聴いたことがないのですが、大分昔と比べて音楽性が変わったのでしょうか。


The Prodigy - Invaders Must Die (New) [HQ]

2010年4月5日月曜日

MASS OF THE FERMENTING DREGS

 ひさびさにNumber GirlのDVDを観ていたら、いつもの癖でメンバーの現状が気になったので調べてみました。中尾憲太郎氏の動向だけ余り知らなかったのだけれど、色々やっているようです。そんな中尾憲太郎つながりで見つけました。MASS OF THE FERMENTING DREGS。Tarbox Road Studioでデイヴ・フリッドマンにプロデュースしてもらっただとか、2ndは中尾憲太郎プロデュースだとかいう経歴に加え、Voが何を歌っているのか一聴しても全然分からない点も含めて、年寄りの私は否が応にもNGと関連させてしまいます。
音の方は轟音系3ピースバンドで、既に2枚のアルバムをリリースし、メジャーデビュー済みの模様です。PVのシングル曲がえらくカッコよいです。これは買いですね。

「ひきずるビート」


他のPVやライブ映像を確認したところ、過去の曲はここまで轟音系ではないようです。この曲ではベースの音がゴリゴリになっているからそう感じるのかもしれません。"She Is Inside, He Is Outside", "If a Surfer"という曲もカッコよい曲でした。是非ゴリゴリの轟音曲でアルバムを一つ作って貰いたいです。3月にライブツアーを行っていたようですね。ウチの近所にも来てたようなので、もう少し早く知りたかった…。

2010年4月2日金曜日

ptexlive on Ubuntu 10.04 beta

Ubuntu 10.04 beta (32bit)をVMware Player上の仮想マシンにインストールし、pTeXLive2009を試しにインストールしてみました。ghostscript関連でエラーが出ますがとりあえずコンパイル出来てインストールも完了しました。コマンド名が違っていたりするものの、現在Ubuntu 9.10上で使っているptetex3とほぼ同じ感覚で使えるようです。気になる点は、xdvi-search.elを使ってソースファイルからC-c, C-jでdviファイルの該当部分にジャンプする際に、日本語の表示が可能なpxdviでなくxdviが呼び出されるところです。どうやらxdvi-search.elを書き直す必要がありそうです。
pTeXLive2009のインストール方法についてはUbuntu 10.04の正式版が出た際にでも記事にしたいと思います。ただxindyとかを使ってみたかったものの、makeに失敗しまくったので諦めました。ptetex3ではglossariesパッケージがうまく使えなかったのですが、pTeXLiveでは使えないか少し弄くってみたいと思います。

追記:(2010/04/11)
xdvi-search.elの件ですが、同ファイルの90行目を
(defcustom xdvi-bin "xdvi" 
から
(defcustom xdvi-bin "pxdvi"
に書き換えるだけで期待通りの結果を得ることが出来ました。

ptexliveのコンパイル時に ptetexlive.cfgでxindy以外のツールのコメントアウトを外してみたところ容易にコンパイル可能でした。

追記:(2010/05/20)
ptetex3でglossariesパッケージが不具合を起こしていたのではなく,自分がマニュアルをきちんと読んでいなかっただけでした.ptexlive2009でも問題なく動作します.