綺麗な数式の画像が欲しい:TeX2img のパチもん Tcl/Tk ラッパー

高分子科学専攻 助教 川口辰也

はじめに

発表資料用に「綺麗な」数式の画像を作るのって面倒くさい…私だけではないはず

WindowsとMacにはTeXを利用して美しい数式の画像(だけではないが)を作成できる「TeX2img」というソフトウェアがあります。
ネットに繋がっているのであればTeXclipというWebサービスもあります。これだと自分のパソコンにTeXをインストールしてなくても美しい数式の画像が得られるので便利。
でも電車の中とか,ネットに繋がっていない時にも作業したいんだよね。
私はヘナチョコLinuxerであり,手軽に使える「TeX2img」みたいなのがLinux用に欲しかったが見当たらない。
真のLinuxerは複雑なこともちゃちゃっとスクリプトを書いて終わらせるのでそんなものは要らないし作らない…のかなあ?

前世紀末からパソコンではLinuxをメインに使っているのですが,当時からLinuxに限らずWinでもMacでもオフィススイート付属の数式描画は微妙でありました。
MS Officeのは入力方法は楽になったけども描画はやっぱりイマイチ美しくない。

TeXでなら綺麗な数式が描けるのは知られています。
理系ならTeXがデフォルトでしょって?いや,生物系や化学系はそんなことないので…。
(Libre Officeは機能拡張でTeXで描く数式が取り込めるのがあるので実は切実には困っていない)

TeXで数式部分のコードを書くことはすぐできるけど,そこ以外の部分が大変で…
TeXコードのプリアンブル部分はどのパッケージを入れるのかとか,関連するコマンド名とオプションはどうやったとか…
つまり面倒くさい。(遠い目)

しゃーない。作るか

unixには「言い出しっぺの法則」の伝統があるし,無ければ自分で作るのが筋ではある。
…tclもスクリプトだよね。ヨシ,これで私も真のLinuxer(笑)

Lesser TeX2img--

TeX2imgっぽくて機能がかなり少ないのでLesserのおまけにマイナスを2つ。
一応,Linux・Windows・Macで動くと思います。Ubuntu 20.04LTS(+ TeXLive 2020)で使用できています。

tclスクリプトって単なるテキストファイルなので読んで見れば分るとおり,難しいことはしていません。1
出力されるファイルフォーマットをもっと増やすとか,フォントの種類を変えてみるとか,改造も簡単なのでご自由に利用ください。

どんなことをするプログラムか

LaTeXの書式に従って入力したものをコンパイルし,クロップしたPDFファイルを出力する。
デフォルトのフォントは25ptでクロップのマージンは1ptである。
コンパイル前にチェックを入れておくとPNG形式(1200dpi)・SVG形式(文字はアウトライン化)・アウトライン化PDF(但し1ページ目のみ)でのファイルもできる。
メニューにあるフォントを選ぶことができる。

ということをするためにlualatexとghostscriptとmutoolを呼び出すラッパーです。
(数式描画が目的でしたが,普通に日本語文章も行けます)

必要とする環境

WindowsでもMacでもLinuxでも下の環境が整っていればたぶん動きます。が,WinとMacは素直にTeX2imgをインストールすればもっと幸せになれます。

Tcl/Tkで書いているので

後は呼び出されるプログラムである以下のもの

各プログラムのバージョンはどこまで古いのがOKかの確認のしようがなかったのですが,2016年以降リリースは大丈夫っぽいです。

使用法

tkの操作が入っているtclスクリプトを動かす操作をします。端末でスクリプトの置いてあるディレクトリで

wish lessertex2img--.tcl

で起動。tkによるGUIが表示されます。

「outline化PDF」・「png」・「svg」のチェックボックスにチェックを入れておけば,TeXが吐き出した後クロップされたPDFを元にそれぞれの形式の図も出力されます。

TeXのソースコードを書き込んでから「コンパイル」ボタンをクリックするとTeXのソースを保存するためのファイル名を聞いてくるので適当に名付ける。拡張子「.tex」を忘れたら勝手に付けます。「Save」をクリック。このファイルがコンパイル元になるので,図の元を知りたくなったときにはこれを見れば良い。

上手く行けばその旨の表示が出る。

PDFファイルを見てみると綺麗にクロップされています。

TeXのコンパイルに問題があればエラーの表示が出る。
問題が有った場合は下のログやTeXのコンパイル元ファイルを見て原因を探って修正してコンパイルする。

既にあるTeXのソースコードをファイルメニューの「開く」で選んでテキストフィールドに読み込むこともできる。

設定

上にも書いたように,「outline化PDF」・「png」・「svg」のチェックボックスにチェックを入れておけばそれぞれの形式の図も出力される。

「数式フォント(P)」メニューからフォントを選ぶことができる。セリフ系5種とサンセリフ系4種,「Concrete&Euler」を入れてある。

とはいえComputer Modern(Latin Modern)が一番綺麗だと思うなあ(*個人の感想です)

詳細設定

編集メニューの詳細設定を選択して表示されるウィンドウでLatexコマンドとヘッダ部分(プリアンブル)・フッタ部分(特に意味はないが)およびマージンを編集できる。

Latexコマンドは,ここの文字列の「%s」がファイルのベース名(拡張子「.tex」を除いた部分)に置き換えられる。
このコマンドでPDFファイルを出力しないと次の処理に進まないので,変えるとしても「pdflatex」「xelatex」「lualatex」のいずれかにするのが悩まない秘訣3
デフォルトで「lualatex」を使い,プリアンブルに「luatexja-*」パッケージを入れていることで分るように,数式だけでなく普通に日本語の文章も行ける。

ヘッダ部分は使いたいパッケージを追加するなど細かい調整に利用されたし。
ここの文字列「FONTSETTING」が「数式フォント(P)」で選んだフォントに合わせて「\usepackage{…}」に置換される。 「%」でコメントアウトしてメニューにない全く別のフォントを使うようにしても良い。

マージンはPDFのクロップの際の値。数字1つで全周,数字2つで(左右)・(上下)の,数字4つで左上右下の順のマージン量を指定する。
単位はbig point (1 bp = 1/72 in = 0.3527 mm)でDTPや普通のワープロなどで使われる1 ptに当たる。TeXの1 ptは1/72.27 in。

描画

まあ,TeXの出力なので普通に綺麗です。





  1. …最近はTcl/Tkで書く人がおらんかな?マルチプラットフォームでGUIが簡単に書けて便利なんやが。
    Tclである必要はなくてPython/TkinterでもRuby/Tkでも良いけれども。↩︎

  2. Macに標準で入っているのがなにか不思議。Macはショートカットキーのバインディングを修正しないといけないかもしれないがそこは未確認。Linuxは昔は普通に入っていたけど最近のディストリビューションは素だと入ってないこともある?↩︎

  3. どうしてもplatex & dvipdfmxを使いたい場合は次のようにする
    ファイルメニューから一度保存を選び,例えば「ex1.tex」として保存し,ここのLatexコマンドの部分を
    「sh -c “platex %s && dvipdfmx ex1”」
    とする。「%s」は1つだけにしないとエラーを吐くので注意。ファイル名が分かっているなら直打ちしてしまえ,ということ。
    もちろんプリアンブルはplatex & dvipdfmx用に書き換えることを忘れないこと(下図のように)。

    それから「コンパイル」ボタンをクリックすると必ずエラーの表示がされるが(TeXコードとLatexコマンドが正しければ)処理は進 んでいる。
    ログにdviにoutputしたと表示されるので進んでいるのが分る↩︎