Yamamoto's Laboratory
 挿入
数式
数式: amsmath
公開情報
古い情報

今風の LaTeX 文書の図

かつての LaTeX 文書に挿入する図は,EPS (Encapsulated PostScript) と決まっていました.多くの場合,最終的な LaTeX のドキュメントは PS (PostScript) で出力されたからです.時代は変わり,LaTeX の最終ドキュメントは PDF で出力されるようになりました.そのため,図も PDF が望ましいフォーマットになりました.PDF にできない図は,できるだけ PDF と親和性の高いフォーマットで保存します.もちろん,従来の EPS も LaTeX ドキュメントに挿入可能ですが,dvipdfmx で変換 (EPS → PDF)に時間が少しかかります.

LaTeX 文書で挿入する図の推奨フォーマットは,次の通りです[1].

図の種類 推奨フォーマット
ベクター画像 PDF がもっとも良いフォーマットです.
ラスター画像(写真) JPEG がもっとも良いフォーマットです.JPEG は,最終的なドキュメント出力の PDF に直接埋め込まれます.
ラスター画像(その他) PNG がもっとも良いフォーマットです.PNG も,最終的なドキュメント出力の PDF に直接埋め込まれます.Windows でしばしば使われる bitmap(*.bmp)は,convert コマンドで png に変換することを勧めます.

LaTeX 文書中に図を挿入する方法

プリアンブルへの記述

通常,最終的には dvi ファイルを dvipdfmx で pdf に変換することになります.dvipdmx を使うために,LaTeX のプリアンブルに以下を記述します.

\usepackage[dvipdfmx]{graphicx}

また,図を figgure 環境を記述した位置に,強制的に配置するためには,「here.sty」あるいは「float.sty」が必要です.

図を挿入

図を LaTeX 文書に貼り付けるときは,figure 環境を使います.

画像ファイルの取り込み.

\begin{figure}[位置指定(Hやhbtpなど)]
 \centering
 \includegraphics[keepaspectratio, scale=スケール(普通は1.0)]
      {ファイルの指定(先頭に./を付けない)}
 \caption{図の説明}
 \label{ラベル名}
\end{figure}

位置指定に「H」を記述すると,改行された後に figure 環境の場所に図が挿入されます.そのほかの小文字は,「h:here (figure 環境の場所)」,「b:bottom (ページ下部)」,「t:top (ページ上部)」,「p:page」の頭文字です,これらの場合,LaTeX が適当に位置調整を行いますが,位置指定を優先します.ただし,LaTeX が不適と判断した場合,図は他の場所に挿入されます.

「\centering」で中央揃えします.「\includegraphics[図のスタイルの指定]{フィル指定}」で図を配置します.図のスタイルは,次節の図の調整 (includegraphics のオプション)に示します.「\caption」と「\label」でキャプションと参照用のラベルを指定します.

キャプション

通常のキャプションは,「\caption{キャプション文字列}」と記述します.文字列が,図のキャプションとして出力されます.図目次にも,このキャプションの文字列が書かれます.

キャプションの文字列が長い場合には図目次のタイトルが長くなり,品がないものになります.このような場合,「\caption[図目次タイトル]{キャプション文字列}」とします.すると,図目次には「図目次」のみが,キャプションには「キャプション文字列」のみが書かれます.

図を並べて挿入(複数の figure 環境)

図を並べて表示させるときには,図の要素(図のファイルとキャプション)を minipage 環境でグループ化し,tabular 環境で配置します.すると,横一列,縦一列,マトリックス状に並べることができます.縦一列は,使う理由は無いと思いますが…

横に並べる場合

1 行 2 列に並べる場合は,以下のようにします.tabular 環境の配置 {cc} で二つの minipage を水平方向に中心揃えで並べます.もちろん,「l: 左つめ」や「r: 右つめ」も使用できます.また,それぞれの minipae の垂直方向位置はは [t] により上揃えになります.ここでも,「c: 中央揃え」や「b: 下揃え」の設定も可能です.

二枚の画像を横に並べる場合.

\begin{figure}[H]
    \begin{tabular}{cc}
      %---- 最初の図 ---------------------------
      \begin{minipage}[t]{0.45\hsize}
        \centering
        \includegraphics[keepaspectratio, scale=縮尺]{ファイル1}
        \caption{キャプション1}
        \label{ラベル1}
      \end{minipage} &
      %---- 2番目の図 --------------------------
      \begin{minipage}[t]{0.45\hsize}
        \centering
        \includegraphics[keepaspectratio, scale=縮尺]{ファイル2}
        \caption{キャプション2}
        \label{ラベル2}
      \end{minipage}
      %---- 図はここまで ----------------------
    \end{tabular}
  \end{figure}

縦/マトリックス状に並べる場合

これまでの例から,図の要素(図のファイルとキャプション)は「\begin{minipage} 図のファイルとキャプション \end{minipage}」で構成されることが分かります.要するに,minipage 環境でグルーピングを行っています.これらの要素は,tabular 環境を使いマトリックス状に並べることができます.この要素を並べると,マトリックスの行方向(横:→)に並びます.次の行(縦:↓)に移る時には,「\end{minipage}\\」とします.「\\」が改行を表します.

図の調整 (includegraphics のオプション)

オプション

LaTeXに貼り付けるとのコマンド「includegraphics」にオプション指定で,図のサイズの変更や回転が可能です.

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

以下のオプションが有ります.コンマで区切ることにより,複数のオプションを同時に指定することが可能です.

includegraphics のオプション
keepaspectratio 縦横の比を維持
scale 図のサイズの変更(例:scale=0.7)
width 横幅の指定(例:width=130mm)
height 高さの指定(例:height=60mm)
angle 回転角の指定(例:angle=90)
origin 回転角の時の原点,c:中心,tl:左上,tr:右上,bl:左下,br:右下(例:origin=c)
draft 図が入る枠だけ表示
clip BoundingBoxからはみ出た分を切り取る

ページオプション

pdf のように複数のページ (multi pagages) のファイルの特定のページを貼り付けるためには,page オプション使います.

\includegraphics[page=ページ(整数)]{ファイル名}

複数の図を挿入 (subcaption を使う)

関連のある複数の図を並べる場合,subcaption が便利です.TeX Live では,「subcaption.sty」はインストールされているはずです.インストールされていない場合,LaTeX 様々な設定に従いインストールしてください.

使い方

プリアンブル

subcaption を使うためには,プリアンブルに以下の記述が必要です.

\usepackage[subrefformat=parens]{subcaption}

多くの場合,caption パッケージと一緒に使うので以下のようにします.なお,caption のオプションは筆者の設定なので,読者は適当に修正ください.

\usepackage[hang,small,bf]{caption}
\usepackage[subrefformat=parens]{subcaption}
\captionsetup{compatibility=false}

三行目の設定は,caption でエラーが起きるときの対処です.詳細は,「エラーの対処」を参照.

本文

subcaption は,関連のある複数の図を配置します.図の配置には,minipage 環境を使うと便利です.1行2列に図を配置する場合には,以下のようにします.キャプションは,「(a) キャプション」や「(b)キャプション」のように表示されます.

subcaption の使い方

\begin{figure}[図の場所(h, b, t, p, H)]
  \begin{minipage}[b]{幅(例:0.45\linewidth)}
    \centering
    \includegraphics[keepaspectratio, scale=縮尺]{ファイル1}
    \subcaption{キャプション1}\label{ラベル1}
  \end{minipage}
  \begin{minipage}[b]{0.45\linewidth}
    \centering
    \includegraphics[keepaspectratio, scale=縮尺]{ファイル2}
    \subcaption{キャプション2}\label{ラベル2}
  \end{minipage}
  \caption{キャプション}\label{ラベル}
\end{figure}

複数の図は figure 環境でまとめられます.subcaption は,それぞれの図にキャプションを付けるだけです.こうすることにより,深さが1段の階層構造にすることができます.図番号は,\ref{ラベル1}あるいは\subref{ラベル1}で参照できます.前者は「1a」,後者は「a」と表示されます.後者を「(a)」と括弧付きにする場合には,オプション「subrefformat=parens」を指定します.

具体例

subsection を使った例を示します.要素(図とキャプション)は,「\begin{minipage} 図とキャプション \end{minipage}」で作成します.これを並べると,マトリックスの行方向(横:→)に並びます.次の行(縦:↓)に移る時には,「\end{minipage}\\」とします.「\\」が改行を表します.

横一列に並べる マトリックス状に並べる
図1: 横一列に並べる (ソース) 図2: マトリックス状に並べる (ソース)

オプション

subcaption の初期値のオプションは,プリアンブルで指定します.

\usepackage[オプション]{subcaption}

本文中では,以下の指定も可能です.この場合はこのコマンド以降でオプションが適用されますので,途中でオプションを変更する場合に使います.

\usepackage{subcaption}
\captionsetup[sub]{オプション}

複数のオプションは,[abelfont=bf,list=true] のようにカンマ区切りで並べて記述します.オプションの詳細については,マニュアル「subcaption.pdf」に書かれています.

オプション デフォルト 内容
margin 0pt サブキャプションの左右の余白の指定です.1行より短いキャプションの場合は中央揃え,長くなると左揃えになります(例: marign=0pt, marign=40pt).
font small フォントの指定です.デフォルトは,「font+=small」です.フォントサイズは,(scriptsize, footnotesize, small, normalsize, large, Large)が指定可能です.
選択可能なフォントは,(normalfont: Normal shape & series & family と up: Upright shape,  it: Italic shape,  sl; Slanted shape,  sc; SMALL CAPS SHAPE,  md; Medium series,  bf; Bold series,  rm; Roman family,  sf; Sans Serif family,  tt; Typewriter family))
labelformat parens サブキャプションの図番号の表示の仕方を変えます.parens は括弧付きになります.empty では図番号がつきません.simple にすると,裸の図番号になります.brace では片括弧です.default とすると,ドキュメントクラスのデフォルトになります.
labelsep space サブキャプションの図番号とキャプションのセパレーターを指定します.デフォルトの space では空白(スペース)です.quad にすると少し広がった空白になり,newline では改行されます.none にするとセパレータが無くなります.colon ではコロン(:),period ではピリオド(.),endash ではダッシュ(–)です.
skip 6pt 図とキャプションの縦方向の隙間指定です(例: skip=6pt, skip=40pt).
list false 図目次の設定です.false では,図目次にサブキャプションは表示されません.true にすると図目次に表示されます.
hypcap false ハイパーリンクのジャンプ先の設定です.
subrefformat simple サブフィギュアーの図番号を参照する \subref の表示のフォーマット指定です.デフォルトの simple は裸の図番号です.parens とすると,括弧付きで表示されます.brace とすると,片括弧付きで表示されます.empty とすると,番号が表示されません.いずれにしても,このオプションと labelformat のオプションは同一にすべきでしょう.

エラーの対処

caption パッケージ (caption.sty) と一緒に使っていると,次のエラーが出ることがあります.caption パッケージを使っていないときも,このエラーが出ることがあるので注意が必要です.

Package caption Warning: \caption will not be redefined since it's already
(caption)                redefined by a document class or package which is
(caption)                unknown to the caption package.
See the caption package documentation for explanation.


! Package caption Error: The `subcaption' package does not work correctly
(caption)                in compatibility mode.

See the caption package documentation for explanation.
Type  H <return>  for immediate help.
 ...

プリアンブルに以下を記述すると,このエラーは無くなります.

\captionsetup{compatibility=false}

文字の回り込み (wrapfig を使う)

図が小さい場合,図の周りに文字を回り込ませると,無駄なスペースが減り文書が引き締まります.LaTeX では,「wrapfig.sty」を使います.TX Live ではインストールされていると思いますが ,使用前には確認をしてください.

使い方

使い方の詳細については,マニュアルを参照ください.ここでは,普通に使う分には十分な説明を行います.

プリアンブル

wrapfig を使うためには,プリアンブルに以下の記述が必要です.

\usepackage{wrapfig}

本文

文書中の回り込みは,図と文章から構成されます.図の周りに文章を回り込ませます.wripfig を使った回り込みの配置は,wrapfigure 環境で指定します.この環境の中で,回り込みの場所とサイズ,図のファイルパスを指定します.普通に使う wripfigure 環境の記述方法は,以下の通りです.

wrapfig の使い方

\begin{wrapfigure}[行数]{場所}[オーバーハング幅]{図を配置する幅}
  \centering
  \includegraphics[keepaspectratio,width=図の幅]{図のファイルのパス}
  \caption{キャプション}
\end{wrapfigure}
文章
文章

ユーザーは,この構文の緑色の部分を目的に応じて記述します.そのほかの部分は,コピペします.wrapfigure 環境の設定パラメーターは以下の通りです.また,図3テキストと図の位置の関係を示します.

設定 効果/動作
行数 回り込みする文章の行数の指定です.
場所 図の配置場所を指定します.大文字と小文字で設定可能で,大文字: フローティング,小文字: 記述した場所に配置します.
r, R 図をテキストの右端に配置
l, L 図をテキストの左端に配置
i, I \documentclass[twoside]の場合,開いた2ページ分の内側に配置します.
o, O \documentclass[twoside]の場合,開いた2ページ分の外側に配置します.
オーバーハング幅 図の外側へのオーバーハングの幅の指定です.回り込みをしないテキストの右端からの長さで指定します.
図を配置する幅 図を配置する幅の指定です.この幅よりも大きな図を指定するとはみ出ます.
LaTeX wrapfig.sty の設定パラメーターの説明図
図3: wrapfig 環境の図とテキストの配置.場所の指定は「r」.

[注意] 回り込みで図を配置する場所のサイズは,引数の「行数×図を配置する幅」で決まります.これは場所の確保のみで,図のサイズは \includegraphics の引数で決定します.wrapfig が確保したサイズよりも大きな図を指定すると,はみ出た図になります.wrapfig は図のサイズの調整は行いません. /begin{wrapfigure} — /end{wrapfigure}内の文字列は,オーバーハングを超えることができません.これを超える文字列の場合,折り返されます.できるだけ避けるべきですが,図はオーバーハングを超えることは可能です.

具体例

以下のリストは,wrpfig.sty を使った具体例です(wrapfigre 環境の部分のみ).図4に,実行結果を示します.図をクリックすると拡大表示します(IEはだめ).

wrapfig 環境を使った例

\begin{wrapfigure}[9]{r}[5mm]{30mm}
  \centering
  \includegraphics[keepaspectratio,width=30mm]
  {polyhedron/Icosahedron.pdf}
  \caption{正20面体}\label{poly20}
\end{wrapfigure}

正多面体 (regular polyhedron) とは,すべての面が同一の正多角形で構成され
てあり,かつすべての頂点において接する面の数が等しい凸多面体のことです.
この正多面体は,たった五つ (正四面体,正六面体,正八面体,正十二面体,正二十面体)
しかありません.その中で最大の面数のものが,図\ref{poly20}に示す正二
十面体です.これは,正三角形で構成され,面の数は 20,辺の数は 30,頂点の数
は 12 です.一方,頂点数が最大のものは正五角形の面で構成される正十二面体
で,20 個の頂点があります.これら二つの正十二面体と正二十面体は,それぞ
れの面の中心を頂点とする多角形の関係になっています.これを双対と呼びま
す.

正多面体は,プラトンの立体 (Platonic solid) と呼ばれることがあります.し
かし,プラトンの発見ではないようです.
wrapfig.sty を使った例
図4: wrapfig.sty を使った例 (ソース)

細かい調整

  • 図が小さい割に,キャプションが長いと結構バランスが悪くなる.ページの横幅いっぱいに,キャプションが書かれるからである.その場合は,「\setlength{\captionmargin}{50pt}」のように記述する.これで左右のマージンが設定でき,見た感じが良くなる.

TeX Live 2015以前

TeX Live 2015 以前のシステムで EPS 以外の図を取り込む場合,Bounding Box を指定する必要があります.TeX Live 2015 以降にアップグレードすることが望ましいですが,やむを得ない場合は Bouding Box 情報が書かれたファイル(*.xbb)を作成します.例えば,「sample.jpg」の xbb ファイルを作成するコマンドは次の通りです.

$ extractbb  sample.jpg

Windows bitmap(*.bmp)をconvertコマンドで,pngに変換して,extractbbを使いbouding box譲歩が書かれたファイル(*.xbb)を作成することもできます.

ページ作成情報

参考資料

  1. 最終的に PDF のドキュメントにする場合の図の推奨フォーマットについては,「使ってはいけない LaTeX のコマンド・パッケージ・作法」を参考にしました.

更新履歴

2007年頃 ページの新規作成
2015年08月08日 今風の LaTeX 文書の図」の追加
2015年08月18日 複数の図を挿入 (subcaption を使う)」の追加
2015年09月12日 文字の回り込み (wrapfig を使う)」の追加


no counter