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 のコマンドが保存されているようになる。なお、グループ化を解除すると一緒にラベルも消えるので要注意。

20070911 ahya

補足。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 Print This Post

2 Responses to “Inkscape で LaTeX の数式を入力する(続編)”

  1. gussan Says:

    こんなこともできるんですね! すばらしいっす。
    ところで、太字の部分をコピー&ペーストで貼り付けて実行したらエラーが。
    なぜだろうとよく見ると「’inkscape:label’,」の「’」の部分が2バイトになっていました。
    さしでがましいですが、ご報告します。

    ・・・と、言うか、横着せずに自分でキーボードをたたくべきですね。

  2. shun Says:

    ご指摘ありがとうございます。
    太字にしたら何故か全角にされてしまったようです。
    さっそく直しておきました。