2010年12月8日水曜日

textext で日本語

ずいぶん前に inkscape と textext を導入して,Tex の数式を含む図を作成する環境を整えた話をした。

たいてい,論文は英文で書くので,当然図の中の文字も英語なもんで,あまり気付かなかったのだが,何もしないと textext では日本語が通らない。日本語で書いている本の挿絵でも作ろうかな~と思ったもんで,textext で日本語が使えるよう,設定した。

以下,こちらこちら,およびこちらを参照して,自分が行なった作業を記録として残す(以上の参照サイトに掲載されている以上の情報は何もない。あしからず。)。

[1] Inkscape\share\extensions\textext.py の 54 行目 "import inkex" の下に以下を追加:

import codecs

[2] 735 行目を

            #f_tex.write(texwrapper)

とコメントアウトして,その下に以下の 2 行を追加:

            sjis_tex = codecs.getwriter('shift_jis')(f_tex)
            sjis_tex.write(texwrapper)

これで文字コードを sjis に変換して Tex に渡すことができる。
ちなみに python では行頭の空白も揃えないと正常に動かないので注意(タブなんかを使わないこと。)。

[3] 742 行目を

        #exec_command(['pdflatex', self.tmp('tex')] + latexOpts)

とコメントアウトして,以下の 2 行を追加:

        exec_command(['platex', self.tmp('tex')] + latexOpts)
        exec_command(['dvipdfmx', self.tmp('dvi')])

これは日本語を処理できない pdflatex の代わりに platex と dvipdfmx を用いるための設定。

[4] 863 行目 の "# Exec pstoedit: pdf -> svg" の下に

        exec_command(['gswin32c', '-dSAFER', '-q', '-dBATCH', '-dNOPAUSE',
                      '-sDEVICE=epswrite', '-dEPSCrop', '-r9600',
                      '-sOutputFile='+self.tmp('eps'), self.tmp('pdf')])

を追加。さらに,その下の3行を以下のように変更:

        exec_command(['pstoedit', '-f', 'plot-svg',
                      self.tmp('eps'), self.tmp('svg')]
                     + pstoeditOpts)

ちなみに変更箇所は 2 行目の "self.tmp" の中を 'pdf' から 'eps' にしただけ。これにより,フォントをアウトライン化して eps 形式で吐き出す。

[5] 以上の書き換えを行なった python のスクリプト "textext.py" を別名 "textext-jp.py" として保存。また,この "textext-jp.py" に対応させるため,"textext.inx" をコピーしてファイル名を "textext-jp.inx" とし,中身を適宜書き換え。

これにより,日本語を使いたいときはエクステンションとして textext-jp を,そうでないときは従来通り textext を用いることができる。

これについてはこちらを参照したが,このことでどの程度のご利益があるかは不明。少なくとも日本語を用いない場合は,今回新しく作成した拡張ファイルを使わなくても良いので,これまで安定して動いていた環境のまま,ということにはなる。


以上でおしまい。ちなみに,出力例は下図の通り。


これで教科書の挿絵が作れそうだ(ちなみに,上の例は執筆中の教科書とは何の関係もない。)。

0 件のコメント:

コメントを投稿