どせいたんさき。

ナスダヨー

LaTeX の deluxetable で label が多重に定義されるのを防ぐハック

目的

deluxetable.sty は巨大なテーブルを論文に載せるときに重宝するスタイルファイルである.テーブルが紙面に収まりそうにないときには,テーブルを自動で複数のテーブルに分割してくれる.複数に分割したときに目次が冗長にならないようにするための Tips はすでに紹介した

ところでdeluxetable.sty では以下のようにして label を定義するのが一般的なようである.

\begin{deluxetable}
\tablecaption{very huge and long table \label{tab:hugelongtable}}
% ...

deluxetable.sty ではテーブルが分割されたときに,ここで定義された caption を何度も呼び出してしまうので label が多重に定義されてしまう.エラーではないのでコンパイルは可能であるが警告が表示されるのであまりよろしくない.できれば警告を消したい.

解決方法

deluxetable.sty に少々手を加える.

上記の patch前回の記事で修正した部分も含んでいる.

大きな修正点は以下の通り.

  • 新たに \tablelabel{label} を定義した.
  • \tablelabel を実行すると \pt@label が定義される.
  • \pt@label\empty でなければ \label{\pt@label} が記述される.
  • テーブルが分割されるときに \pt@label を \empty に再定義.

deluxetable のヘッダ部分で以下のように記述すればよい.

\begin{deluxetable}
\tablecaption{very huge and long table}
\tablelabel{tab:hugelongtable}
% ...