Illustrator の図を TeX に †TeX から Illustrator の AI ファイルを張り込む †経験上 Illustrator で作成した図(特に EPS)がうまく TeX に張り込めないという事が多いです. そこには uplatex + dvipdfmx + ghostscript + Illustrator + EPS の連鎖反応的問題があるように思います. TeX Live 2016 以降であれば AI ファイルは直接張り込む事が可能です. 手順を以下に示します.
TeX から Illustrator の fig.ai を張り込むために次のような TeX ファイルを作成します. BoundingBox に CropBox を使用する場合は \documentclass[uplatex]{jsarticle} \usepackage[dvipdfmx]{graphicx} \begin{document} \begin{center} \includegraphics[pagebox=cropbox]{fig.ai} \end{center} \end{document} BoundingBox に ArtBox を使用する場合は \documentclass[uplatex]{jsarticle} \usepackage[dvipdfmx]{graphicx} \begin{document} \begin{center} \includegraphics[pagebox=artbox]{fig.ai} \end{center} \end{document} 約束事として
を守るだけです. なぜ Illustrator の AI ファイルを直接張り込めるの?(原理的な話) †手元の fig.ai を少し調べてみます.まずは Unix の伝統的なコマンド file で調べてみます. file fig.ai すると fig.ai: PDF document, version 1.6 という出力が得られます.要するに fig.ai の中身は単なる PDF だったという訳です. head -1 fig.ai | strings とすると %PDF-1.6 となることから,PDF のバージョン 1.6 のファイルである事も判明します. cat fig.ai | strings | less とかやると,もろ PDF の中身が見えます. そこで,この fig.ai の BoundingBox を取得する事を考えます.試しに cat fig.ai | strings | grep -e 'Box' とすると,例えば次のように表示されます. /MediaBox [ 0 0 592 840 ] /ArtBox [ 5.96045 10.56055 586.03906 829.43994 ] /TrimBox [ -1 -1 594 841 ] %%BoundingBox: 5 10 587 830 %%HiResBoundingBox: 5.9604 10.5605 586.0391 829.4399 %AI3_TemplateBox: 296.5 419.5 296.5 419.5 %AI3_TileBox: 12 12 581 828 %%BoundingBox: 5 10 587 830 %%HiResBoundingBox: 5.9604 10.5605 586.0391 829.4399 /FontBBox [ 0 -137 1000 859 ] 少なくとも Illustrator が吐き出す領域情報(ページボックス)には
の五つの情報が含まれているようです.ここでは単純に %%BoundingBox を使うようにしています.トンボを出していたり,何かしらの特殊な処理をしている場合は dvipdfmx による変換の時に ** WARNING ** "TrimBox" different from current CropBox found. ** WARNING ** TrimBox (PDF): [ -1 -1 594 841 ] ** WARNING ** CropBox/MediaBox (PDF) : [ 0 0 592 840 ] ** WARNING ** "ArtBox" different from current CropBox found. ** WARNING ** ArtBox (PDF): [ 5.96045 10.5605 586.039 829.44 ] ** WARNING ** CropBox/MediaBox (PDF) : [ -1 -1 594 841 ] の様な警告を頼りに調整をしてください. これは fig.ai の中に記述されている描画領域情報 /TrimBox?, /CropBox?, /MediaBox?, /ArtBox? に統一性がないためです.dvipdfmx はメインで /Cropbox を使っています.画像の切り抜きが変な場合は,上記の警告で表示されている TrimBox? や MediaBox?, ArtBox? のいずれかの値を用いてください. 付録 Illustrator のバージョン関係の話 †
コメント †
|