graphicx は,LaTeX ドキュメントに画像を挿入したり,テキストや図の拡大縮小・回転を行うためのパッケージです。 基本的な使いかたについては LaTeX 入門/図表で解説されていますが,graphicx パッケージは初心者にとって扱いの難しいものです。 TeX Forum での質問頻度もかなり高い部類に入りますので,この項目で詳しく説明します。
graphics というパッケージもありますが,graphicx はこれを高機能にしたものと考えて結構です(ただし graphicx は内部で graphics を読み込みます)。 この項目ではより高機能で用途の広い graphicx を対象に説明しますが,ドライバ依存についての説明は graphicx だけでなく graphics にも通用します。
TeX と「TeX 以外」で説明されているとおり,“画像の取り込み” は TeX 自身の機能ではありません。 “画像の取り込み” という処理は
という流れで行われます。 ここでいうドライバとは,例えば dvipdfmx や dvips のような “DVI ドライバ”(DVIware とも),pdfTeX などを指します。
画像の取り込みはドライバが担うため,その前段階であるバウンディングボックスの取得や取り込み方の指示はドライバに合致したものでなければなりません。 これが “ドライバ依存” です。 したがって,TeX で処理する段階から「引き続いてどのドライバで処理するか」を意識している必要があります。
ユーザが「引き続いてどのドライバで処理するか」を LaTeX ソース中で指示するのが “ドライバオプション” です。 たとえば LaTeX 処理の次に dvipdfmx を使うことが決まっている場合は
\usepackage[dvipdfmx]{graphicx}
としなければなりませんし,dvips を使うことが決まっている場合は
\usepackage[dvips]{graphicx}
としなければなりません*2。 このドライバオプションが実際に何を意味するかは,あとで説明します。
graphicx と同様によく使われるパッケージとして,文字や図に色をつける color パッケージがあります。 この color パッケージも “ドライバ依存” ですので,graphicx と同様に
\usepackage[dvipdfmx]{color}
のようなドライバオプションを付ける必要があります。 ただし,実は graphicx (graphics) と color は “ドライバ依存” の扱いを完全に共有しており,このことがしばしば graphicx の予期せぬ動作の原因となります。 この理由についてもあとで説明します。
ユーザが LaTeX ソースで
\usepackage[dvipdfmx]{graphicx}
のようにドライバオプションを指定した場合(もしくは無指定によりデフォルトのドライバオプションが仮定された場合),対応するドライバ依存の処理内容を定義した .def ファイルを読み込みます。 dvipdfmx の場合は dvipdfmx.def,dvips の場合は dvips.def,pdfLaTeX の場合は pdftex.def などとなっています。
この .def ファイルには,ドライバが対応する画像ファイル形式(拡張子)とそれに対するバウンディングボックスの取得方法などが定義されています。 たとえば dvipdfmx.def では
のように定義されています。 LaTeX はこの定義に単に従うことで,画像の内容については関知せずに済むわけです。
先ほど graphicx (graphics) と color が “ドライバ依存” の扱いを完全に共有していると述べましたが,これは graphicx も color も全く同じ .def ファイルを読み込むという意味です。
% 少しずつまとめていく予定。