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」の部分は自動的に作られているので、このままです。
あとは、環境を設定するだけ。*が付いているのは段抜きのフロートです。
コメント