TeXの記憶(6)—独自のフロート環境を作る

LaTeXにデフォルトで用意されているフロート環境はfigureとtableの2種類があります。これで事足りる場合がほとんどで、例外的な場合は「キャプションを自由に付けたい」で作ったコマンドを使えば済んでしまいます。ですが、以前の仕事で「写真1」のようなキャプションが多く必要になったことがあってphoto環境を作ってみました。(結局使ったのはその一度だけでしたが)

img20130417
入力はこれだけです。

\begin{photo}
\caption{キャプションです}
\end{photo}

float環境に必要な定義は以下のようになります。

\newcounter{photo}[chapter]
\newcommand{\photoname}{写真}
\def\fps@photo{tbp}
\def\ftype@photo{4}
\def\ext@photo{lof}
\def\fnum@photo{\photoname\nobreak\thephoto}
\newenvironment{photo}%
               {\@float{photo}}%
               {\end@float}
\newenvironment{photo*}%
               {\@dblfloat{photo}}%
               {\end@dblfloat}

1,2行めで専用のカウンタ、キャプションの先頭の文字列を定義しています。

\ftype@photoの数字「4」は、1, 2, 4, 2^n … となるようです。jsbook.clsなどの標準的なクラスを見てみるとfigureが1 (=2^0)、tableが2 (=2^1)に設定されています。photo環境は3番めということで2^2=4と定義しました。

\fps@はフロートのデフォルトの位置、\extはフロートのリストを出力するときの拡張子のようです(List Of Photo)。

\fnum@photoは「写真1.1」の部分の定義です。「1.1」を出力する「\thephoto」の部分は自動的に作られているので、このままです。

あとは、環境を設定するだけ。*が付いているのは段抜きのフロートです。

 

コメント