LaTeX Beamerで図表などの位置を絶対座標で指定する方法

  • 13
    いいね
  • 1
    コメント

概要

LaTeX Beamerを使いはじめるにあたって,はじめにぶち当たる障壁はなんといっても図の配置だと思います.
PowerPointやKeynoteといったWYSIWYG系のプレゼンテーション作成ツールに慣れている人がBeamerスライドを見ると,「ここの図をもうちょっと左に動かして」とか,「ここの部分赤丸で囲んだほうが良いんじゃない」みたいな指摘が飛ぶことがあるのですが,楽な方法がなかなか検索しても出てきません.

これまで私は\vspace\hspaceをふんだんに駆使して図を巧みに配置していたのですが,さすがにこれではコードが汚くなりすぎます.
というわけでシンプルでかつ効果的な方法を見つけたので書きます.

方法

textposパッケージを利用します.プリアンブルに以下を記述します.

\usepackage[absolute,overlay]{textpos}
  • absolute : textposパッケージを絶対座標指定モードで使用する
  • overlay : 文字の上から配置する

textblock*環境の幅と座標を指定して,中に表示させたい図表やテキストを差し込むだけでOKです.ここで,figure環境を使わないことがポイントです.figure環境を使用した場合,y座標がずれる可能性があります.

% この場合は (230pt, 100pt) の位置に 0.4\linewidth の幅のブロックができる.
\begin{textblock*}{0.4\linewidth}(230pt, 100pt)
    \centering
    \includegraphics[width=\linewidth]{./figure.pdf}
\end{textblock*}

TiKZで描画した図形も同様にして配置できます.

% この場合は (300pt, 180pt) の位置に 0.4\linewidth の幅のブロックができる.
\begin{textblock*}{0.4\linewidth}(300pt,180pt)
    % TiKZを使った図形の描画
    \begin{tikzpicture}
        % 幅 0.7cm, 高さ 0.5cm の楕円を,線幅2pt,色は赤色で作成
        \draw[tangored, line width=2pt] ellipse (0.7cm and 0.5cm);
    \end{tikzpicture}
\end{textblock*}

アスタリスクなしのtextblock環境との違いは値を自由に指定できる点です.textblock環境の方は,変数で設定した値の定数倍の位置に配置するものになっているので,このような用途ではtextblock*環境の方が使いやすいと思います.

さらに踏み込んだTips

  • eso-picパッケージを使ってスライドの上からグリッドを表示することで,座標の決定が楽になります.

    \usepackage[colorgrid,gridunit=pt,texcoord]{eso-pic}
    
  • layoutパッケージを使うとプレゼンのヘッダやフッタ等のサイズを簡単に調べることができます.配置がうまくいかないときのデバッグに便利です.

    \usepackage{layout}
    
    %...
    
    \frame{
        \layout
    }
    

まとめ

この記事では,textposパッケージを用いた図表の絶対座標配置の方法とTipsを解説しました.
textposパッケージはもともと発表ポスターを作る際の図の配置を便利にしようというモチベーションで開発されたもののようですので,Beamerとの相性も抜群ではないでしょうか.
お困りでしたらぜひお試しください.

参考