InkscapeのプラグインであるtextextはPythonで記述されたスクリプトファイルです。日本語表示ができるように、ここを参考に改修してみました。
【前提条件】
- OS Ubuntu18.04
- Inkscape0.92
- textextは、0.9.0
<手順>
- textextをインストール。
- スクリプト__init__.pyを改修。
- 動作確認。
1.textextをインストール。
このサイトを参考にインストールしました。Ghostscriptは、version 9.26。pstoeditは、version 3.70。でした。
(注)texlive-xelatex は、ubuntu18.04では、texlive-xetex としてインストールされるようです。しかし、インストールしなくても動作しました。念の為に、インストールされる方は、下記のようにします。
$ sudo apt install texlive-xetex
2.スクリプト__init__.pyを改修。
__init__.pyを開いて、編集します。
$ vi ~/.config/inkscape/extensions/textext/__init__.py
56行目に、import codecs を追記します。
__version__ = "0.9.1"
__docformat__ = "restructuredtext en"
import abc
import copy
import hashlib
import logging
import logging.handlers
import math
import os
import platform
import sys
import traceback
import codecs
日本語をUTF8で表示させるため、613〜615行に追記します。texファイルをplatexで、dviとして出力し、さらにdviをdvipdfmxで、pdfに変換して出力するために、619行目はコメントアウト(#)、620〜623行目を追記します。
# Convert TeX to PDF
# Write tex
with open(self.tmp('tex'), 'w') as f_tex:
f_tex.write(texwrapper)
#to utf8 / don't forget import codecs !
utf8_tex = codecs.getwriter('utf_8')(f_tex)
utf8_tex.write(texwrapper)
# Exec tex_command: tex -> pdf
try:
#exec_command([tex_command, self.tmp('tex')] + self.LATEX_OPTIONS)
#tex -> dvi
exec_command(['platex', self.tmp('tex')])
#dvi -> pdf
exec_command(['dvipdfmx', self.tmp('dvi')])
except TexTextCommandFailed as error:
if os.path.exists(self.tmp('log')):
parsed_log = self.parse_pdf_log(self.tmp('log'))
__init__.pyを保存します。
3.動作確認。
Inkscapeを起動し、エクステンション>textext を実行します。そして、texの数式を記入します。
なお、このとき、日本語をそのまま記入しても「! Not two-byte family.」というエラーメッセージが表示され、失敗します。\mbox{ここに日本語を書く}を利用して日本語を記入します。
例:\$\mbox{関数}f(x)\mbox{の}x=a\mbox{における}\\\mbox{微分係数(変化率)は}\\\displaystyle \lim_{b \to a}\frac{f(b)-f(a)}{b-a}\$
以上、Inkscapeのtextextに日本を表示させることができました。