ちょっと苦労しました。Ubuntu14.04のInkscapeに、textextをインストールし、日本語を表示させることができました。そのときの、設定メモです。

【前提条件】

  1. Ubuntu14.04で、Inkscape0.48が正常に動作している。
  2. エクステンション>レンダリング>Latex数式が動作する。
  3. pythonの編集ができる。(初心者レベルのコーディングでよい)
  4. Latexの記述ができる。(初心者レベルでよい)
  5. Google先生と仲が良い。(お決まり)

<手順>

  1. textextのインストール(設置)。
  2. textext.pyの編集。
  3. 動作確認。
  4. 番外2つ。(Inkscape0.91へアップ&エラー回避)

1.textextのインストール(設置)。

(1)関連するパッケージのインストール

sudo apt-get install pstoedit
sudo apt-get install python-lxml

(2)念の為の設定。Latex数式の正常動作のチェック。

Inkscapeには、デフォルトで、「Latex数式」が使えます。エクステンション>レンダリング>Latex数式が正常に使えるか確認します。(この拡張機能が使えないということは、Latex自体が使えない可能性が高い。)

もし、「Latex数式」が存在していない、正常に動作しない場合は、インストール(または、再インストール)します。そのとき、Inkscapeのエラーログを確認すると参考になります。
本Ubuntu機では、「Latex数式」自体が、表示されていませんでした。(インストールされていない)

cat ~/.config/inkscape/extension-errors.log

本Ubuntu機では、多数のエラーメッセージが表示され、関連するモジュールのロードに失敗したことがわかりました。ので、下記の通り、エラーログを参考にパッケージをインストールしました。

sudo apt-get install pdf2svg
sudo apt-get install latex
sudo apt-get install dvips
sudo apt-get install dia
sudo apt-get install skconvert
sudo apt-get install sckencil <<---サポート切れで、インストールできません。
sudo apt-get install texliv

Latex関連のパッケージ群がインストールされていないようでした。ちなみに、「sckencil」はすでにサポートされていないようで、インストールはできませんでした。ので、放置しています。今のところ、動作に深刻な問題は起きていないようです。(ただ、Inkscapeがときどき重くはなります。sckencilが関連しているかは不明。後日、対応予定?)>>>「4.番外2つ」で対処しました。

さて、エクステンション>レンダリングとたどってみると、図3にあるように、「Latex数式」が現れ、きちんとLatexの数式を入力し、数式が表示されました。(ただし、日本語は表示できません。)

(3)textextのインストール。

下記のサイトから、最新版のtextextをダウンロードします。latest版は、「textext-0.4.4.tar.gz」です。

https://pav.iki.fi/software/textext/

ちなみに、こちらのサイトに、次のような注意書きがありました。

Note

For Inkscape versions earlier than 0.46, Inkscape’s user interface freezes while you are editing the LaTeX object. This is a limitation of the Inkscape extension model. (If you know better, please inform me how it should be done 😉

どうも、0.46より新しいとInkscapeはフリーズするらしい。Ubuntu機のInkscapeは0.48なので該当します。確かに、動作が重くなります。インターフェースが薄暗くなって無応答状態になります。しかし、ちょっと待つと、復帰して正常に使えます。

ダウンロード後、解凍(展開)します。中から、「textext.inx」「textext.py」を~/.config/inkscape/extensionsディレクトリ内にコピー(移動でもよい)します。

Inkscapeを再起動させます。

2.textext.pyの編集。

textextは、デフォルトでは数式や記号などを表示できますが、日本語は表示できません。(エラーが発生します。)

ここで、Google先生の登場です。「Ubuntu Inkscape textext 日本語」で検索し、下記のサイトを参考に、textext.pyを編集しました。

http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?Inkscape%2Ftextext

shigi01@oresan-pc:~$ vi ~/.config/inkscape/extensions/textext.py
718 # Convert TeX to PDF
719
720 # Write tex
721 f_tex = open(self.tmp('tex'), 'w')
722 utf8_tex = codecs.getwriter('utf_8')(f_tex)
723 try:
724 #f_tex.write(texwrapper)
725 utf8_tex.write(texwrapper)
726 finally:
727 f_tex.close()
728
729 # Exec pdflatex: tex -> pdf
730 #exec_command(['pdflatex', self.tmp('tex')] + latexOpts)
731 exec_command(['platex', self.tmp('tex')] )
732 exec_command(['dvipdfmx', self.tmp('dvi')] )
733 if not os.path.exists(self.tmp('pdf')):
734 raise RuntimeError("pdflatex didn't produce output")

ピンク色部分が変更部分です。pdflatexでは、日本語表示ができないようです。

platexをインストールします。

sudo apt-get install texlive-lang-cjk

3.動作確認。

上記サイトの説明では、これで、日本語が表示されるはずですが、実際には、次のようなエラーメッセージが表示されました。

Traceback (most recent call last):
File "textext.py", line 211, in cb_ok
self.callback(self.text, self.preamble_file, self.scale_factor)
File "textext.py", line 370, in <lambda>
converter_cls, old_node))
File "textext.py", line 388, in do_convert
new_node = converter.convert(text, preamble_file, scale_factor)
File "textext.py", line 880, in convert
return PdfConverterBase.convert(self, *a, **kw)
File "textext.py", line 755, in convert
self.tex_to_pdf(latex_text, preamble_file)
File "textext.py", line 731, in tex_to_pdf
exec_command(['platex', self.tmp('tex')] )
File "textext.py", line 597, in exec_command
% (' '.join(cmd), p.returncode, out + err))
RuntimeError: Command platex /tmp/tmpBYPIBk/tmp.tex failed (code 1): This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013/Debian)
restricted \write18 enabled.
entering extended mode
(/tmp/tmpBYPIBk/tmp.tex
pLaTeX2e <2006/11/10> (based on LaTeX2e <2011/06/27> patch level 0)
Babel <3.9h> and hyphenation patterns for 11 languages loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
-
LaTeX Warning: Unused global option(s):
[a0].
-
No file tmp.aux.
! Not two-byte family.
<recently read> 二
-
l.8 二
次方程式
?
! Emergency stop.
<recently read> 二
-
l.8 二
次方程式
No pages of output.
Transcript written on tmp.log.

ちょっと長いメッセージですが、ポイントは、errorとかfailedなどのキーワードで追ってみるとわかりやすいです。platexコマンドが失敗しているようです。さらに、下を見ていくと、「! Not two-byte family.」というメッセージがあります。

Google先生に「! Not two-byte family.」でお尋ねすると、下記のサイトがヒットしました。

https://texwiki.texjp.org/?TeX%20%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8

読んでみると、

! Not two-byte family. †

pTeX において,数式中の和文フォントに対する family 番号(\jfam) およびその番号に対して用いる \textfont などの設定を行わない状態で, 数式中に和文文字を直接入れた場合に現れるエラーメッセージです.
→数式中の和文フォントに関する設定を適切に行えばよいのですが, 標準配布のクラスファイルを用いている場合には, 使用しているクラスファイルが和文用のものであるかどうかをチェックしてください. また,和文用のクラスファイルを用いていても disablejfam クラスオプションを適用した場合には和文文字を数式中に直接入れることはできないので, 注意してください(その場合であっても,“和文文字を \mbox の中に入れたもの” を数式中で用いることはできます).

どうも和文フォントを指定する必要がありそうです。日本語のフォントを設定して適切なmapファイルを指定するようです。しかし、更に読むと、\mboxを使えば数式でも日本語が表示できるようなことが書いてあります。

つまり、\mbox{日本語をここに書く。}とすればよいようです。

では、動作確認です。

「OK」をクリックして、

日本語が表示されたことを確認します。

以上、UbuntuのInkscapeでlatexの数式に日本語を表示できました。別の機会に、日本語のフォントを指定したmapファイルを用いた方法も試したいと思います。

4.番外2つ。(Inkscape0.91へアップ&エラー回避)

(1)Inkscape0.91へアップグレード

リポジトリを追加し、アップグレードします。

sudo add-apt-repository ppa:inkscape.dev/stable
sudo apt-get update
sudo apt-get install inkscape

これで、inkscapeのバージョンが0.48から0.91へアップしました。

(2)extension-errors.logへの回避策

extension-errors.logの内容を確認します。

shigi01@oresan-pc:~$ cat ~/.config/inkscape/extension-errors.log
エクステンション "Sketch Input"のロードに失敗しました。理由: (プログラムの) 依存関係が満たされませんでした。
依存関係:
  タイプ: executable
  場所: パス
  文字列: skconvert

エクステンション "Win32 Vector Print"のロードに失敗しました。理由: このエクステンションは Windows 専用です。  これはこのエクステンションにとって不適切な .inx ファイルによって引き起こされます。不適切な .inx ファイルは Inkscape の不完全なインストールによって引き起こされた可能性があります。

「不適切な.inxファイル」って、何?念の為に、inkscapeを再インストールしましたが、エラーメッセージに変化はありませんでした。おそらく、不要なパッケージをロードしようとしているのではと判断し、メッセージ内の.inxファイルを削除(リネーム)することで回避します。

(2−1)「.inx」ファイルの保存場所を調べます。

shigi01@oresan-pc:~$sudo updatedb   <<---データベースの更新
shigi01@oresan-pc:~$ locate *.inx   <<---「.inx」の場所を探す
/home/shigi01/.config/inkscape/extensions/textext.inx
/home/shigi01/.config/inkscape-bk/extensions/textext.inx
/home/shigi01/Downloads/textext-0.4.4/textext.inx
/usr/share/inkscape/extensions/addnodes.inx
/usr/share/inkscape/extensions/ai_input.inx
/usr/share/inkscape/extensions/aisvg.inx
/usr/share/inkscape/extensions/ccx_input.inx
/usr/share/inkscape/extensions/cdr_input.inx
/usr/share/inkscape/extensions/cdt_input.inx
/usr/share/inkscape/extensions/cgm_input.inx

なるほど、/usr/share/inkscape/extensions/配下にトラブルの原因となっている、.inxファイルがありそうです。

(2−2)grepで探索後、原因ファイルをリネームしてエラーを回避

shigi01@oresan-pc:~$ cd /usr/share/inkscape/extensions/  <<---移動
shigi01@oresan-pc:/usr/share/inkscape/extensions$ grep -irn 'Win32 Vector Print' *  <<--grep実行
print_win32_vector.inx:3:    <_name>Win32 Vector Print</_name>

トラブルの原因のファイルは、「print_win32_vector.inx」と判明したので、削除(リネーム)します。

shigi01@oresan-pc:/usr/share/inkscape/extensions$ sudo mv print_win32_vector.inx print_win32_vector.inx-bk  <<---リネーム

同様に、「"Sketch Input"のロード失敗」も対処します。grep後、リネームします。

shigi01@oresan-pc:/usr/share/inkscape/extensions$ grep -irn 'Sketch Input'
sk_input.inx:3:    <_name>Sketch Input</_name>
shigi01@oresan-pc:/usr/share/inkscape/extensions$ sudo mv sk_input.inx sk_input.inx-bk

これで、「extension-errors.log」のエラーが消えました。