27.11 グラフィックス

この節では,画像の入れ方について説明します.hwb27.1 LaTeX についての概説 にも書きましたが,これらは dvi ファイルを扱う dvipdfmx などのソフトウェアの問題であり,LaTeX 本体の管轄ではありません.

graphicx パッケージ

PNG, PDF, EPS (Encapsulated PostScript) などの画像を取り込むには,graphicx パッケージをまず読み込みます.その際に,オプションとして,dvi ファイルをどのソフトウェアで読み込むか(ドライバ)を指定する必要があります.

\usepackage[dvipdfmx]{graphicx}
\usepackage[dvips]{graphicx}  % dvips  を使って PostScript ファイルを作る場合(EPS 形式推奨)
\usepackage[dviout]{graphicx} % dviout を使って dvi ファイルを表示する場合 (Windows)

draft オプションをつけると,実際に図が挿入される代わりに枠とファイル名だけが出力されます.
LaTeX の文書中に画像を張り込むとき,EPS 形式で画像を作っておくのが伝統的でした.現在では dvipdfmx の普及により,PNG 形式や PDF 形式の画像も張り込めるようになっていますが,EPS 形式のことも覚えておくと便利な場合があります.

BoundingBox

一般に, EPS 形式以外の画像では,「この画像はどれくらいの大きさ」という情報 (BoundingBox) を取得する必要があります.そうでなければ,どれだけ拡大縮小すればわからないのですから,正しく画像を挿入することはできません.
BoundingBox は,extractbb, xbb, ebb といったコマンドで取り出すことができます.この教育用計算機システムの Mac 環境では ebb コマンドしかうまく動作しないようなので,ebb についてのみ説明します.
画像ファイル hoge.pdf, fuga.png に対して,それぞれの BoundingBox 情報が書かれた hoge.bb, fuga.bb を作成するには,次のようにします.

ebb hoge.pdfreturn2
ebb fuga.pngreturn2

LaTeX の処理時には,これらの bb ファイルがないと,次のようなエラーが出力されます.

! LaTeX Error: File `hoge.bb' not found.

EPS 形式の画像では,ファイル中に(テキストとして)BoundingBox の情報が書かれていますので,bb ファイルの作成は不要です.
また,TeX ディストリビューションによっては,platex の実行時に -shell-escape  オプションをつければ,bb ファイルがなければ自動的に ebb コマンドを呼び出してくれます.しかし,この -shell-escape オプションは,セキュリティ上の問題を引き起こすこともあるので,使用には注意して下さい.

画像の挿入

画像を挿入するには,\includegraphics コマンドを使用します.

\includegraphics[オプション]{ファイル名}

よく使うオプションには,次のようなものがあります.

width=30mm, height=20mm
画像の幅と高さを指定します.片方だけ指定することも可能です.画像を回転した場合には,height の代わりに totalheight を使うと便利です.
keepaspectratio
幅と高さが両方指定された時,普通なら縦横比がそれに応じて変わりますが,このオプションを指定すると,縦横比はそのままで,指定された枠内にぎりぎり収まるサイズに拡大縮小されます.
clip
BoundingBox の外に書かれた内容を描きません.

挿入のサンプル

実際に画像の挿入をやってみましょう.
画像の例として,hoge.pdf, fuga.png を用意しました.これらを(例えば,リンクを右クリックして出る「リンク先のファイルを別名でダウンロード」を選んで)保存します.なお,これらのファイルは,gnuplot と呼ばれるグラフ作成ソフトを利用して作成したものです(hwb28.6 グラフを画像として保存する 参照).
次に,TeX ソースを準備します.以下の内容を,例えば grphtest.tex などの名前で,画像ファイルとは同じディレクトリに保存して下さい.

\documentclass{jarticle}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
PDF
\begin{center}
\includegraphics[width=10cm]{hoge.pdf}
\end{center}
PNG
\begin{center}
\includegraphics[width=10cm]{fuga.png}
\end{center}
\end{document}

そして,hoge.bb, fuga.bb を作成し,タイプセットを行います.

ebb hoge.pdfreturn2
ebb fuga.pngreturn2
platex grphtest.texreturn2
This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4) (中略) [1] (./grphtest.aux) ) Output written on grphtest.dvi (1 page, 372 bytes). Transcript written on grphtest.log.

ここで,graphicx パッケージのオプションに dvipdfmx と指定したので.この grphtest.dvi は dvipdfmx 専用です.xdvi で画面上に表示しようとしても,うまくいきません.最後に,dvipdfmx で 画像を取り込んだ pdf を作成します.
dvipdfmx grphtest.dvireturn2
grphtest.dvi -> grphtest.pdf [1] 14012 bytes written

不安になる人は,-v オプションを指定してよりたくさんの表示をさせてみると,2 つの画像ファイルが取り込まれたことがわかります.
dvipdfmx -v grphtest.dvireturn2
grphtest.dvi -> grphtest.pdf DVI Comment: TeX output 2012.03.23:1427 [1> Simple font "cmr10.pfb" enc_id= opened at font_id=. >(Image:hoge.pdf[PDF],Page:1)(Image:fuga.png[PNG])](cmr10.pfb[Type1]) Compression saved 170782 bytes 14010 bytes written

graphicx パッケージには他にもさまざまな機能がありますが,ここでは省略します.

図や表の自動配置

よく書籍や論文などでは,図や表はページの上や下にまとめられていて,本文では「図 2.3」のように番号で参照するということがあります.そうやって図や表を自動配置するには, figure, table 環境を用います.両者とも殆ど同じなので,説明は主に figure 環境で行います.

figure 環境

figure 環境は,中身に図の内容を書き,またオプションとして出力位置を指定することができます.次のサンプルを見て下さい.

\begin{figure}[t]
  \centering % ここから先を中央揃えにする.center 環境時より上下空きが少ない.
             %(環境内にあるので有効範囲はこの figure 環境内のみ)
  \includegraphics[width=5cm]{fuga.png}
  \caption{図の例}\label{fig:test}
\end{figure}

この \begin{figure} の直後の [t] が出力位置の指定で,次のような意味を持ちます.[!hb] などと複数指定することも可能ですが,残念ながら指定した位置にいつも(100%)配置されるとは限りません.

  • h:figure 環境を書いたその場所
  • t:ページ上部.
  • b:ページ下部.
  • p:図表だけで独立したページに配置する.
  • !:指定された位置に確実に出力されるように頑張る.

また,\caption で,図に見出しをつけることができます.\caption コマンドは,また図に「図1」などと番号を振ります.これによって,上の例のように相互参照用のラベルをつけることができます.こうやってつけたラベルの使い方は,hwb27.9 相互参照と文献 のときと同じように \ref を使うだけです.

図\ref{fig:test}のように相互参照できるよ!

慣習として,\caption は図本体の下に書くことが多いようです.

table 環境

table 環境も使い方は殆ど同じです.違う点は,\caption で表示される説明が「表1」などとなることと,あと慣習として表の見出しは表本体の上に持ってくることが多いということだけです.

\begin{table}[b]
  \caption{表の例}\label{tab:test}
  \centering\small
  \begin{tabular}{llr}
    \toprule&\multicolumn{2}{c}{\textgt{情報}}\\
(中略)
    \bottomrule
  \end{tabular}
\end{table}