読者です 読者をやめる 読者になる 読者になる

TeX Alchemist Online

TeX を使って化学のお仕事をしています。

Illustratorで描いた図をTikZに変換

TeX TikZ 化学 Illustrator

TikZでマグネチックスターラー(下写真*1)の図を描きたいと思いました。

f:id:doraTeX:20140422092215j:plain

しかしこれをTikZを使って座標で一からゴリゴリ描いていくのは流石に辛い……というわけで,若干チートして,まずは Adobe Illustrator を使って普通に描き,それからTikZに変換するという手法を試みてみました。

まずはIllustratorで描く

まずはIllustratorでこんな感じに描きます。

f:id:doraTeX:20140422093008p:plain
そして,これをSVG形式で保存します。

SVGをTikZに変換

準備

次に,このSVGをTikZに変換することを試みます。Stack Exchange で変換法を調べた結果,こうすればよさそうだと分かりました。

  1. ここから inkex.py, simplepath.py, simplestyle.py をダウンロード。
  2. ここから tikz_export.py をダウンロード。
  3. tikz_export.py を実行するためには,Python 2.7 の lxml というライブラリが必要なようなので,以下の手順でインストール(以下は OS X Mavericks 10.9.2 で確認)。
$ sudo easy_install pip
$ sudo bash
# export CFLAGS=-Qunused-arguments
# pip install lxml

(またはMacPorts

$ sudo port install python27
$ sudo port install py27-lxml

という手も。)

変換実行

先程ダウンロードした inkex.py, simplepath.py, simplestyle.py と同じディレクトリに MagneticStirrer.svg を保存し,次のコマンドで変換を実行。

$ python -B tikz_export.py MagneticStirrer.svg -o MagneticStirrer.tex

MacPorts から python27 をインストールした場合は

$ python2.7 -B tikz_export.py MagneticStirrer.svg -o MagneticStirrer.tex

で。)

変換結果(1回目)

とりあえず変換して生成されたTikZソースをコンパイルした結果は次の通り。

f:id:doraTeX:20140422104504p:plain

概ね雰囲気は再現できているものの,

  • 塗りがブラック100%のオブジェクトがなぜか消えている。
  • グラデーション塗りが飛んでいる。
  • クリッピングマスクが適用されていない。

など,細かいところが色々と不十分です。

変換結果(2回目)

そこで,

  • フォントまわりのトラブルを避けるためテキストオブジェクトは全てアウトライン化。
  • 塗りがブラック100%のオブジェクトは99%にする。
  • グラデーション塗りは使わない。
  • クリッピングマスクは解除し手動でクリップ。

など,変換しやすいように整えて再チャレンジした結果が以下の通り。

f:id:doraTeX:20140422105435p:plain

今度はいい感じに再現されました!

生成ソース

この変換で生成されたTikZソースは,以下のように,1000行以上もの \path の羅列となりました。

  • はたしてそこまでしてTikZで描く必要があるのか?
  • Illustratorで描いたのであれば初めからそのPDFを直接 \includegraphics で貼ればよいのでは?

といったツッコミはご容赦ください(^^; 単にやってみたかっただけです……。
それに,TikZソース化しておけば,パラメータを動かしてアニメーション化するといった応用も考えられますね。

pLaTeX + dvipdfmx でPDF化するときには,先頭行を

\documentclass[dvipdfmx]{article}

に変更のこと。)

*1:Wikimedia Commons よりRuhrfisch氏のGFDLの画像を引用。