4月 4, 2009 - コンピューター    TeXのfloatパッケージ利用 はコメントを受け付けていません

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

Comments are closed.