Inkscape で LaTeX の数式を入力する(続編)

前に Inkscape の Windows 版で LaTeX の数式を入力する方法を書いた。
今回はその続き。
Inkscape では、数式を入力できるのはいいが、残念なことにその修正ができない。というのも、Inkscape のこの機能は、 「LaTeX コマンドにしたがって SVG 形式の画像ファイルを作成し挿入する」という作業を自動化しているだけであって、数式自体を Inkscape が管理しているわけではないのだ。
修正ができないのは我慢するとして、せめて入力されたコマンドぐらいは保存しておきたい。というわけで、また eqtexsvg.py をいじる。70行目あたりの
self.current_layer.appendChild(group)
の直前に 1 行追加する。
doc = xml.dom.minidom.parse(filename)
svg = doc.getElementsByTagName('svg')[0]
group = clone_and_rewrite(self, svg)
group.setAttribute('inkscape:label', self.options.formula)
self.current_layer.appendChild(group)
追加するのは太字の部分。
こうしておくと、挿入された数式の上で右クリックし、「オブジェクトのプロパティ」を開いたときに、「ラベル」欄に入力した LaTeX のコマンドが保存されているようになる。なお、グループ化を解除すると一緒にラベルも消えるので要注意。
—
補足。Inkscape 0.45+0.46pre0 では setAttribute が使えなくなる。代わりに set でいいらしい。
doc = inkex.etree.parse(filename)
svg = doc.getroot()
group = clone_and_rewrite(self, svg)
group.set('inkscape:label', self.options.formula)
self.current_layer.append(group)
Print This Post

9月 11th, 2007 at 15:59
こんなこともできるんですね! すばらしいっす。
ところで、太字の部分をコピー&ペーストで貼り付けて実行したらエラーが。
なぜだろうとよく見ると「’inkscape:label’,」の「’」の部分が2バイトになっていました。
さしでがましいですが、ご報告します。
・・・と、言うか、横着せずに自分でキーボードをたたくべきですね。
9月 11th, 2007 at 17:08
ご指摘ありがとうございます。
太字にしたら何故か全角にされてしまったようです。
さっそく直しておきました。