天地有情

[LaTeX] afterpage --- ページの終わりで特定のコマンドやマクロを実行させたい

更新版: 2017/03/19

§1 はじめに

フロート(図や表)を配置するのに苦労したことはありませんか.afterpageパッケージが一助となる
かも知れません.ここでは使い方について説明します.

afterpageパッケージは,\afterpage コマンドを実装します.現在のページが出力された後,その引数で
指定が展開されます.

\afterpage{\clearpage}

のように指定すると,現在のページが次のテキストページが始まる前に,\clearpage コマンドはすべての
フロートをフラッシュします.
従って,フロートが後ろにずれていって,違うセクションに入ってしまわないために,セクション前の
改ページに指定できます

1.1 インストール

TeXLive/W32TeX などには標準でインストールされています.

afterpage.sty の配置はコマンドラインから
> kpsewhich afterpage.sty とすると,
結果は c:/w32tex/share/texmf-dist/tex/latex/tools/afterpage.sty です

1.2 マニュアル

コマンドラインから texdoc afterpage を実行するか,
上記に同梱の afterpage.pdf をお読み下さい.

§2 使い方

2.1プリアンブルに
  \usepackage {afterpage}
  を記述します.

2.2 コマンド

\afterpage:   現在のページが出力された後,その引数で指定が展開されます.


§3 サンプル

3.1 \afterpage{\clearpage}の例

フロートの配置は文章と比べてそれほど空間を占有しなければ比較的うまく動作しますが,あまりにも数が多いと,
ある位置から全部のフロートが文書の最後に回されてしまうこともあります.

未出力のフロートの個数が多すぎて,これ以上 figure 環境・table 環境などを使えない状態になったときなどに
現れるのが,次のエラーメッセージです

  ! LaTeX Error: Too many unprocessed floats.

この防止のため,未処理のフロートを出力する次のコマンドを指定できます.

■ \afterpage{\clearpage}

3.2 longtable環境への対応の例

longtable環境 をフロートさせたい場合にも指定できます.
長さが複数ページにおよぶ可能性があり,そのような表をメモリに保存しておくことは不可能なので,
長い表を囲ったテキストを組む際に問題がある場合や,table環境と同じようにフロートさせることになります.

もし,ltfile.tex というファイルに表が記述されているのであれば次のいずれかの方法が利用できます.

■ \afterpage{\clearpage\input{ltfile}}
■ \afterpage{\clearpage\input{ltfile}\clearpage}

最初の形式は longtable環境 の終わりで同一ページ上にテキストを出力します.
2番目の形式では囲っているテキストが次のページからもう一度始まるよう保証することになります.

3.3 float.sty と併用の例

floatパッケージ と afterpageパッケージ を併用することで,フロートの配置をもっと細かく制御できます.
フロートの配置を支援するため,float.styによって提供されるオプションの引数 [H] があります.

\usepackage{float}
\newfloat{Figure}{htbp}{lof}[section]

などのように事前定義しておいて,

■ \afterpage{\clearpage\begin{Figure}[H] ~ \end{Figure}}

このようにすると,図が次ページの上端に必ず出力されるようになります.

(EOF)

スポンサーサイト
  1. 2015/06/14(日) 11:35:08|
  2. LaTeX Tools