図表を挿入するにあたって,基本的にはLaTeX に標準的に提供されているtable 環境やfigure 環境を利用する. これらに関するドキュメントはCTAN に収録されている以下のドキュメント,あるいはLamport のテキストや美文書作成入門を当たるしかないだろう.
図を挿入するためには,graphicx パッケージ1で提供されている\includegraphics
を利用する.
プリアンブルでgraphicx パッケージを導入する.graphicx パッケージはDVI ドライバに依存するのでupLaTeX+dvipdfmx を利用する場合には明示する必要がある.(もちろん,グローバルに指定していても良い)
\usepackage[dvipdfmx]{graphicx}
\includegraphics
コマンドは次のように使用する.
\includegraphics[<size>]{<figure-file-name>.<extension>}
{}
内で指定する画像ファイルは本来パスを指定することになるが,TeX ファイルと同じディレクトリに入れるようにしておきたい.
あるいは,一つ下のディレクトリに相対パスとして入れたい.相対パスの指定には以下のようにすれば良いだろう.
/<folder-name>/<figure-file-name>.<extension>
また,<size>
には幅(width) を\linewidth
で指定すると良いだろう.
\includegraphics[width=0.8\linewidth]{<figure-file-name>.<extension>}
基本的にはどのような形式の画像ファイルも挿入することが可能になっているが,PDF ファイルを挿入する方が良いとされている.
LaTeX 標準でサポートされているtabular 環境を利用すれば良い.
これを作成するにはmarkdown などの比にならないくらい面倒くさい感じがする.Excel のように編集してLaTeX 形式に変換したい.
以下のようなツールを使用すれば,比較的簡単に作成することが出来る.
セルの結合等も自動的に作成してくれるので,コマンドを覚えることもしなくて良い.理想的な表を自力で作成しようと思うと無駄に時間を費やしてしまうので,自力作成はあまりお薦め出来ない.
figure 環境とtable 環境は,浮動体(floating body) と呼ばれ,図表がページにまたがるような残念なレイアウトにならないようにするための環境である.これらはLaTeX 標準でサポートされている. 基本的にはこれらの環境内で図表を挿入することになる.
これらの環境にはレイアウトの自動調整(位置の調整) の他に以下の機能がある.
- キャプションの付与
- ラベルの付与
- リストの作成
基本的には以下のように書く.
- figure 環境
\begin{figure}[<placement-specifier>]
\centering
%
% \includegraphics command
%
\caption{<caption>}
\label{fig: <label name>}
\end{figure}
- table 環境
\begin{table}[<placement-specifier>]
\centering
\caption{<caption>}
%
% tabular environment
%
\label{tbl: <label name>}
\end{table}
(余談) : 図表の挿入にはfigure/table 環境を利用するが,残念なレイアウトになることを自力で回避する(残念なレイアウトにならない)場合にはこれらの環境を利用する必要はない. また,これらの環境に挿入されるオブジェクトは(システム上は)必ずしも図表である必要はない.
位置の調整には,いくつかのオプションがある.これは<placement-specifier>
で指定する.
複数に選択しておいて,左から優先的にオプションが有効になる.
<placement-specifier> |
場所 |
---|---|
h |
なるべくココ |
t |
ページの上部 |
b |
ページの下部 |
p |
独立1ページ |
! |
! に続くオプションがなるべく実行される |
デフォルト(指定なし)では[tbh]
となっている.
しかしながら,図表の位置はなるべくページの上部または下部にあるべきだ.そのため,[tbp]
が良く推奨される.
float パッケージ2を用いれば[H]
を用いて[h]
よりもより強くその場所に出力するようになる.これは,[!ht]
と同等となるようだ.3
キャプションとは図表を簡単に説明する文章のことである.コマンド\caption
を利用することで挿入することができ,これはfigure/table 環境に付随している.
次の項でリストの作成を紹介しているが,リストでは目次のようにどのページにどのような図表が挿入されているかをリストアップすることが出来る.
このとき,キャプションの内容がこのリスト名として利用される. しかし,長いキャプションを作成する場合,そのまま長いキャプションがリスト名になるのは不格好となる.そこで,以下のようにオプションを利用する.
\caption[<short-caption>]{<LONG-caption>}
<short-caption>
はリストに,<LONG-caption>
は図表の近くのキャプションとして表示される.
「図のキャプションのみから何を示しているのかある程度分かるようにするべきだ」派の人でリストを作成する場合には,このようなオプションを利用するとより洗練されたものになるだろう.
また,キャプションの位置は図と表で異なることにも注意をしておきたい. figure は上,table は下にキャプションを置くことが多い.(表の場合にはキャプションというよりもタイトルに近い使われ方をしている印象がある.)
jsclasses 等を使用している場合,キャプション部には"図" や"表" から続くようになっているが,これを"Figure" や"Table" としたい場合には,プリアンブルで以下のように設定する.
\renewcommand{\figurename}{Figure}
\renewcommand{\tablename}{Table}
以下のコマンドからリストを作成することが出来る.
コマンド | リストタイトル |
---|---|
\listoffigures |
List of Figures |
\listoftables |
List of Tables |
タイトルは"List of Figures"/ "List of Tables" となっているが,これらを変更することも出来る.
\renewcommand{\listfigurename}{図の目次}
\renewcommand{\listtablename}{表の目次}
このリストの調整にはtocloft パッケージ4を利用すると良いだろう.
相互参照には\ref
を使用すれば良いが,"図" や"表" と番号の間で改行されないようにしておこう.
相互参照 | |
---|---|
図 | 図~\ref{fig: <label name>} |
表 | 表~\ref{tbl: <label name>} |
プリアンブルで次のように定義しておいても良いだろう.
\newcommand{\figref}[1]{ %
図~\ref{#1} %
}
\newcommand{\tblref}[1]{ %
表~\ref{#1} %
}
\centering
を使いましょう.center 環境はダメって何年も前から言われている.
どうやらcenter 環境では図表の上下に(図表にとって)奇妙な空白を持ってしまうためのようだ.
通常のテキストの中央揃えであればcenter 環境で良いだろう.
subcaption パッケージ5を使って複数並べよう.
このパッケージでは,subfigure 環境とsubtable 環境を提供している.
これらの環境はそれぞれ図と表に対するsub- 環境となっているが,基本的な使用方法は同じである.
親となるfigure 環境,tabel 環境内に入れて使う.(minipage 環境と似ているが,sub- 環境内で\caption
が使用できる.)
cf. The subcaption package §3 The subfigure & subtable environments
\begin{sub-}[<outer-pos>][<height>][<inter-pos>]{<width>}
\centering
%
% \includegraphics command or tabular environment
%
\caption{<sub-caption>}
\label{<sub-label>}
\end{sub-}
<width>
には行幅の\linewidth
を利用して1÷(図表の数)\linewidth
などとしておくと良いだろう.
例 : 表を3つ横並びにしたいときには以下のように組む.
左から順に配列される.
\begin{table}[tbp]
\centering
%
%% Left table -----
\begin{subtable}[b]{.3\linewidth}
\centering
%
% tabular environment
%
\caption{<sub-caption>}
\label{subtbl: <label name>}
\end{subtable}
%% ----- ----- -----
%
%% Center table -----
\begin{subtable}[b]{.3\linewidth}
\centering
%
% tabular environment
%
\caption{<sub-caption>}
\label{subtbl: <label name>}
\end{subtable}
%% ----- ----- -----
%
%% Right table -----
\begin{subtable}[b]{.3\linewidth}
\centering
%
% tabular environment
%
\caption{<sub-caption>}
\label{subtbl: <label name>}
\end{subtable}
%% ----- ----- -----
%
\caption{<Main caption>}
\label{tbl: <Main label>}
\end{table}
table(figure) 環境内でsub- 環境を改行(\\
)して複数行に展開することも出来る.
cf. The subcaption package §4 The \subcaption command
subcaption パッケージでは\subcaption
コマンドを提供している.
これはminipage 環境でキャプションを付与する際に使用することが想定されている.
\begin{figure}[tbp]
%
%% Left graphic -----
\begin{minipage}[b]{.5\linewidth}
\centering
%
% \includegraphics command
%
\subcaption{<sub-caption>}
\label{subfig: <label name>}
\end{minipage}
%% ----- ----- -----
%
%% Right graphic -----
\begin{minipage}[b]{.5\linewidth}
\centering
%
% \includegraphics command
%
\subcaption{<sub-caption>}
\label{subfig: <label name>}
\end{minipage}
%% ----- ----- -----
%
\caption{<Main caption>}
\label{fig: <Main label>}
\end{figure}
これは\caption
コマンドと同様のオプションを使用することが出来る.
基本的にはA4 縦で作成しているが,図表が横に長いために90度回転させて横長にしたい場合がある. 以下のようなパッケージを用いると良いだろう.
lscape パッケージ6では,landscape 環境内では紙面を90度回転させ横書きになる.また,このパッケージの拡張版ともなるpdflscape パッケージ7を用いればプレビューの紙面も回転するようになる.
- LaTeX入門/図表 - TeX Wiki
- CTAN: Suggestions for lscape
- 使ってはいけない LaTeX のコマンド・パッケージ・作法 - Ichiro Maruta Homepage
- 表を90度回転して表示したい: LaTeX便利帳 - 基本的な使い方から困った時のコマンドまで -
- 天地有情 [LaTeX] lscape --- 図や表などを回転させる
- 横長の表を含む PDF のページを 90 度回転させる - 宇宙線実験の覚え書き
Footnotes
-
graphicx.sty | CTAN から.graphicx は標準となるgraphics の拡張パッケージである.スペルには注意したい. ↩
-
float.sty | CTAN から.
[H]
以外にもいくつかのコマンドを提供している. ↩ -
$ texdoc here
とすると[H]
と[!ht]
が同等だと出てきた.here パッケージはfloat パッケージに吸収されており,here パッケージはそれまでのドキュメントをサポートするためのみに残存しているようだ. ↩ -
tocloft.sty | CTAN から. ↩
-
subcaption.sty | CTAN から.subcaption パッケージはsubfigure パッケージやsubfig パッケージとは非互換なパッケージである. ↩
-
lscape.sty | CTAN から. ↩