Skip to content

Instantly share code, notes, and snippets.

@yarakos95
Created January 4, 2021 10:50
Show Gist options
  • Save yarakos95/14832516abb98521b0320ebeb8dfa69f to your computer and use it in GitHub Desktop.
Save yarakos95/14832516abb98521b0320ebeb8dfa69f to your computer and use it in GitHub Desktop.
図表を挿入する

図表を挿入する

図表を挿入するにあたって,基本的には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 形式に変換したい.

以下のようなツールを使用すれば,比較的簡単に作成することが出来る.

Create LaTeX tables | Tabel Generator

セルの結合等も自動的に作成してくれるので,コマンドを覚えることもしなくて良い.理想的な表を自力で作成しようと思うと無駄に時間を費やしてしまうので,自力作成はあまりお薦め出来ない.

figure 環境とtable 環境

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 環境か

\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を用いればプレビューの紙面も回転するようになる.

参考

Footnotes

  1. graphicx.sty | CTAN から.graphicx は標準となるgraphics の拡張パッケージである.スペルには注意したい.

  2. float.sty | CTAN から.[H] 以外にもいくつかのコマンドを提供している.

  3. $ texdoc here とすると[H][!ht] が同等だと出てきた.here パッケージはfloat パッケージに吸収されており,here パッケージはそれまでのドキュメントをサポートするためのみに残存しているようだ.

  4. tocloft.sty | CTAN から.

  5. subcaption.sty | CTAN から.subcaption パッケージはsubfigure パッケージやsubfig パッケージとは非互換なパッケージである.

  6. lscape.sty | CTAN から.

  7. pdflscape.sty | CTAN から.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment