TeXのfloatパッケージ利用
floatパッケージを使って[H]指定すると、好きな位置に図を出せる(これを使わないとTeXが適当に図を配置するので、図や表が多い場合には最後にまとめられてしまったりする)。
普通にfloatパッケージを使う場合の定番の定義。
¥usepackage{float}
¥restylefloat{figure}
¥restylefloat{table}
これをやっておくと、floatの位置指定で強制的にここ[H]が使えるようになる。
floatはそのままだと通し番号だが、これを、「章の番号.図の番号」に変えるには、
¥renewcommand{¥thefigure}{%
¥thechapter.¥arabic{figure}}
¥renewcommand{¥thetable}{%
¥thechapter.¥arabic{table}}
とやっておいて、章が変わるごとにリセット
¥makeatletter
¥@addtoreset{figure}{chapter}
¥@addtoreset{table}{chapter}
¥makeatother
をしておく。
jarticleなどの日本語環境だと、キャプションは「Fig.」ではなく「図」になる。これを「Fig.」で出るようにするには、
¥def¥figurename{Fig.}
¥def¥tablename{Table.}
と書く。
ただ、floatパッケージを使うと、ものの本にあるように、キャプションをフロートの内容より先に書けば上、後に書けば下、といった感じに切り替わらず、常に下に出るようになってしまう。
これを避けるには、新たなfloat環境を次のように定義する。
以下ソース。
¥documentclass[a4j]{jarticle}
¥usepackage{float}
¥usepackage{epsfig}%コンパイルの時は、何でもいいからtest.epsという図を1つ作ってソースと同じディレクトリに置いておくこと。
%出力指定は強制的にここ[H]、リスト作成のための補助ファイル出力は拡張子lot、フロートの番号付けの範囲はSectionごと。キャプションは上。¥newfloatの最初の引数が新規定義されたフロート名前で、キャプションを付けると、定義されたフロートの名前と番号が表示される。
¥floatstyle{plaintop}
¥newfloat{Table}{H}{lot}[section]%出力指定は強制的にここ[H]、リスト作成のための補助ファイル出力は拡張子lof、フロートの番号付けの範囲はSectionごと。キャプションは下。
¥floatstyle{plain}
¥newfloat{Figure}{H}{lof}[section]¥begin{document}
%¥listof{フロートの名前}{リスト一覧のタイトル}で、図目次や表目次が出る。
¥listof{Table}{表一覧}
¥listof{Figure}{図一覧}¥section{テスト}
¥begin{Table}
¥caption{表のテストその1}
¥label{表のテストその1}
¥begin{center}
¥begin{tabular}{clc}
¥hline ¥hline
項目1 & 項目2 ¥¥
¥hline
値1 & 値2 ¥¥
¥hline ¥hline
¥end{tabular}
¥end{center}
¥end{Table}¥begin{Figure}
¥begin{center}
¥epsfig{file=test.eps}
¥caption{図のテストその1}
¥label{図のテストその1}
¥end{center}
¥end{Figure}¥section{セクション変えのテスト}
¥begin{Table}
¥caption{表のテストその2}
¥label{表のテストその2}
¥begin{center}
¥begin{tabular}{clc}
¥hline ¥hline
項目1 & 項目2 ¥¥
¥hline
値1 & 値2 ¥¥
¥hline ¥hline
¥end{tabular}
¥end{center}
¥end{Table}¥begin{Figure}
¥begin{center}
¥epsfig{file=test.eps}
¥caption{図のテストその2}
¥label{図のテストその2}
¥end{center}
¥end{Figure}参照テスト。
表¥ref{表のテストその1}、表¥ref{表のテストその2}、図¥ref{図のテストその1}、図¥ref{図のテストその2}、とも、セクション毎に番号が振られ、表のキャプションは上、図のキャプションは下に出る。
¥end{document}
floatパッケージを使った状態でのキャプションのインデントは、たとえばこんなふうに書く。
%float.styを使った場合のキャプションのインデント
¥makeatletter
¥renewcommand¥floatc@plain[2]{
¥vskip 5¥p@
¥setbox¥@tempboxa¥hbox{{¥bf #1}¥ ¥ }%
¥@tempdima¥hsize¥advance¥@tempdima-¥wd¥@tempboxa
¥setbox¥@tempboxa¥hbox{{¥bf #1 }¥ ¥ #2}
¥ifdim ¥wd¥@tempboxa <¥hsize
¥hfil {¥bf#1}¥ ¥ #2¥hfil¥par
¥else
¥hbox to¥hsize{¥hfil {¥bf #1}¥ ¥ ¥parbox[t]¥@tempdima{#2}¥hfil}%
¥fi}
¥makeatother