この記事は TeX & LaTeX Advent Calendar 2014 の3日目の記事です。2日目の鹿野さんからバトンを受け継ぎました。4日目はCardinalXaroさんです。
今年の TeX & LaTeX Advent Calendar の重点テーマは 「このパッケージがスゴイ!」 となっていますが,パッケージの話は12日目に述べる予定なので,今日は少し毛色の異なる話を述べようと思います。
注意
この記事は TeX Live 2014 のみを対象としており,TeX Live 2013 以前,および TeX Live 2015 以降では成立しません。
- TeX Live 2013 以前ではこの記事で述べられている「回避法」は使えません。
- TeX Live 2015 以降,および W32TeX 2014/12/03版 以降では, この記事で述べられている「問題点」は既に解決されており,このような回避法自体が必要なくなりました。
そこで,この記事で述べられている内容を,TeX Live 2015 以降および W32TeX 2014/12/03版 以降を対象とするように書き換えた改訂版記事を用意しました。
目次
はじめに
この記事の記述は TeX Live 2014 に基づいています。この記事で述べる方法は TeX Live 2013 以前には適用できませんのでご注意ください。また,実験環境は次の通りです。
- OS X Yosemite 10.10.1
- Adobe Illustrator CS6
背景
昨年の Advent Calendar の記事でも述べましたが,日頃の化学教材の作成にあたり,図版作成には主に Adobe Illustrator を使っています。その際,次のように,少しずつ異なる同系統の図をたくさん用意する必要がある場面が多々あります。
その際,これらを1枚1枚別々のファイルにするのではなく,上図のように複数ページ(アートボード)を持つIllustratorファイルとして作成した方が,図版作成の作業効率やファイル管理の観点からは都合が良いと言えるでしょう。
しかし,日本で主流の (u)pLaTeX + dvipdfmx のワークフローの場合,このような複数ページ図版の取り扱いはなかなか厄介です。
この記事では,この問題に対する一つの解決策を提示しようと思います。
現状の何が問題なのか
まず,現状の TeX Live 2014 の仕様を概観し,「何が問題なのか」を整理しましょう。それを飛ばしてさっさと解決策を知りたい方はこちら。
単一ページPDFの \includegraphics の場合
\usepackage[dvipdfmx]{graphicx}
とした場合,\includegraphics
は次のような挙動をします。
\includegraphics[bb=0 0 100 100]
のように,TeXソースにbb
オプションを直接与えた場合には,そのバウンディングボックス情報が組版に用いられる。(この方法をとるためには,「このPDFファイルに対して dvipdfmx が認識するバウンディングボックスはどのようなサイズか」を事前に調べておく必要があります。)- 事前に extractbb によって
画像ファイル名.xbb
というファイルを生成している場合,そこに書き込まれているバウンディングボックス情報が用いられる。 - どちらにも該当しない場合,コンパイル時にその場で extractbb が起動され*1,その場で測定したバウンディングボックス情報が標準出力からのパイプ入力を介してTeX側に伝えられる。(xbbファイルは生成されない。)
このうち,利便性が高いのは 3. の extractbb の自動起動に任せる方法です。というのは,1. や 2. の方法の場合,図版を修正して大きさが変われば,その都度バウンディングボックス情報を更新せねばなりません。3. の方法の場合,extractbb を毎回起動することによる若干のパフォーマンス低下はありますが,図版を頻繁に更新する状況下では,3. の方法にはそのデメリットを補って余りある利便性があると言えるでしょう*2。
複数ページPDFを \includegraphics しようとした場合
\includegraphics
自体には,page
オプションによって複数ページPDFの任意ページの図版を貼り込むインターフェースが用意されています。また,dvipdfmxにも,「複数ページPDFの指定のページを挿入する」機能は用意されているのです。しかし,問題はバウンディングボックス情報です。extractbbでは,先頭ページのバウンディングボックスしか調べることができないのです。正しく図版を貼り込むためには,指定ページのバウンディングボックスを取得し,それをTeX側に伝えるという作業が必要ですが,extractbbがそれに対応しないため,上記 1. 2. 3. の方法のうち,2. と 3. は封じられます。したがって,残る手段は 1. の bb
オプションの手動指定のみということになります。
bbの手動指定も困難
しかし,bb
オプションの手動指定という方法にも大きな問題があります。図版を更新するたびに毎回情報の更新が必要という点はもちろん,それ以前に,そもそも「dvipdfmxが認識するバウンディングボックス情報の正解をつきとめるのが難しい」という問題があるのです。
PDFの5つのナントカBox
「dvipdfmxが認識するバウンディングボックス情報の正解をつきとめるのが難しい」ことの理由を理解するには,まずPDFの5つのBoxに関する複雑な事情を理解する必要があります。(ここはややこしいですので,読み飛ばしても問題ありません。)
PDFは,各ページごとに,次の5種類のボックス(通称ナントカBox)を持ちます(ナントカBoxの記事より引用)。
- MediaBox: 用紙(等の媒体)に実際に印刷される領域。一般の人が行う(非専門的な)印刷行程ではこのボックスのみが指定(および使用)されることが多く,その場合は「用紙サイズ」を表す。
- CropBox: 最も一般的な意味での,「そのページの(外形を込めた)内容」を表す領域。
- BleedBox: 専門的な印刷工程における,「断ち落としサイズ」に相当する領域。
- TrimBox: 専門的な印刷工程における,「仕上がりサイズ」に相当する領域。
- ArtBox: PDF 文書を画像として用いる場合の,「その画像の(外形を込めた)内容」を表す領域。
これら5つのBoxのサイズが全て一致しているならば,迷うことなく \includegraphics
の bb
オプションにその値を書き込めばよいのですが,問題は5つのBoxのサイズが一致しない場合に,どのBoxをdvipdfmxが利用するかという点です。それを正しくbb
オプションに指定しないと,図版が適切に配置されません。
Box省略時の規則(PDFの仕様)
まず,これら5つのBoxのサイズが全て明示的に記述されているとは限りません。省略された場合は,次のような規則で決まることがPDFの仕様で規定されています。
- MediaBox の値は必ず明示される。
- CropBox の値が明示されていない場合は,MediaBox と同じと解釈される。
- BleedBox,TrimBox,ArtBox の値が明示されていない場合は,CropBox と同じと解釈される。
dvipdfmxのBoxの選択
一方,dvipdfmxがTeX文書に図版を挿入する際に選択するBoxは,PDFの仕様とは無関係に,次の規則で決まります。
CropBox→ArtBox→TrimBox→BleedBox→MediaBox の順で明示されている最初のものを使う。
したがって,\includegraphics
の bb
オプションには,その明示された最初のBoxの数値を書き込む必要があるのです。
ナントカBoxの調べ方
PDFの5つのナントカBoxのサイズは,例えば Xpdf に付属の pdfinfo というツールで調べることができます。例えば,あるPDFの2ページ目のナントカBoxのサイズを取得するには,次のようにします。
$ pdfinfo -box -f 2 -l 2 fig.pdf Title: Empty Creator: Adobe Illustrator CS6 (Macintosh) Producer: Adobe PDF library 10.01 CreationDate: Thu Oct 2 11:41:16 2014 ModDate: Tue Dec 2 23:10:16 2014 Tagged: no Form: none Pages: 16 Encrypted: no Page 2 size: 171.381 x 132.312 pts (rotated 0 degrees) Page 2 MediaBox: 0.00 0.00 171.38 132.31 Page 2 CropBox: 0.00 0.00 171.38 132.31 Page 2 BleedBox: 0.00 0.00 171.38 132.31 Page 2 TrimBox: 8.50 8.50 162.88 123.81 Page 2 ArtBox: 27.32 24.10 129.97 100.61 File size: 290892 bytes Optimized: no PDF version: 1.5
このようにして,5つのBoxのサイズが分かりました。
しかし,問題は,どのBoxが明示指定されたBoxで,どのBoxが暗黙に決定されたものかこの出力からは判断できないという点です。pdfinfoは,PDFの仕様に従い,非明示のBoxに対しては,他のBoxから暗黙的に決定されたBoxの値を表示しています。ですが,「CropBox→ArtBox→TrimBox→BleedBox→MediaBox のうち最初に明示されたものはどれか」が判断できないと,「dvipdfmxが利用する『正解』のBox」がどれであるかが判断できないのです。
例えば,上記の例の出力
Page 2 MediaBox: 0.00 0.00 171.38 132.31 Page 2 CropBox: 0.00 0.00 171.38 132.31 Page 2 BleedBox: 0.00 0.00 171.38 132.31 Page 2 TrimBox: 8.50 8.50 162.88 123.81 Page 2 ArtBox: 27.32 24.10 129.97 100.61
の場合,ArtBoxのサイズが他と異なりますので,ArtBoxが明示指定されていることが分かります。しかし,この出力からは,CropBoxがこの値に明示的に指定されているのか,MediaBoxから暗黙に決まったのかが判断できません。CropBoxが明示指定されているのであればdvipdfmxはCropBoxを使いますが,暗黙に決まったのであればArtBoxを使います。どちらであるかが判断できない以上,\includegraphics
の bb
オプションに書き込むべき値がどちらであるのか分からないのです。
Illustrator の図版のナントカBox
Illustrator のデフォルトの設定でPDF/AIファイルを保存した場合*3,5つのナントカBoxの情報は通常次のようになるようです*4。
- MediaBox:アートボードの赤枠に明示指定される。
- TrimBox:アートボードの白い部分に明示指定される。
- ArtBox:図版自体を取り囲む外接長方形とアートボードの白い部分の共通部分に明示指定される。
- CropBox:明示指定されず,MediaBoxの値から暗黙に決まる。
- BleedBox:AI形式の場合はMediaBoxと同じ値に明示指定される。PDF形式の場合は明示指定されず,(かつCropBoxも明示指定されていないので結果的に)MediaBoxと同じ値に暗黙に設定される。
したがって,上記の
CropBox→ArtBox→TrimBox→BleedBox→MediaBox の順で明示されている最初のものを使う。
というルールに従えば,Illustratorの図版に対しては,dvipdfmxは通常ArtBoxをバウンディングボックスとして使用することが分かります。
他のツールでトリミングした場合
しかし,こうしてIllustratorで作成した図版を,さらに他のツールで編集すると,状況は複雑化します。手元で実験してみると次のようになりました。
Preview.app で「範囲選択」→「切り取り」した場合
- CropBox が新たに明示指定され,選択された範囲に指定される。
- MediaBox, BleedBox, TrimBox, ArtBoxは変更されない。
Adobe Acrobat の「トリミングツール」でトリミングした場合
- CropBox が新たに明示指定され,選択された範囲に指定される。
- MediaBox は変更されない。
- BleedBox, TrimBox, ArtBox は CropBox と同じ値に変更(明示指定)される。
いずれにせよ,このようなトリミングを行うと,新規にCropBoxが明示指定されます。その結果,dvipdfmxが使用するバウンディングボックスはCropBoxに変わります。したがって,事後に他のツールで編集される可能性がある場合,Illustrator図版に対して常にArtBoxをbbに指定しておけばよいとは言えないことが分かります。
問題点のまとめ
さて,現状の問題点の列挙が長くなりましたので,まとめましょう。
\includegraphics[page=2]
のようにして2ページ目以降の図版を貼り込むことは可能だが,2ページ目以降はextractbbによるバウンディングボックス情報の自動取得ができない。\includegraphics[page=2,bb=0 0 100 100]
のように手動指定しようと思っても,bb
の値にどのBoxの値を用いればよいかが一概に判断できない。- 運用によって,仮に使用するBoxをArtBoxに固定できるとしても,
bb
オプションを手動指定するのであれば,図版を更新するたびにいちいちArtBoxの新たな値を調べ直して,TeXソースのbb指定を毎回手動で更新せねばならず大変面倒。
解決策:pdfinfo を拡張する
この問題に関し,以前こんなことを言っていました。
@ti5942 pdfinfo, ナントカBoxが簡単に確認できて便利ですね!ただ、dvipdfmxでは明示されたBoxかどうかによって挙動が違うので、各ナントカBoxが明示指定されたものかPDFの仕様によって暗黙に決まったものなのかを明記してくれる機能があれば嬉しいところです。
— Yusuke Terada (@doraTeX) August 13, 2014
幸い,pdfinfo はオープンソースのツールなので,必要だと思う機能は自分で追加することができます。そこで,pdfinfo の独自拡張版を作成しました。
拡張版 pdfinfo の新仕様
この拡張版は,オリジナルの pdfinfo を次のように拡張しています。
- デフォルトで全ページのボックス情報を出力します。
- 明示指定されておらず,暗黙に決定されたナントカBoxには
[Implicit]
というラベルを付けて出力します。 - 各ページについて,dvipdfmx が選択するBoxには
[dvipdfmx BB]
というラベルを付けて出力します。 - 新オプション
-extractbb
を指定すると,extractbb -O
の動作を模倣します。 すなわち,-f
オプションで指定されたページの,dvipdfmxが認識するバウンディングボックスの情報を,extractbb と同じ書式で標準出力にアウトプットします。
まず,1. 〜 3. の改良により,pdfinfo の出力は次のようになります。
$ pdfinfo fig1.pdf Title: fig1 Creator: Adobe Illustrator CS6 (Macintosh) Producer: Mac OS X 10.10.1 Quartz PDFContext CreationDate: Wed Dec 3 01:55:15 2014 ModDate: Wed Dec 3 01:55:15 2014 Tagged: no Form: none Pages: 3 Encrypted: no Page size: 242.189 x 166.796 pts (rotated 0 degrees) ------------------------------------------------------------------------ Page 1 MediaBox: 0.00 0.00 242.19 166.80 Page 1 CropBox: 0.00 0.00 242.19 166.80 [Implicit] Page 1 BleedBox: 0.00 0.00 242.19 166.80 [Implicit] Page 1 TrimBox: 8.50 8.50 233.69 158.29 Page 1 ArtBox: 56.76 52.38 187.18 114.42 [dvipdfmx BB] ------------------------------------------------------------------------ Page 2 MediaBox: 0.00 0.00 224.28 117.61 Page 2 CropBox: 0.00 0.00 224.28 117.61 [Implicit] Page 2 BleedBox: 0.00 0.00 224.28 117.61 [Implicit] Page 2 TrimBox: 8.50 8.50 215.78 109.11 Page 2 ArtBox: 48.49 8.50 156.40 55.23 [dvipdfmx BB] ------------------------------------------------------------------------ Page 3 MediaBox: 0.00 0.00 159.43 215.19 Page 3 CropBox: 7.90 85.69 100.99 183.20 [dvipdfmx BB] Page 3 BleedBox: 0.00 0.00 159.43 215.19 Page 3 TrimBox: 8.50 8.50 150.93 206.69 Page 3 ArtBox: 38.39 23.82 137.23 149.43 ------------------------------------------------------------------------ File size: 11395 bytes Optimized: no PDF version: 1.3
これにより,各ページで dvipdfmx が用いるBoxがどれであるかが一目瞭然に分かります。
しかし,「正解のボックス」が分かったとしても,\includegraphics[page=2,bb=0 0 100 100]
のように手動指定するのでは,図版の更新に追従できないという問題が依然として残ります。
そこで,より重要となってくるのが 4. の改良点です。これは pdfinfo に extractbb の挙動を模倣させることにより,コンパイル時の2ページ目以降のバウンディングボックス自動測定を可能とします。したがって,TeXのコンパイル時にこの拡張版 pdfinfo が自動起動するよう設定しておくことにより,どのページでも適切なバウンディングボックス情報をその場で測定して組版することが可能となります。これにより,図版の更新にも自動的に追従できます。
$ pdfinfo -extractbb -f 2 fig1.pdf %%Title: fig1.pdf %%Creator: pdfinfo version 3.04 %%BoundingBox: 48 9 156 55 %%HiResBoundingBox: 48.488300 8.503910 156.398000 55.230500 %%PDFVersion: 1.3 %%Pages: 3 %%CreationDate: Wed Dec 3 10:57:47 2014
-extractbb オプションをつけると extractbb の出力を模倣します
使用法解説
1. 拡張版 pdfinfo のバイナリをダウンロード または ソースをコンパイル
拡張版 pdfinfo のMac用バイナリはGitHubのリリースページに置いてあります。10.6 SnowLeopard以上で動くようになっています。pdfinfo.zip
をダウンロードし,展開して出てくる pdfinfo
を,パスが通ったディレクトリ(extractbbと同じディレクトリなど)に配置してください。
その他のOSの場合,GitHubレポジトリからソース一式をダウンロードしてコンパイルします*5。
$ ./configure $ make pdfinfo
すると,xpdf ディレクトリの中に pdfinfo の実行バイナリが生成されますので,適切なディレクトリに配置してください。
2. pdfinfo の自動起動設定
次に,TeXのコンパイル時に,extractbb と同様に pdfinfo が自動起動することを許可しておきましょう。
extractbb の自動起動を許可したときと同様に,texmf.cnf
を編集して pdfinfo の自動起動を許可します。
shell_escape_commands = \ bibtex,bibtex8,bibtexu,upbibtex,biber,\ kpsewhich,\ makeindex,mendex,texindy,xindy,\ mpost,upmpost,\ repstopdf,epspdf,extractbb,pdfinfo
3. graphicx パッケージの dvipdfmx 用ドライバの改造版を取得
\usepackage[dvipdfmx]{graphicx}
とした場合,graphicx パッケージのドライバである dvipdfmx.def
というファイルが読み込まれます。この中で extractbb の自動起動が規定されています。
これを,PDFおよびAIファイルに対しては pdfinfo が起動するように改変したものは,こちらからダウンロードできます。
これを適切な場所に配置し,必要に応じて mktexlsr
します。とりあえずは,コンパイルしたいTeXソースと同じディレクトリに置いておけば動きます。
参考:dvipdfmx.def の改変点
これは,オリジナルの dvipdfmx.def
を次のように改変しています。
【オリジナル】
\immediate\openin\@inputcheck="|extractbb -O \Gin@base\Gin@ext"%
【改造版】
\def\@tempa{!}% \ifx\Gin@page\@tempa \def\@tempa{}% \else \def\@tempa{-f \Gin@page\space}% \fi \def\@temp@ext@pdf{.pdf}% \def\@temp@ext@PDF{.PDF}% \def\@temp@ext@ai{.ai}% \def\@temp@ext@AI{.AI}% \ifnum0% \ifx\Gin@ext\@temp@ext@pdf1\fi \ifx\Gin@ext\@temp@ext@PDF1\fi \ifx\Gin@ext\@temp@ext@ai1\fi \ifx\Gin@ext\@temp@ext@AI1\fi>0\relax \immediate\openin\@inputcheck="|pdfinfo -extractbb \@tempa \Gin@base\Gin@ext"% \else \immediate\openin\@inputcheck="|extractbb -O \Gin@base\Gin@ext"% \fi
これにより,拡張子 .pdf / .PDF / .ai / .AI のファイルに対しては pdfinfo が起動するようになっています*6。一方,.png や .jpg などのビットマップ画像に対しては,引き続き extractbb を使用してサイズ測定します。
テスト
テスト用ファイルの説明
テスト用レポジトリの右下の Download ZIP
ボタンを押して,テスト用ファイル一式をダウンロードしてください。
この中には,fig1.pdf
, fig2.ai
という2つの画像ファイルが入っています。これらは,Illustrator で次のように3つのアートボードを持つ書類として作成したものです。
Illustratorで作成した3ページからなる図版
この Illustrator 書類を,PDFおよびAI形式で書き出しました。ただし,fig1.pdf
については,Illustrator で保存した後,Preview.app で開き,3ページ目の一部を範囲選択してトリミングしました。
その結果,fig1.pdf
の Preview.app 上での見た目は次のようになっています。
fig1.pdf の3ページ目を Preview.app でトリミングした
なお,Preview.app 上で見えているのはCropBox(明示の場合はその値,非明示の場合はMediaBoxから暗黙に決められる値)の領域です。
テスト用ファイルのナントカBox
テスト用ファイルのナントカBoxは次のようになっています。
$ pdfinfo fig1.pdf ------------------------------------------------------------------------ Page 1 MediaBox: 0.00 0.00 242.19 166.80 Page 1 CropBox: 0.00 0.00 242.19 166.80 [Implicit] Page 1 BleedBox: 0.00 0.00 242.19 166.80 [Implicit] Page 1 TrimBox: 8.50 8.50 233.69 158.29 Page 1 ArtBox: 56.76 52.38 187.18 114.42 [dvipdfmx BB] ------------------------------------------------------------------------ Page 2 MediaBox: 0.00 0.00 224.28 117.61 Page 2 CropBox: 0.00 0.00 224.28 117.61 [Implicit] Page 2 BleedBox: 0.00 0.00 224.28 117.61 [Implicit] Page 2 TrimBox: 8.50 8.50 215.78 109.11 Page 2 ArtBox: 48.49 8.50 156.40 55.23 [dvipdfmx BB] ------------------------------------------------------------------------ Page 3 MediaBox: 0.00 0.00 159.43 215.19 Page 3 CropBox: 7.90 85.69 100.99 183.20 [dvipdfmx BB] Page 3 BleedBox: 0.00 0.00 159.43 215.19 Page 3 TrimBox: 8.50 8.50 150.93 206.69 Page 3 ArtBox: 38.39 23.82 137.23 149.43 ------------------------------------------------------------------------
$ pdfinfo fig2.ai ------------------------------------------------------------------------ Page 1 MediaBox: 0.00 0.00 242.19 166.80 Page 1 CropBox: 0.00 0.00 242.19 166.80 [Implicit] Page 1 BleedBox: 0.00 0.00 242.19 166.80 Page 1 TrimBox: 8.50 8.50 233.69 158.29 Page 1 ArtBox: 56.76 52.38 187.18 114.42 [dvipdfmx BB] ------------------------------------------------------------------------ Page 2 MediaBox: 0.00 0.00 224.28 117.61 Page 2 CropBox: 0.00 0.00 224.28 117.61 [Implicit] Page 2 BleedBox: 0.00 0.00 224.28 117.61 Page 2 TrimBox: 8.50 8.50 215.78 109.11 Page 2 ArtBox: 48.49 8.50 156.40 55.23 [dvipdfmx BB] ------------------------------------------------------------------------ Page 3 MediaBox: 0.00 0.00 159.43 215.19 Page 3 CropBox: 0.00 0.00 159.43 215.19 [Implicit] Page 3 BleedBox: 0.00 0.00 159.43 215.19 Page 3 TrimBox: 8.50 8.50 150.93 206.69 Page 3 ArtBox: 38.39 23.82 137.23 149.43 [dvipdfmx BB] ------------------------------------------------------------------------
fig1.pdf
の3ページ目だけが,CropBoxが明示指定されていることが分かります。
テスト実行
同梱の test.tex
は次のようなソースです。
\documentclass[twocolumn]{article} \usepackage[dvipdfmx,hiresbb]{graphicx} \begin{document} \fboxsep=0pt \fboxrule=1pt \parindent=0pt \section{fig1.pdf} \fbox{\includegraphics[page=1,clip]{fig1.pdf}}\par \fbox{\includegraphics[page=2,clip]{fig1.pdf}}\par \fbox{\includegraphics[page=3,clip]{fig1.pdf}} \newpage \section{fig2.ai} \fbox{\includegraphics[page=1,clip]{fig2.ai}}\par \fbox{\includegraphics[page=2,clip]{fig2.ai}}\par \fbox{\includegraphics[page=3,clip]{fig2.ai}} \end{document}
これを
$ ptex2pdf -l test
でコンパイルした場合を考えます。
普通の TeX Live 2014 でコンパイルした結果
同梱の test-extractbb.pdf
が得られます。
普通の TeX Live 2014 でコンパイルした結果
このように,バウンディングボックスのサイズが1ページ目のArtBoxに揃えられてしまっていることが分かります。
拡張版 pdfinfo と dvipdfmx.def を用いてコンパイルした結果
同梱の test-pdfinfo.pdf
が得られます。
fig1.pdf
の3枚目に対しては CropBox,それ以外のページについては ArtBox がバウンディングボックスとして認識されて正しく貼り込まれていることが分かります。
拡張版 pdfinfo と改造版 dvipdfmx.def を用いてコンパイルした結果
根源的解決策は……
本来的には,extractbb を改修して,「2ページ目以降のバウンディングボックス情報を出力する機能」を実装するのが理想的な解決手段です。 それが実装されれば,この拡張版 pdfinfo やその自動起動設定はもはや不要になります*7。
将来的に extractbb 自体にその機能が実装されることを願いつつ,とりあえず現状で機能する暫定的解決策として,この拡張版 pdfinfo をご紹介いたしました。
参考記事
- dvipdfmx で画像する時に色々とアレな話 - マクロツイーター
- ナントカBoxの話(1) - マクロツイーター
- ナントカBoxの話(2) - マクロツイーター
- ナントカBoxの話(3) - マクロツイーター
- ナントカBoxの話(4) - マクロツイーター
- bbox とか ナントカBox に関する補足 - マクロツイーター
*1:そのためには texmf.cnf で extractbb の自動起動を許可しておく必要があります。
*2:TeX Live 2013以前ではパイプ入力ができませんでしたので,初回コンパイル時にextractbbによってxbbファイルが生成されていました。そのため,「xbbファイル生成後に図版を更新すると図の貼り付け位置がおかしくなった」というトラブルが続発する原因となっていました。TeX Live 2014 の dvipdfmx ドライバでは,xbbファイルを生成せず毎回bbを測定し直すため,図版の更新に常に追従できます。
*3:最近のIllustratorでは,Illustrator PDF形式で保存しても,AI形式で保存しても,出来上がるものはほとんど同じで,どちらもPDFとして扱うことができます。TeX Live 2014 の dvipdfmx ドライバは,拡張子が .ai のファイルもPDFと同等に扱って \includegraphics できるようになっています。
*4:このあたり,今一つ実験不足です。より確かな情報をお持ちの方がおられましたらぜひご教示ください。
*5:これはUnix系OSでのコンパイル法。Windows環境では付属の ms_make.bat を利用すればコンパイルできるのかもしれません。しかし手元にWindows環境がないため試せておりません。
*6:\ifnum0 のところはTeXで OR を表現するためのイディオムです。
*7:その場合も,この拡張版 pdfinfo は,PDFの各ページのナントカBoxの詳細を閲覧するためのツールとしては役立つでしょう。