[[TeX入門]]/
[[最初の例>TeX入門/最初の例]]/
[[簡単な数式(1)>TeX入門/簡単な数式(1)]]/
[[簡単な数式(2)>TeX入門/簡単な数式(2)]]/
[[レポート>TeX入門/レポート]]/
[[HTMLとLaTeXの比較>TeX入門/HTMLとLaTeXの比較]]/
[[複雑な数式>TeX入門/複雑な数式]]/
図/
[[文献引用]]

* 図の取り扱いの概要 [#qa85d325]
LaTeX では文書中に図(グラフ・写真・イラスト等々の画像ファイル)を配置することができます。図の中身やファイル形式などは設定しだいでさまざまなものに対応できます。LaTeXとしては、その図を版面(紙面)に配置するためにどれくらいの幅と高さを確保するかだけを問題とします。(このページのほか、[[TeX と「TeX 以外」]]にも解説があります。)

さて LaTeX で文書中に図を配置するには、いろいろな状況があります。
+ 文書中の、まさにその位置に配置したい
+ 図番号とキャプションをつけた上で、文書中のまさにその位置に配置したい
+ 図番号とキャプションが付いていればよく、配置場所はどこでもよい

1番目の状況では、図を配置したい場所で \includegraphics 命令を使用します。
 ---- ソースファイル例 ----
 ここで次の図を見てください。
 \includegraphics{図のファイル.png}
 図で赤く示されているのが...
実際にこれで図を取り込むには図のファイル形式に応じた適切な設定が必要となります。このページの後のほうの説明を参照してください。

3番目の状況では figure 環境を利用します。
 ---- ソースファイル例 ----
 \begin{figure}
 \caption{度数分布図}
 \label{figA}
 \includegraphics{図のファイル.png}
 \end{figure}
 ここで図\ref{figA}を見てください。
 図で赤く示されているのが...
figure環境で図に番号が自動的に付けられて、キャプションと一緒に「図3:度数分布図」のように図に添えられます。この図番号は \label と \ref を用いて参照されて、本文中で「ここで図3を見てください」のようになるわけです。番号が付いているので図そのものは紙面のどこに配置されても(次のページに飛んでいってしまっても)本文の意味は通るので、LaTeX が改段落や改ページの具合を見ながら適切な位置を選んで配置します。図の配置についても詳しくは後述します。figure環境の中で図を取り込んでいる部分については1番目の状況と同じです。

2番目の状況については、LaTeX はデフォルトでは対応していません。これをしたい場合はちょっとしたテクニックが必要です。→TeXQ&Aなどで検索してみてください。

//ポスタークラスでは、figureが再定義されて、2番目の状況になっていると
//思います。

*図のファイル形式に応じた記述法・設定法 [#o967961d]

**EPS形式の図の挿入 [#v4efe6a4]

たとえば [[apple.eps:http://oku.edu.mie-u.ac.jp/~okumura/texfaq/dtp/apple.eps]]
というEPS形式の図があったとします.(図をEPS以外の形式で保存している場合もあるかと思います.その場合は[[変換ツール>変換ツール#w1278ce9]]に挙げられているソフトでEPS形式に変換することになります.
←今はPDFにするのが前提ならEPSに限らずPDF、PNG、JPEGがそのまま使えますので特にEPSにこだわる必要はないでしょう)このとき,次のようにすれば図(と
[[詩:http://www.aozora.gr.jp/cards/000158/files/18352_15628.html]] :) )が挿入できます。 

 \documentclass{jsarticle}     % または jarticle 等々
 \usepackage[dviout]{graphicx} % または dvips または dvipdfm
 \begin{document}
 
 まだあげ初めし前髮の/林檎のもとに見えしとき/前にさしたる花櫛の/花ある君と思ひけり
 
 \includegraphics[width=5cm,clip]{apple.eps}
 
 \end{document}

この dviout と書いたところはドライバ(出力ソフト)の名前です。 dvips(k) の場合は dvips,dvipdfm(x) の場合は dvipdfm とします。 

これでエラーになる場合は pTeX または dviout または Ghostscript のインストールがうまくいっていないのでしょう(あるいは非常に古いのでしょう)。 インストールガイド をよく読んでネットからダウンロードしてインストールするか,[[本>TeXの本]] についている CD-ROM でインストールしましょう。 

** PDF形式の図の挿入 [#a58e4bcb]

RIGHT:cf.) [[PDFの作り方#図の描き方>PDFの作り方#yca8607c]]

最終的にPDF形式で出力したい場合は,図もPDF形式で用意しておくのが便利です。 

たとえば [[apple.pdf:http://oku.edu.mie-u.ac.jp/~okumura/texfaq/dtp/apple.pdf]]
というPDF形式の図があった場合,次のようにすれば図が挿入できます。 

ここでは,あらかじめ井上さんの [[mediabb.sty:http://www.ns.musashi-tech.ac.jp/~inoue/Pages/TeX/mediabb.sty.html]]
がインストールされている場合について説明します。 

 \documentclass{jsarticle}     % または jarticle 等々
 \usepackage[dvipdfm]{graphicx}
 \usepackage{mediabb}
 \begin{document}
 
 まだあげ初めし前髮の/林檎のもとに見えしとき/前にさしたる花櫛の/花ある君と思ひけり
 
 \includegraphics[width=5cm,clip]{apple.pdf}
 
 \end{document}

これを platex で処理し,続いて dvipdfmx で処理すると,全体がPDF形式になります。

このようにPDFを使えば,Ghostscriptが呼び出されることがないので,処理も速くなります。

PostScriptとPDFの両方を出力する必要がある場合は,apple.eps と apple.pdf
を両方用意しておいて,
 \includegraphics[width=5cm,clip]{apple}
のように拡張子なしでインクルードします。
こうすれば,\usepackage[オプション]{graphicx}
のオプション次第で,適当なほうがインクルードされます。

*** pdfTeX [#zed83e69]

pdfTeX を利用しているときは、graphicx パッケージのオプションを
次のように設定すればいいようです。

 \usepackage[pdftex]{graphicx}

** PNG形式の図の挿入 [#s7e8e2f8]

例えば [[apple.png:http://oku.edu.mie-u.ac.jp/~okumura/texfaq/dtp/apple.png]] (426x496)
を使うには,PDFの場合と同様にすればいいのですが,mediabb.styは必要ありません。
mediabb.styを使っても,PDFと違って,PNGはサイズの自動取得ができません。

もしサイズがわかっているのであれば,図を読み込むところで,

 \includegraphics[bb=0 0 426 496,width=5cm]{apple.png}

のように大きさ情報を [bb=0 0 x y] の形式で与えてしまうのが簡単です。
これを自動化するには,ebbというツールがdvipdfmに同梱されているはずですので,あらかじめ

 ebb apple.png

と(Windowsならコマンドプロンプトで)打ち込んでおけば,大きさ情報を書き込んだapple.bbというファイルが生成されますので,[bb=0 0 x y] のような情報を書き込まなくても処理できます。

* 図と文字の重ね打ち [#rc7de959]

図中にTeXで組んだ文字を入れる方法はいろいろありますが,ここではoverpic.styによる方法を説明します。

 \documentclass{jsarticle}
 \usepackage[dvipdfm]{graphicx}
 \usepackage[abs]{overpic} % この行を追加
 \usepackage{mediabb}
 \usepackage{pict2e}  % 後で矢印をきれいに出すため。なければ不要
 \begin{document}
 
 % \includegraphics[width=5cm,clip]{apple.pdf} を次のように書き換える
 \begin{overpic}[width=5cm,clip,grid]{apple.pdf}
 \end{overpic}
 
 \end{document}

こうすると,図の上にグラフ用紙がオーバーレイされます。これを見ながら,挿入したい文字と矢印を座標で指定します。文法はpicture環境と同じです(pict2e.styを使えばpicture環境がさらに強力になるのでお薦めします)。

 \begin{overpic}[width=5cm,clip,grid]{apple.pdf}
   \linethickness{3pt}  % pict2e.styがなければ\thicklinesにする
   \put(150,80){\vector(-1,0){25}}
   \put(155,75){\Huge\sffamily Byte!}
 \end{overpic}

多少試行錯誤が必要ですが,これでよければgridを外します。

overpic.styは [[CTAN:macros/latex/contrib/overpic/]] にあります。
overpic.styだけをダウンロードして,適当なところ(わからなければ文書ファイルと同じところ)に入れておきます。

pict2e.styは [[CTAN:macros/latex/contrib/pict2e/]] にありますが,展開したものを [[ここ:http://oku.edu.mie-u.ac.jp/~okumura/texfaq/archive/pict2e/]] に置いておきます。
dvipdfm(x)を使うなら,pict2e.styとp2e-dvipdfm.defだけダウンロードして,やはり適当なところに入れておきます。

** 2色刷り [#s5ccf134]

最近の本は黒とあと1色の2色刷りにすることが多くなりました。

プロセスカラーはCMYKで行いますが,このような2色刷りには,黒をK,もう一つの色(特色,スポットカラー)を例えばCに当てておいて,印刷時にCの色を指定します。

例えば上の例で図中の文字と矢印だけ特色にするには,次のようにします。

 \documentclass{jsarticle}
 \usepackage[dvipdfm]{graphicx,color}
 \usepackage[abs]{overpic}
 \usepackage{mediabb}
 \usepackage{pict2e}
 \definecolor{spot}{cmyk}{1,0,0,0}
 \begin{document}
 
 \begin{overpic}[width=5cm,clip]{apple.pdf}
   \color{spot}\linethickness{3pt}
   \put(150,80){\vector(-1,0){25}}
   \put(155,75){\Huge\sffamily Byte!}
 \end{overpic}
 
 \end{document}

* 図の配置 [#i209eceb]

図を適当な場所に配置してキャプションを付けるには,次のようにします。

 \begin{figure}
   \centering  % 中央揃えするなら
   \includegraphics[...]{...}
   \caption{林檎とバイトの関係}
 \end{figure}

ただし,図の位置はコンピュータが決めますので,必ずしもこのように書いた位置に入るとは限りません。
// もっとも,キャプションをつけ,かつ,図表にはその番号で言及するのであれば,
// “その場”配置にこだわる必要はありません.
これが嫌なときは,頭のところで

 \usepackage{float}

と宣言しておき,図を入れるところでは

 \begin{figure}[H]

のように大文字の [H] を付けておきます。

float マクロを読み込まなくても,[h] のかわりに [!h] を使うと,より here に
近い位置に埋め込もうとします?
// float の配置に ! 指定を行った場合には,\textfraction 等の
// float 配置パラメータを無視して単に float を収める余地があるか否かしか
// チェックしません(したがって,! と h を併用した場合には,概ね“その場”
// 配置となります).ただし,\intextsep(h 配置の float とその前後の本文との
// 間の空白の大きさ)は考慮されますので,float の大きさが微妙な場合には
// やはり次ページ送りになることもあります.
// もっとも,!h 指定の場合は,現在のページにその float を収める余地がない
// 場合には自動的に !ht 指定として扱う(つまり,現在のページの残りは
// テキストで埋めて,float は次ページの上部に置く)ので(その旨の警告も
// 現れます),float パッケージでの H 指定よりも都合がよいことも多いでしょう.