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



コメント